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");