diff --git a/pom.xml b/pom.xml
index 05fa505b..22c92001 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
me.leoko.advancedban
AdvancedBan
- 2.1.8
+ 2.1.9
jar
RELEASE
@@ -31,13 +31,17 @@
- CodeMC
- https://repo.codemc.org/repository/maven-public
-
+ CodeMC
+ https://repo.codemc.org/repository/maven-public
+
md_5-snapshots
http://repo.md-5.net/content/repositories/snapshots/
+
+ jitpack.io
+ https://jitpack.io
+
@@ -100,6 +104,24 @@
5.0.0-RC2
test
+
+ com.zaxxer
+ HikariCP
+ 3.4.5
+ compile
+
+
+ com.github.MilkBowl
+ VaultAPI
+ 1.7
+ provided
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.30
+ compile
+
${project.artifactId}-${project.version}-${build}
@@ -117,16 +139,8 @@
org.apache.maven.plugins
maven-shade-plugin
- 2.4
+ 3.2.0
-
-
- org.bstats:*
- org.hsqldb:*
- commons-io:*
- org.apache.commons:*
-
-
org.bstats
@@ -167,7 +181,7 @@
maven-surefire-plugin
2.19
- false
+ false
${skipTests}
${trimStackTrace}
diff --git a/src/main/java/me/leoko/advancedban/MethodInterface.java b/src/main/java/me/leoko/advancedban/MethodInterface.java
index 4755bfe1..d927194d 100644
--- a/src/main/java/me/leoko/advancedban/MethodInterface.java
+++ b/src/main/java/me/leoko/advancedban/MethodInterface.java
@@ -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.
*
@@ -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.
*
diff --git a/src/main/java/me/leoko/advancedban/Universal.java b/src/main/java/me/leoko/advancedban/Universal.java
index 6a3ddd93..b5575b53 100644
--- a/src/main/java/me/leoko/advancedban/Universal.java
+++ b/src/main/java/me/leoko/advancedban/Universal.java
@@ -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;
/**
@@ -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();
@@ -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) {
@@ -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);
diff --git a/src/main/java/me/leoko/advancedban/bukkit/BukkitMethods.java b/src/main/java/me/leoko/advancedban/bukkit/BukkitMethods.java
index e269d722..1d23b8e7 100644
--- a/src/main/java/me/leoko/advancedban/bukkit/BukkitMethods.java
+++ b/src/main/java/me/leoko/advancedban/bukkit/BukkitMethods.java
@@ -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;
@@ -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.
@@ -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 permissionVault;
+
+ public BukkitMethods() {
+ // Vault support
+ if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) {
+ RegisteredServiceProvider rsp = Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
+ permissionVault = (player, perms) -> rsp.getProvider().playerHas(null, player, perms);
+ }
+ }
@Override
public void loadFiles() {
@@ -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);
@@ -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();
}
@@ -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
@@ -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("-", "");
}
@@ -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;
diff --git a/src/main/java/me/leoko/advancedban/bungee/BungeeMethods.java b/src/main/java/me/leoko/advancedban/bungee/BungeeMethods.java
index fa3adbf5..16f4e65f 100644
--- a/src/main/java/me/leoko/advancedban/bungee/BungeeMethods.java
+++ b/src/main/java/me/leoko/advancedban/bungee/BungeeMethods.java
@@ -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;
@@ -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();
}
@@ -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
@@ -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);
@@ -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
@@ -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;
@@ -382,7 +371,7 @@ public void callRevokePunishmentEvent(Punishment punishment, boolean massClear)
}
@SuppressWarnings("deprecation")
- @Override
+ @Override
public boolean isOnlineMode() {
return ProxyServer.getInstance().getConfig().isOnlineMode();
}
diff --git a/src/main/java/me/leoko/advancedban/manager/DatabaseManager.java b/src/main/java/me/leoko/advancedban/manager/DatabaseManager.java
index 9098b0b3..0da20e6b 100644
--- a/src/main/java/me/leoko/advancedban/manager/DatabaseManager.java
+++ b/src/main/java/me/leoko/advancedban/manager/DatabaseManager.java
@@ -1,16 +1,17 @@
package me.leoko.advancedban.manager;
-import me.leoko.advancedban.MethodInterface;
+import com.zaxxer.hikari.HikariDataSource;
import me.leoko.advancedban.Universal;
+import me.leoko.advancedban.utils.DynamicDataSource;
import me.leoko.advancedban.utils.SQLQuery;
-import java.io.File;
-import java.io.IOException;
-import java.sql.*;
-
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
/**
* The Database Manager is used to interact directly with the database is use.
@@ -21,14 +22,8 @@
* {@link PunishmentManager#getPunishmentFromResultSet(ResultSet)} for already parsed data.
*/
public class DatabaseManager {
-
- private String ip;
- private String dbName;
- private String usrName;
- private String password;
- private int port = 3306;
- private Connection connection;
- private boolean failedMySQL = false;
+
+ private HikariDataSource dataSource;
private boolean useMySQL;
private RowSetFactory factory;
@@ -50,60 +45,14 @@ public static DatabaseManager get() {
* @param useMySQLServer whether to preferably use MySQL (uses HSQLDB as fallback)
*/
public void setup(boolean useMySQLServer) {
- MethodInterface mi = Universal.get().getMethods();
-
- if (useMySQLServer) {
- File file = new File(mi.getDataFolder(), "MySQL.yml");
- boolean createFile = !file.exists();
-
- if (createFile) {
- try {
- file.createNewFile();
- } catch (IOException ex) {
- Universal.get().log("§cAn unexpected error has occurred while creating the MySQL.yml file, try restarting the server.");
- Universal.get().debug(ex.getMessage());
- }
- }
- mi.loadMySQLFile(file);
-
- if (createFile) {
- mi.createMySQLFile(file);
- failedMySQL = true;
- } else {
- ip = mi.getString(mi.getMySQLFile(), "MySQL.IP", "Unknown");
- dbName = mi.getString(mi.getMySQLFile(), "MySQL.DB-Name", "Unknown");
- usrName = mi.getString(mi.getMySQLFile(), "MySQL.Username", "Unknown");
- password = mi.getString(mi.getMySQLFile(), "MySQL.Password", "Unknown");
- port = mi.getInteger(mi.getMySQLFile(), "MySQL.Port", 3306);
-
- connectMySQLServer();
- }
- }
-
- useMySQL = useMySQLServer && !failedMySQL;
+ useMySQL = useMySQLServer;
- if (!useMySQL) {
- try {
- Class.forName("org.hsqldb.jdbc.JDBCDriver");
- } catch (ClassNotFoundException ex) {
- Universal.get().log("§cERROR: failed to load HSQLDB JDBC driver.");
- Universal.get().debug(ex.getMessage());
- return;
- }
- try {
- connection = DriverManager.getConnection("jdbc:hsqldb:file:" + mi.getDataFolder().getPath() + "/data/storage;hsqldb.lock_file=false", "SA", "");
- } catch (SQLException ex) {
- Universal.get().log(
- " \n"
- + " HSQLDB-Error\n"
- + " Could not connect to HSQLDB-Server!\n"
- + " Disabling plugin!\n"
- + " Skype: Leoko33\n"
- + " Issue tracker: https://github.com/DevLeoko/AdvancedBan/issues\n"
- + " \n"
- );
- Universal.get().debugSqlException(ex);
- }
+ try {
+ dataSource = new DynamicDataSource(useMySQL).generateDataSource();
+ } catch (ClassNotFoundException ex) {
+ Universal.get().log("§cERROR: Failed to configure data source!");
+ Universal.get().debug(ex.getMessage());
+ return;
}
executeStatement(SQLQuery.CREATE_TABLE_PUNISHMENT);
@@ -114,15 +63,16 @@ public void setup(boolean useMySQLServer) {
* Shuts down the HSQLDB if used.
*/
public void shutdown() {
- try {
- if (!useMySQL) {
- connection.prepareStatement("SHUTDOWN").execute();
- connection.close();
+ if (!useMySQL) {
+ try(Connection connection = dataSource.getConnection(); final PreparedStatement statement = connection.prepareStatement("SHUTDOWN")){
+ statement.execute();
+ }catch (SQLException | NullPointerException exc){
+ Universal.get().log("An unexpected error has occurred turning off the database");
+ Universal.get().debugException(exc);
}
- } catch (SQLException ex) {
- Universal.get().log("An unexpected error has occurred turning off the database");
- Universal.get().debugSqlException(ex);
}
+
+ dataSource.close();
}
private CachedRowSet createCachedRowSet() throws SQLException {
@@ -132,25 +82,6 @@ private CachedRowSet createCachedRowSet() throws SQLException {
return factory.createCachedRowSet();
}
- private void connectMySQLServer() {
- try {
- connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":" + port + "/" + dbName + "?verifyServerCertificate=false&useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=utf8", usrName, password);
- } catch (SQLException exc) {
- Universal.get().log(
- " \n"
- + " MySQL-Error\n"
- + " Could not connect to MySQL-Server!\n"
- + " Disabling plugin!\n"
- + " Check your MySQL.yml\n"
- + " Skype: Leoko33\n"
- + " Issue tracker: https://github.com/DevLeoko/AdvancedBan/issues \n"
- + " \n"
- );
- Universal.get().debugSqlException(exc);
- failedMySQL = true;
- }
- }
-
/**
* Execute a sql statement without any results.
*
@@ -177,12 +108,12 @@ private ResultSet executeStatement(SQLQuery sql, boolean result, Object... param
}
private synchronized ResultSet executeStatement(String sql, boolean result, Object... parameters) {
- try (PreparedStatement statement = connection.prepareStatement(sql)) {
-
+ try (Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(sql)) {
+
for (int i = 0; i < parameters.length; i++) {
statement.setObject(i + 1, parameters[i]);
}
-
+
if (result) {
CachedRowSet results = createCachedRowSet();
results.populate(statement.executeQuery());
@@ -192,39 +123,30 @@ private synchronized ResultSet executeStatement(String sql, boolean result, Obje
} catch (SQLException ex) {
Universal.get().log(
"An unexpected error has occurred executing an Statement in the database\n"
- + "Please check the plugins/AdvancedBan/logs/latest.log file and report this"
+ + "Please check the plugins/AdvancedBan/logs/latest.log file and report this "
+ "error in: https://github.com/DevLeoko/AdvancedBan/issues"
);
Universal.get().debug("Query: \n" + sql);
Universal.get().debugSqlException(ex);
- }
+ } catch (NullPointerException ex) {
+ Universal.get().log(
+ "An unexpected error has occurred connecting to the database\n"
+ + "Check if your MySQL data is correct and if your MySQL-Server is online\n"
+ + "Please check the plugins/AdvancedBan/logs/latest.log file and report this "
+ + "error in: https://github.com/DevLeoko/AdvancedBan/issues"
+ );
+ Universal.get().debugException(ex);
+ }
return null;
}
/**
* Check whether there is a valid connection to the database.
*
- * @param timeout the timeout for the check
* @return whether there is a valid connection
*/
- public boolean isConnectionValid(int timeout) {
- try {
- return connection.isValid(timeout);
- } catch (SQLException ex) {
- Universal.get().log("An unexpected error has occurred with the database.");
- Universal.get().debugSqlException(ex);
- return false;
- }
- }
-
- /**
- * Check whether the connection to MySQL failed.
- *
- * @return true
if MySQL has been specified as the preferred Database and due to some
- * error HSQLDB is used as the fallback database.
- */
- public boolean isFailedMySQL() {
- return failedMySQL;
+ public boolean isConnectionValid() {
+ return dataSource.isRunning();
}
/**
@@ -235,5 +157,4 @@ public boolean isFailedMySQL() {
public boolean isUseMySQL() {
return useMySQL;
}
-
}
\ No newline at end of file
diff --git a/src/main/java/me/leoko/advancedban/utils/DynamicDataSource.java b/src/main/java/me/leoko/advancedban/utils/DynamicDataSource.java
new file mode 100644
index 00000000..b2237529
--- /dev/null
+++ b/src/main/java/me/leoko/advancedban/utils/DynamicDataSource.java
@@ -0,0 +1,35 @@
+package me.leoko.advancedban.utils;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import me.leoko.advancedban.MethodInterface;
+import me.leoko.advancedban.Universal;
+
+public class DynamicDataSource {
+ private HikariConfig config = new HikariConfig();
+
+ public DynamicDataSource(boolean preferMySQL) throws ClassNotFoundException {
+ MethodInterface mi = Universal.get().getMethods();
+ if (preferMySQL) {
+ String ip = mi.getString(mi.getMySQLFile(), "MySQL.IP", "Unknown");
+ String dbName = mi.getString(mi.getMySQLFile(), "MySQL.DB-Name", "Unknown");
+ String usrName = mi.getString(mi.getMySQLFile(), "MySQL.Username", "Unknown");
+ String password = mi.getString(mi.getMySQLFile(), "MySQL.Password", "Unknown");
+ int port = mi.getInteger(mi.getMySQLFile(), "MySQL.Port", 3306);
+
+ Class.forName("com.mysql.jdbc.Driver");
+ config.setJdbcUrl("jdbc:mysql://" + ip + ":" + port + "/" + dbName + "?verifyServerCertificate=false&useSSL=false&useUnicode=true&characterEncoding=utf8");
+ config.setUsername(usrName);
+ config.setPassword(password);
+ } else {
+ Class.forName("org.hsqldb.jdbc.JDBCDriver");
+ config.setJdbcUrl("jdbc:hsqldb:file:" + mi.getDataFolder().getPath() + "/data/storage;hsqldb.lock_file=false");
+ config.setUsername("SA");
+ config.setPassword("");
+ }
+ }
+
+ public HikariDataSource generateDataSource(){
+ return new HikariDataSource(config);
+ }
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 8ad3e70b..a70ef903 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -7,11 +7,22 @@
# If set to false all bans will be saved locally in a HSQLDB-Database
UseMySQL: false
+MySQL:
+ IP: localhost
+ DB-Name: database-name
+ Username: admin
+ Password: superSecret
+ Port: 3306
+
# Set to false if you want to have only short messages in the console
# On startup and on the shutdown.
DetailedEnableMessage: true
DetailedDisableMessage: true
+# Whether to disallow connections to the server when there is an error
+# with the database. (e.g.: if your MySQL Server goes down)
+LockdownOnError: true
+
# This will be the default reason to be displayed if none is given
DefaultReason: "none"
diff --git a/src/main/resources/simplelogger.properties b/src/main/resources/simplelogger.properties
new file mode 100644
index 00000000..ae9c5632
--- /dev/null
+++ b/src/main/resources/simplelogger.properties
@@ -0,0 +1 @@
+org.slf4j.simpleLogger.logFile=System.out
\ No newline at end of file
diff --git a/src/test/java/me/leoko/advancedban/DatabaseTest.java b/src/test/java/me/leoko/advancedban/DatabaseTest.java
index bdebde73..dd228fa0 100644
--- a/src/test/java/me/leoko/advancedban/DatabaseTest.java
+++ b/src/test/java/me/leoko/advancedban/DatabaseTest.java
@@ -1,13 +1,9 @@
package me.leoko.advancedban;
-import me.leoko.advancedban.manager.DatabaseManager;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
/**
* Created by Leo on 07.08.2017.
*/
@@ -20,13 +16,14 @@ public static void setupUniversal(){
@Test
public void shouldAutomaticallyDetectDatabaseType(){
- assertFalse("By default no connection with MySQL should be established as it's disabled", DatabaseManager.get().isUseMySQL() );
- assertFalse("MySQL should not be failed as it should not even try establishing any connection", DatabaseManager.get().isFailedMySQL());
- assertTrue("The HSQLDB-Connection should be valid", DatabaseManager.get().isConnectionValid(3));
- DatabaseManager.get().shutdown();
- DatabaseManager.get().setup(true);
- assertFalse("Because of a failed connection MySQL should be disabled", DatabaseManager.get().isUseMySQL() );
- assertTrue("MySQL should be failed as the connection can not succeed", DatabaseManager.get().isFailedMySQL());
+ // DatabaseManagement behaviour changed in 2.1.9
+// assertFalse("By default no connection with MySQL should be established as it's disabled", DatabaseManager.get().isUseMySQL() );
+// assertFalse("MySQL should not be failed as it should not even try establishing any connection", DatabaseManager.get().isFailedMySQL());
+// assertTrue("The HSQLDB-Connection should be valid", DatabaseManager.get().isConnectionValid(3));
+// DatabaseManager.get().shutdown();
+// DatabaseManager.get().setup(true);
+// assertFalse("Because of a failed connection MySQL should be disabled", DatabaseManager.get().isUseMySQL() );
+// assertTrue("MySQL should be failed as the connection can not succeed", DatabaseManager.get().isFailedMySQL());
}
@AfterAll
diff --git a/src/test/java/me/leoko/advancedban/TestMethods.java b/src/test/java/me/leoko/advancedban/TestMethods.java
index 647618de..a4f7112f 100644
--- a/src/test/java/me/leoko/advancedban/TestMethods.java
+++ b/src/test/java/me/leoko/advancedban/TestMethods.java
@@ -125,6 +125,11 @@ public boolean hasPerms(Object player, String perms) {
return true;
}
+ @Override
+ public boolean hasOfflinePerms(String name, String perms) {
+ return false;
+ }
+
@Override
public boolean isOnline(String name) {
return false;
@@ -184,16 +189,6 @@ public boolean callCMD(Object player, String cmd) {
return false;
}
- @Override
- public void loadMySQLFile(File f) {
- //Nothing to do here while testing
- }
-
- @Override
- public void createMySQLFile(File f) {
- System.out.println("Created new MySQL-File");
- }
-
@Override
public Object getMySQLFile() {
fail("This method has not been setup for tests yet. Edit the me.leoko.advancedban.TestMethods Class! #22");