Skip to content

Commit

Permalink
Using HikariCP for connection pooling
Browse files Browse the repository at this point in the history
  • Loading branch information
DevLeoko committed May 12, 2020
1 parent d57abc1 commit fd29586
Show file tree
Hide file tree
Showing 11 changed files with 202 additions and 219 deletions.
42 changes: 28 additions & 14 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>me.leoko.advancedban</groupId>
<artifactId>AdvancedBan</artifactId>
<version>2.1.8</version>
<version>2.1.9</version>
<packaging>jar</packaging>
<properties>
<build>RELEASE</build>
Expand All @@ -31,13 +31,17 @@
</repository>
<!-- Updated bstats repo -->
<repository>
<id>CodeMC</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<id>CodeMC</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<repository>
<id>md_5-snapshots</id>
<url>http://repo.md-5.net/content/repositories/snapshots/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
Expand Down Expand Up @@ -100,6 +104,24 @@
<version>5.0.0-RC2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.MilkBowl</groupId>
<artifactId>VaultAPI</artifactId>
<version>1.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}-${build}</finalName>
Expand All @@ -117,16 +139,8 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4</version>
<version>3.2.0</version>
<configuration>
<artifactSet>
<includes>
<include>org.bstats:*</include>
<include>org.hsqldb:*</include>
<include>commons-io:*</include>
<include>org.apache.commons:*</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>org.bstats</pattern>
Expand Down Expand Up @@ -167,7 +181,7 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
<useSystemClassLoader>false</useSystemClassLoader>
<skipTests>${skipTests}</skipTests>
<trimStackTrace>${trimStackTrace}</trimStackTrace>
</configuration>
Expand Down
23 changes: 9 additions & 14 deletions src/main/java/me/leoko/advancedban/MethodInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,15 @@ public interface MethodInterface {
*/
boolean hasPerms(Object player, String perms);

/**
* Check if an offline player has the given permission.
*
* @param name server intern identifier for player
* @param perms the perms
* @return the boolean
*/
boolean hasOfflinePerms(String name, String perms);

/**
* Check whether player is online.
*
Expand Down Expand Up @@ -230,20 +239,6 @@ public interface MethodInterface {
*/
boolean callCMD(Object player, String cmd);

/**
* Load MySQL data from file.
*
* @param f the f
*/
void loadMySQLFile(File f);

/**
* Create default MySQL file.
*
* @param f the f
*/
void createMySQLFile(File f);

/**
* Get MySQL.yml file.
*
Expand Down
18 changes: 15 additions & 3 deletions src/main/java/me/leoko/advancedban/Universal.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
import java.nio.file.Paths;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;


/**
Expand Down Expand Up @@ -59,7 +62,7 @@ public void setup(MethodInterface mi) {
DatabaseManager.get().setup(mi.getBoolean(mi.getConfig(), "UseMySQL", false));
} catch (Exception ex) {
log("Failed enabling database-manager...");
debug(ex.getMessage());
debugException(ex);
}

mi.setupMetrics();
Expand Down Expand Up @@ -266,6 +269,15 @@ public String callConnection(String name, String ip) {
}

InterimData interimData = PunishmentManager.get().load(name, uuid, ip);

if (interimData == null) {
if (getMethods().getBoolean(mi.getConfig(), "LockdownOnError", true)) {
return "[AdvancedBan] Failed to load player data!";
} else {
return null;
}
}

Punishment pt = interimData.getBan();

if (pt == null) {
Expand Down Expand Up @@ -339,7 +351,7 @@ public void debug(Object msg) {
debugToFile(msg);
}

public void debugException(Exception exc){
public void debugException(Exception exc) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
exc.printStackTrace(pw);
Expand Down
57 changes: 35 additions & 22 deletions src/main/java/me/leoko/advancedban/bukkit/BukkitMethods.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
Expand All @@ -27,6 +28,7 @@
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.UUID;
import java.util.function.BiFunction;

/**
* Created by Leoko @ dev.skamps.eu on 23.07.2016.
Expand All @@ -35,11 +37,21 @@ public class BukkitMethods implements MethodInterface {

private final File messageFile = new File(getDataFolder(), "Messages.yml");
private final File layoutFile = new File(getDataFolder(), "Layouts.yml");
private final File mysqlFile = new File(getDataFolder(), "MySQL.yml");
private YamlConfiguration config;
private File configFile = new File(getDataFolder(), "config.yml");
private YamlConfiguration messages;
private YamlConfiguration layouts;
private YamlConfiguration mysql;
private BiFunction<OfflinePlayer, String, Boolean> permissionVault;

public BukkitMethods() {
// Vault support
if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) {
RegisteredServiceProvider<net.milkbowl.vault.permission.Permission> rsp = Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
permissionVault = (player, perms) -> rsp.getProvider().playerHas(null, player, perms);
}
}

@Override
public void loadFiles() {
Expand All @@ -57,6 +69,12 @@ public void loadFiles() {
config = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(configFile), StandardCharsets.UTF_8));
messages = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(messageFile), StandardCharsets.UTF_8));
layouts = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(layoutFile), StandardCharsets.UTF_8));

if (mysqlFile.exists()) {
mysql = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(mysqlFile), StandardCharsets.UTF_8));
}else {
mysql = YamlConfiguration.loadConfiguration(new InputStreamReader(new FileInputStream(configFile), StandardCharsets.UTF_8));
}
} catch (FileNotFoundException exc) {
// We just saved the files, so that should really not happen.
Universal.get().debugException(exc);
Expand Down Expand Up @@ -142,11 +160,25 @@ public void sendMessage(Object player, String msg) {

@Override
public boolean hasPerms(Object player, String perms) {

return ((CommandSender) player).hasPermission(perms);
}

@Override
public boolean hasOfflinePerms(String name, String perms) {
if (permissionVault == null)
return false;

OfflinePlayer player = Bukkit.getOfflinePlayer(name);

if(player == null || !player.hasPlayedBefore())
return false;

return permissionVault.apply(player, perms);
}

@SuppressWarnings("deprecation")
@Override
@Override
public boolean isOnline(String name) {
return Bukkit.getOfflinePlayer(name).isOnline();
}
Expand All @@ -165,7 +197,7 @@ public void kickPlayer(String player, String reason) {

@Override
public Player[] getOnlinePlayers() {
return Bukkit.getOnlinePlayers().toArray(new Player[] {});
return Bukkit.getOnlinePlayers().toArray(new Player[]{});
}

@Override
Expand Down Expand Up @@ -214,7 +246,7 @@ public String getInternUUID(Object player) {
}

@SuppressWarnings("deprecation")
@Override
@Override
public String getInternUUID(String player) {
return Bukkit.getOfflinePlayer(player).getUniqueId().toString().replaceAll("-", "");
}
Expand Down Expand Up @@ -243,25 +275,6 @@ public boolean callCMD(Object player, String cmd) {
return false;
}

@Override
public void loadMySQLFile(File f) {
mysql = YamlConfiguration.loadConfiguration(f);
}

@Override
public void createMySQLFile(File f) {
mysql.set("MySQL.IP", "localhost");
mysql.set("MySQL.DB-Name", "YourDatabase");
mysql.set("MySQL.Username", "root");
mysql.set("MySQL.Password", "pw123");
mysql.set("MySQL.Port", 3306);
try {
mysql.save(f);
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public YamlConfiguration getMySQLFile() {
return mysql;
Expand Down
45 changes: 17 additions & 28 deletions src/main/java/me/leoko/advancedban/bungee/BungeeMethods.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public class BungeeMethods implements MethodInterface {
private final File configFile = new File(getDataFolder(), "config.yml");
private final File messageFile = new File(getDataFolder(), "Messages.yml");
private final File layoutFile = new File(getDataFolder(), "Layouts.yml");
private final File mysqlFile = new File(getDataFolder(), "MySQL.yml");
private Configuration config;
private Configuration messages;
private Configuration layouts;
Expand All @@ -67,6 +68,12 @@ public void loadFiles() {
config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile);
messages = ConfigurationProvider.getProvider(YamlConfiguration.class).load(messageFile);
layouts = ConfigurationProvider.getProvider(YamlConfiguration.class).load(layoutFile);

if (mysqlFile.exists()) {
mysql = ConfigurationProvider.getProvider(YamlConfiguration.class).load(mysqlFile);
} else {
mysql = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile);
}
} catch (IOException e) {
e.printStackTrace();
}
Expand Down Expand Up @@ -142,14 +149,19 @@ public void setCommandExecutor(String cmd) {
}

@SuppressWarnings("deprecation")
@Override
@Override
public void sendMessage(Object player, String msg) {
((CommandSender) player).sendMessage(msg);
}

@Override
public boolean hasPerms(Object player, String perms) {
return player == null ? false : ((CommandSender) player).hasPermission(perms);
return player != null && ((CommandSender) player).hasPermission(perms);
}

@Override
public boolean hasOfflinePerms(String name, String perms) {
return false;
}

@Override
Expand All @@ -174,7 +186,7 @@ public ProxiedPlayer getPlayer(String name) {
}

@SuppressWarnings("deprecation")
@Override
@Override
public void kickPlayer(String player, String reason) {
if (Universal.get().useRedis()) {
RedisBungee.getApi().sendChannelMessage("AdvancedBan", "kick " + player + " " + reason);
Expand All @@ -185,7 +197,7 @@ public void kickPlayer(String player, String reason) {

@Override
public ProxiedPlayer[] getOnlinePlayers() {
return ProxyServer.getInstance().getPlayers().toArray(new ProxiedPlayer[] {});
return ProxyServer.getInstance().getPlayers().toArray(new ProxiedPlayer[]{});
}

@Override
Expand Down Expand Up @@ -268,29 +280,6 @@ public boolean callCMD(Object player, String cmd) {
return false;
}

@Override
public void loadMySQLFile(File file) {
try {
mysql = ConfigurationProvider.getProvider(YamlConfiguration.class).load(file);
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void createMySQLFile(File file) {
mysql.set("MySQL.IP", "localhost");
mysql.set("MySQL.DB-Name", "YourDatabase");
mysql.set("MySQL.Username", "root");
mysql.set("MySQL.Password", "pw123");
mysql.set("MySQL.Port", 3306);
try {
ConfigurationProvider.getProvider(YamlConfiguration.class).save(mysql, file);
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public Object getMySQLFile() {
return mysql;
Expand Down Expand Up @@ -382,7 +371,7 @@ public void callRevokePunishmentEvent(Punishment punishment, boolean massClear)
}

@SuppressWarnings("deprecation")
@Override
@Override
public boolean isOnlineMode() {
return ProxyServer.getInstance().getConfig().isOnlineMode();
}
Expand Down
Loading

0 comments on commit fd29586

Please sign in to comment.