From 24d03aa1e20e8fb045604185b21a81596fd4057c Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Thu, 28 Jul 2022 18:11:57 +0200 Subject: [PATCH] Add missing "MARIADB" datasource backend to the configuration file, remove "mySQLDriverClassName" property as it is no longer needed. --- docs/config.md | 11 +++------- .../fr/xephi/authme/datasource/MariaDB.java | 5 +++++ .../fr/xephi/authme/datasource/MySQL.java | 20 +++++++++---------- .../settings/SettingsMigrationService.java | 11 +++++----- .../settings/properties/DatabaseSettings.java | 9 +-------- 5 files changed, 25 insertions(+), 31 deletions(-) diff --git a/docs/config.md b/docs/config.md index 3edfd611..dfe816b8 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1,5 +1,5 @@ - + ## AuthMe Configuration The first time you run AuthMe it will create a config.yml file in the plugins/AuthMe folder, @@ -9,7 +9,7 @@ the generated config.yml file. ```yml DataSource: # What type of database do you want to use? - # Valid values: SQLITE, MYSQL, POSTGRESQL + # Valid values: SQLITE, MARIADB, MYSQL, POSTGRESQL backend: SQLITE # Enable the database caching system, should be disabled on bungeecord environments # or when a website integration is being used. @@ -31,11 +31,6 @@ DataSource: mySQLUsername: authme # Password to connect to the MySQL database mySQLPassword: '12345' - # Driver Name of the MySQL database. - # Built-in drivers: - # MySQL: 'fr.xephi.authme.libs.com.mysql.cj.jdbc.Driver' - # MariaDB: 'fr.xephi.authme.libs.org.mariadb.jdbc.Driver' - mySQLDriverClassName: fr.xephi.authme.libs.com.mysql.cj.jdbc.Driver # Database Name, use with converters or as SQLITE database name mySQLDatabase: authme # Table of the database @@ -593,4 +588,4 @@ To change settings on a running server, save your changes to config.yml and use --- -This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Mon Jul 18 13:02:11 CEST 2022 +This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Thu Jul 28 18:11:22 CEST 2022 diff --git a/src/main/java/fr/xephi/authme/datasource/MariaDB.java b/src/main/java/fr/xephi/authme/datasource/MariaDB.java index e6e26c1c..8fa35595 100644 --- a/src/main/java/fr/xephi/authme/datasource/MariaDB.java +++ b/src/main/java/fr/xephi/authme/datasource/MariaDB.java @@ -15,6 +15,11 @@ public class MariaDB extends MySQL { return "jdbc:mariadb://" + host + ":" + port + "/" + database; } + @Override + protected String getDriverClassName() { + return "org.mariadb.jdbc.Driver"; + } + @Override public DataSourceType getType() { return DataSourceType.MARIADB; diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 2f524704..ff571c54 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -44,7 +44,6 @@ public class MySQL extends AbstractSqlDataSource { private String port; private String username; private String password; - private String className; private String database; private String tableName; private int poolSize; @@ -90,6 +89,15 @@ public class MySQL extends AbstractSqlDataSource { setParameters(settings, extensionsFactory); } + /** + * Returns the path of the Driver class to use when connecting to the database. + * + * @return the dotted path of the SQL driver class to be used + */ + protected String getDriverClassName() { + return "com.mysql.cj.jdbc.Driver"; + } + /** * Retrieves various settings. * @@ -101,14 +109,6 @@ public class MySQL extends AbstractSqlDataSource { this.port = settings.getProperty(DatabaseSettings.MYSQL_PORT); this.username = settings.getProperty(DatabaseSettings.MYSQL_USERNAME); this.password = settings.getProperty(DatabaseSettings.MYSQL_PASSWORD); - this.className = settings.getProperty(DatabaseSettings.MYSQL_DRIVER_CLASS_NAME); - try { - Class.forName(this.className); - } catch (ClassNotFoundException e) { - this.className = DatabaseSettings.MYSQL_DRIVER_CLASS_NAME.getDefaultValue(); - logger.info("Driver class '" + this.className + "' not found! Falling back to the built-in MySQL driver (" - + this.className + ")"); - } this.database = settings.getProperty(DatabaseSettings.MYSQL_DATABASE); this.tableName = settings.getProperty(DatabaseSettings.MYSQL_TABLE); this.columnOthers = settings.getProperty(HooksSettings.MYSQL_OTHER_USERNAME_COLS); @@ -141,7 +141,7 @@ public class MySQL extends AbstractSqlDataSource { ds.setPassword(this.password); // Driver - ds.setDriverClassName(this.className); + ds.setDriverClassName(this.getDriverClassName()); // Request mysql over SSL ds.addDataSourceProperty("useSSL", String.valueOf(useSsl)); diff --git a/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java b/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java index a8b437d7..2152baf5 100644 --- a/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java +++ b/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java @@ -6,6 +6,7 @@ import ch.jalu.configme.properties.Property; import ch.jalu.configme.properties.convertresult.PropertyValue; import ch.jalu.configme.resource.PropertyReader; import fr.xephi.authme.ConsoleLogger; +import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.output.LogLevel; @@ -65,10 +66,10 @@ public class SettingsMigrationService extends PlainMigrationService { configurationData.setValue(ALLOWED_NICKNAME_CHARACTERS, "[a-zA-Z0-9_]*"); changes = true; } - String driverClass = reader.getString(DatabaseSettings.MYSQL_DRIVER_CLASS_NAME.getPath()); - if ("com.mysql.jdbc.Driver".equals(driverClass) || "com.mysql.cj.jdbc.Driver".equals(driverClass)) { - configurationData.setValue(DatabaseSettings.MYSQL_DRIVER_CLASS_NAME, - DatabaseSettings.MYSQL_DRIVER_CLASS_NAME.getDefaultValue()); + + String driverClass = reader.getString("DataSource.mySQLDriverClassName"); + if ("fr.xephi.authme.libs.org.mariadb.jdbc.Driver".equals(driverClass)) { + configurationData.setValue(DatabaseSettings.BACKEND, DataSourceType.MARIADB); changes = true; } @@ -100,7 +101,7 @@ public class SettingsMigrationService extends PlainMigrationService { "settings.restrictions.keepCollisionsDisabled", "settings.forceCommands", "settings.forceCommandsAsConsole", "settings.forceRegisterCommands", "settings.forceRegisterCommandsAsConsole", "settings.sessions.sessionExpireOnIpChange", "settings.restrictions.otherAccountsCmd", - "settings.restrictions.otherAccountsCmdThreshold"}; + "settings.restrictions.otherAccountsCmdThreshold, DataSource.mySQLDriverClassName"}; for (String deprecatedPath : deprecatedProperties) { if (reader.contains(deprecatedPath)) { return true; diff --git a/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java b/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java index 9f299263..0792d9d7 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/DatabaseSettings.java @@ -10,7 +10,7 @@ import static ch.jalu.configme.properties.PropertyInitializer.newProperty; public final class DatabaseSettings implements SettingsHolder { @Comment({"What type of database do you want to use?", - "Valid values: SQLITE, MYSQL, POSTGRESQL"}) + "Valid values: SQLITE, MARIADB, MYSQL, POSTGRESQL"}) public static final Property BACKEND = newProperty(DataSourceType.class, "DataSource.backend", DataSourceType.SQLITE); @@ -49,13 +49,6 @@ public final class DatabaseSettings implements SettingsHolder { @Comment("Password to connect to the MySQL database") public static final Property MYSQL_PASSWORD = newProperty("DataSource.mySQLPassword", "12345"); - - @Comment({"Driver Name of the MySQL database.", - "Built-in drivers:", - " MySQL: 'fr.xephi.authme.libs.com.mysql.cj.jdbc.Driver'", - " MariaDB: 'fr.xephi.authme.libs.org.mariadb.jdbc.Driver'"}) - public static final Property MYSQL_DRIVER_CLASS_NAME = - newProperty("DataSource.mySQLDriverClassName", "fr.xephi.authme.libs.com.mysql.cj.jdbc.Driver"); @Comment("Database Name, use with converters or as SQLITE database name") public static final Property MYSQL_DATABASE =