diff --git a/pom.xml b/pom.xml index 9d02bafae..f0eacdba6 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ UTF-8 UTF-8 - 1.10 + 1.8 1.7.4 diff --git a/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java b/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java index 5689df7a0..56f5bc886 100644 --- a/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java +++ b/src/main/java/world/bentobox/bentobox/api/addons/AddonClassLoader.java @@ -1,6 +1,7 @@ package world.bentobox.bentobox.api.addons; import java.io.File; +import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; @@ -35,7 +36,7 @@ public class AddonClassLoader extends URLClassLoader { MalformedURLException, InvalidDescriptionException, InstantiationException, - IllegalAccessException { + IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { super(new URL[]{path.toURI().toURL()}, parent); loader = addonsManager; @@ -58,7 +59,7 @@ public class AddonClassLoader extends URLClassLoader { throw new InvalidAddonInheritException("Main class doesn't not extends super class 'Addon'"); } - addon = addonClass.newInstance(); + addon = addonClass.getDeclaredConstructor().newInstance(); addon.setDescription(asDescription(data)); // Set permissions if (data.isConfigurationSection("permissions")) { diff --git a/src/main/java/world/bentobox/bentobox/api/configuration/Config.java b/src/main/java/world/bentobox/bentobox/api/configuration/Config.java index ab27a83b1..a3fa4b52d 100644 --- a/src/main/java/world/bentobox/bentobox/api/configuration/Config.java +++ b/src/main/java/world/bentobox/bentobox/api/configuration/Config.java @@ -41,7 +41,8 @@ public class Config { try { result = handler.loadObjects(); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException - | InvocationTargetException | ClassNotFoundException | IntrospectionException e) { + | InvocationTargetException | ClassNotFoundException | IntrospectionException + | NoSuchMethodException | SecurityException e) { logger.severe(() -> "Could not load config! Error: " + e.getMessage()); } return result; @@ -56,7 +57,7 @@ public class Config { try { return handler.loadObject(uniqueId); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException - | ClassNotFoundException | IntrospectionException e) { + | ClassNotFoundException | IntrospectionException | NoSuchMethodException | SecurityException e) { logger.severe(() -> "Could not load config object! " + e.getMessage()); } diff --git a/src/main/java/world/bentobox/bentobox/database/AbstractDatabaseHandler.java b/src/main/java/world/bentobox/bentobox/database/AbstractDatabaseHandler.java index cc07ad892..eeab806d5 100644 --- a/src/main/java/world/bentobox/bentobox/database/AbstractDatabaseHandler.java +++ b/src/main/java/world/bentobox/bentobox/database/AbstractDatabaseHandler.java @@ -48,16 +48,22 @@ public abstract class AbstractDatabaseHandler { /** * Loads all the records in this table and returns a list of them * @return list of + * @throws SecurityException + * @throws NoSuchMethodException + * @throws IllegalArgumentException */ - public abstract List loadObjects() throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException; + public abstract List loadObjects() throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException, IllegalArgumentException, NoSuchMethodException, SecurityException; /** * Creates a filled with values from the corresponding * database file * @param uniqueId - unique ID * @return + * @throws SecurityException + * @throws NoSuchMethodException + * @throws IllegalArgumentException */ - public abstract T loadObject(String uniqueId) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException; + public abstract T loadObject(String uniqueId) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException, IllegalArgumentException, NoSuchMethodException, SecurityException; /** * Save T into the corresponding database diff --git a/src/main/java/world/bentobox/bentobox/database/Database.java b/src/main/java/world/bentobox/bentobox/database/Database.java index 6bb652674..f10ab3a9d 100644 --- a/src/main/java/world/bentobox/bentobox/database/Database.java +++ b/src/main/java/world/bentobox/bentobox/database/Database.java @@ -49,7 +49,8 @@ public class Database { try { result = handler.loadObjects(); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException - | InvocationTargetException | ClassNotFoundException | IntrospectionException e) { + | InvocationTargetException | ClassNotFoundException | IntrospectionException + | NoSuchMethodException | SecurityException e) { logger.severe(() -> "Could not load objects from database! Error: " + e.getMessage()); } return result; @@ -65,7 +66,7 @@ public class Database { try { result = handler.loadObject(uniqueId); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException - | ClassNotFoundException | IntrospectionException e) { + | ClassNotFoundException | IntrospectionException | NoSuchMethodException | SecurityException e) { logger.severe(() -> "Could not load object from database! " + e.getMessage()); } return result; diff --git a/src/main/java/world/bentobox/bentobox/database/flatfile/ConfigHandler.java b/src/main/java/world/bentobox/bentobox/database/flatfile/ConfigHandler.java index 74cc7d5a1..7fe13201e 100644 --- a/src/main/java/world/bentobox/bentobox/database/flatfile/ConfigHandler.java +++ b/src/main/java/world/bentobox/bentobox/database/flatfile/ConfigHandler.java @@ -25,7 +25,7 @@ public class ConfigHandler extends FlatFileDatabaseHandler { saveObject(instance); } - public T loadSettings(String uniqueId, T dbConfig) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException { + public T loadSettings(String uniqueId, T dbConfig) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException, IllegalArgumentException, NoSuchMethodException, SecurityException { if (dbConfig == null) { return loadObject(uniqueId); } diff --git a/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseHandler.java b/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseHandler.java index 7e246b740..1bf91cb29 100644 --- a/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseHandler.java +++ b/src/main/java/world/bentobox/bentobox/database/flatfile/FlatFileDatabaseHandler.java @@ -72,7 +72,7 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { * @see world.bentobox.bentobox.database.AbstractDatabaseHandler#loadObject(java.lang.String) */ @Override - public T loadObject(String key) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException { + public T loadObject(String key) throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException, IllegalArgumentException, NoSuchMethodException, SecurityException { // Objects are loaded from a folder named after the simple name of the class being stored String path = DATABASE_FOLDER_NAME + File.separator + dataObject.getSimpleName(); // This path and key can be overridden by the StoreAt annotation in the code @@ -97,7 +97,7 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { * @see world.bentobox.bentobox.database.AbstractDatabaseHandler#loadObjects() */ @Override - public List loadObjects() throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException { + public List loadObjects() throws InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException, IntrospectionException, IllegalArgumentException, NoSuchMethodException, SecurityException { // In this case, all the objects of a specific type are being loaded. List list = new ArrayList<>(); // Look for any files that end in .yml in the folder @@ -135,10 +135,13 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { * @param config - YAML config file * * @return filled with values + * @throws SecurityException + * @throws NoSuchMethodException + * @throws IllegalArgumentException */ - private T createObject(YamlConfiguration config) throws InstantiationException, IllegalAccessException, IntrospectionException, InvocationTargetException, ClassNotFoundException { + private T createObject(YamlConfiguration config) throws InstantiationException, IllegalAccessException, IntrospectionException, InvocationTargetException, ClassNotFoundException, IllegalArgumentException, NoSuchMethodException, SecurityException { // Create a new instance of the dataObject of type T (which can be any class) - T instance = dataObject.newInstance(); + T instance = dataObject.getDeclaredConstructor().newInstance(); // Run through all the fields in the object for (Field field : dataObject.getDeclaredFields()) { @@ -167,7 +170,7 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { // Get the original value to be stored Object value = config.get(storageLocation); // Invoke the deserialization on this value - method.invoke(instance, ((AdapterInterface)adapterNotation.value().newInstance()).deserialize(value)); + method.invoke(instance, ((AdapterInterface)adapterNotation.value().getDeclaredConstructor().newInstance()).deserialize(value)); // We are done here. If a custom adapter was defined, the rest of this method does not need to be run continue; } @@ -354,8 +357,8 @@ public class FlatFileDatabaseHandler extends AbstractDatabaseHandler { if (adapterNotation != null && AdapterInterface.class.isAssignableFrom(adapterNotation.value())) { // A conversion adapter has been defined try { - config.set(storageLocation, ((AdapterInterface)adapterNotation.value().newInstance()).serialize(value)); - } catch (InstantiationException e) { + config.set(storageLocation, ((AdapterInterface)adapterNotation.value().getDeclaredConstructor().newInstance()).serialize(value)); + } catch (InstantiationException | IllegalArgumentException | NoSuchMethodException | SecurityException e) { plugin.logError("Could not instatiate adapter " + adapterNotation.value().getName() + " " + e.getMessage()); } // We are done here diff --git a/src/main/java/world/bentobox/bentobox/database/mysql/MySQLDatabaseConnector.java b/src/main/java/world/bentobox/bentobox/database/mysql/MySQLDatabaseConnector.java index 45a7a0aa7..14184c55e 100644 --- a/src/main/java/world/bentobox/bentobox/database/mysql/MySQLDatabaseConnector.java +++ b/src/main/java/world/bentobox/bentobox/database/mysql/MySQLDatabaseConnector.java @@ -24,12 +24,12 @@ public class MySQLDatabaseConnector implements DatabaseConnector { public MySQLDatabaseConnector(DatabaseConnectionSettingsImpl dbSettings) { this.dbSettings = dbSettings; try { - Class.forName("com.mysql.jdbc.Driver").newInstance(); + Class.forName("com.mysql.jdbc.Driver").getDeclaredConstructor().newInstance(); } catch (Exception e) { Bukkit.getLogger().severe("Could not instantiate JDBC driver! " + e.getMessage()); } - // jdbc:mysql://localhost:3306/Peoples?autoReconnect=true&useSSL=false - connectionUrl = "jdbc:mysql://" + dbSettings.getHost() + ":" + dbSettings.getPort() + "/" + dbSettings.getDatabaseName() + "?autoReconnect=true&useSSL=false&allowMultiQueries=true"; + connectionUrl = "jdbc:mysql://" + dbSettings.getHost() + ":" + dbSettings.getPort() + "/" + dbSettings.getDatabaseName() + + "?autoReconnect=true&useSSL=false&allowMultiQueries=true"; } @Override