From f46791bd18be4b7a33a0a5cd664d9c88556475f7 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Fri, 23 Apr 2021 11:40:28 +0200 Subject: [PATCH] Fixed issues with MariaDB support and renamed MariaDB to MySQL --- .../database/config/DatabaseConfigLoader.java | 34 ++++++++----------- .../floodgate/link/CommonPlayerLink.java | 7 ++-- .../floodgate/link/PlayerLinkLoader.java | 14 +++----- database/mariadb/src/main/resources/init.json | 4 --- database/{mariadb => mysql}/pom.xml | 2 +- .../floodgate/database/MysqlDatabase.java} | 12 +++---- .../database/config/MysqlConfig.java} | 2 +- database/mysql/src/main/resources/init.json | 4 +++ .../src/main/resources/mysql.yml} | 0 database/pom.xml | 2 +- 10 files changed, 35 insertions(+), 46 deletions(-) delete mode 100644 database/mariadb/src/main/resources/init.json rename database/{mariadb => mysql}/pom.xml (98%) rename database/{mariadb/src/main/java/org/geysermc/floodgate/database/MariadbDatabase.java => mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java} (97%) rename database/{mariadb/src/main/java/org/geysermc/floodgate/database/config/MariadbConfig.java => mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java} (96%) create mode 100644 database/mysql/src/main/resources/init.json rename database/{mariadb/src/main/resources/mariadb/mariadb.yml => mysql/src/main/resources/mysql.yml} (100%) diff --git a/common/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java b/common/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java index 84d470ff..fe6ae578 100644 --- a/common/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java +++ b/common/src/main/java/org/geysermc/floodgate/database/config/DatabaseConfigLoader.java @@ -26,8 +26,6 @@ package org.geysermc.floodgate.database.config; import com.google.gson.JsonObject; -import com.google.inject.Inject; -import com.google.inject.name.Named; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -38,26 +36,22 @@ import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; import org.yaml.snakeyaml.introspector.BeanAccess; public class DatabaseConfigLoader { - private Yaml yaml; + private final Path dataDirectory; + private final String name; + private final ClassLoader classLoader; + private final JsonObject initData; + private final Yaml yaml; - @Inject - @Named("dataDirectory") - private Path dataDirectory; + public DatabaseConfigLoader( + Path dataDirectory, + String databaseName, + ClassLoader classLoader, + JsonObject initData) { + this.dataDirectory = dataDirectory; + this.name = databaseName; + this.classLoader = classLoader; + this.initData = initData; - @Inject - @Named("databaseName") - private String name; - - @Inject - @Named("databaseClassLoader") - private ClassLoader classLoader; - - @Inject - @Named("databaseInitData") - private JsonObject initData; - - @Inject - public void init() { yaml = new Yaml(new CustomClassLoaderConstructor(classLoader)); yaml.setBeanAccess(BeanAccess.FIELD); } diff --git a/common/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java b/common/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java index 838be479..51306fa3 100644 --- a/common/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java +++ b/common/src/main/java/org/geysermc/floodgate/link/CommonPlayerLink.java @@ -26,7 +26,6 @@ package org.geysermc.floodgate.link; import com.google.inject.Inject; -import com.google.inject.Injector; import java.util.Random; import java.util.UUID; import java.util.concurrent.ExecutorService; @@ -58,7 +57,7 @@ public abstract class CommonPlayerLink implements PlayerLink { private FloodgateApi api; @Inject - private Injector injector; + private DatabaseConfigLoader configLoader; @Inject private void init(FloodgateConfig config) { @@ -87,8 +86,8 @@ public abstract class CommonPlayerLink implements PlayerLink { */ public T getConfig(Class configClass) { // this method is not intended to be used more than once. It'll make a new instance of - // DatabaseConfigLoader and DatabaseConfig every time you run this method. - return injector.getInstance(DatabaseConfigLoader.class).loadAs(configClass); + // DatabaseConfig every time you run this method. + return configLoader.loadAs(configClass); } @Override diff --git a/common/src/main/java/org/geysermc/floodgate/link/PlayerLinkLoader.java b/common/src/main/java/org/geysermc/floodgate/link/PlayerLinkLoader.java index bb028123..99b902f9 100644 --- a/common/src/main/java/org/geysermc/floodgate/link/PlayerLinkLoader.java +++ b/common/src/main/java/org/geysermc/floodgate/link/PlayerLinkLoader.java @@ -32,7 +32,6 @@ import com.google.gson.JsonObject; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Singleton; -import com.google.inject.name.Names; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -46,6 +45,7 @@ import javax.inject.Named; import org.geysermc.floodgate.api.link.PlayerLink; import org.geysermc.floodgate.api.logger.FloodgateLogger; import org.geysermc.floodgate.config.FloodgateConfig; +import org.geysermc.floodgate.database.config.DatabaseConfigLoader; import org.geysermc.floodgate.util.Constants; import org.geysermc.floodgate.util.Utils; @@ -156,14 +156,10 @@ public final class PlayerLinkLoader { init = false; Injector linkInjector = injector.createChildInjector(binder -> { - binder.bind(String.class) - .annotatedWith(Names.named("databaseName")) - .toInstance(databaseName); - binder.bind(ClassLoader.class).annotatedWith( - Names.named("databaseClassLoader")).toInstance(classLoader); - binder.bind(JsonObject.class) - .annotatedWith(Names.named("databaseInitData")) - .toInstance(linkConfig); + DatabaseConfigLoader configLoader = new DatabaseConfigLoader( + dataDirectory, databaseName, classLoader, linkConfig + ); + binder.bind(DatabaseConfigLoader.class).toInstance(configLoader); }); PlayerLink instance = linkInjector.getInstance(mainClass); diff --git a/database/mariadb/src/main/resources/init.json b/database/mariadb/src/main/resources/init.json deleted file mode 100644 index 4ecfc3cb..00000000 --- a/database/mariadb/src/main/resources/init.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "mainClass": "org.geysermc.floodgate.database.MariadbDatabase", - "config": "mariadb.yml" -} \ No newline at end of file diff --git a/database/mariadb/pom.xml b/database/mysql/pom.xml similarity index 98% rename from database/mariadb/pom.xml rename to database/mysql/pom.xml index 3a8cf182..8666ac6f 100644 --- a/database/mariadb/pom.xml +++ b/database/mysql/pom.xml @@ -10,7 +10,7 @@ 2.0-SNAPSHOT - mariadb + mysql diff --git a/database/mariadb/src/main/java/org/geysermc/floodgate/database/MariadbDatabase.java b/database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java similarity index 97% rename from database/mariadb/src/main/java/org/geysermc/floodgate/database/MariadbDatabase.java rename to database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java index 6fe901ec..362d1366 100644 --- a/database/mariadb/src/main/java/org/geysermc/floodgate/database/MariadbDatabase.java +++ b/database/mysql/src/main/java/org/geysermc/floodgate/database/MysqlDatabase.java @@ -39,21 +39,21 @@ import java.util.concurrent.CompletionException; import org.checkerframework.checker.nullness.qual.NonNull; import org.geysermc.floodgate.api.link.LinkRequest; import org.geysermc.floodgate.api.link.LinkRequestResult; -import org.geysermc.floodgate.database.config.MariadbConfig; +import org.geysermc.floodgate.database.config.MysqlConfig; import org.geysermc.floodgate.link.CommonPlayerLink; import org.geysermc.floodgate.link.LinkRequestImpl; import org.geysermc.floodgate.util.LinkedPlayer; import org.mariadb.jdbc.MariaDbPoolDataSource; -public class MariadbDatabase extends CommonPlayerLink { +public class MysqlDatabase extends CommonPlayerLink { private MariaDbPoolDataSource pool; @Override public void load() { - getLogger().info("Connecting to mariadb database..."); + getLogger().info("Connecting to a MySQL-like database..."); try { Class.forName("org.mariadb.jdbc.Driver"); - MariadbConfig databaseconfig = getConfig(MariadbConfig.class); + MysqlConfig databaseconfig = getConfig(MysqlConfig.class); pool = new MariaDbPoolDataSource( "jdbc:mariadb://" + databaseconfig.getHostname() + "/" + databaseconfig.getDatabase() + @@ -85,9 +85,9 @@ public class MariadbDatabase extends CommonPlayerLink { ); } } - getLogger().info("Connected to mariadb database."); + getLogger().info("Connected to MySQL-like database."); } catch (ClassNotFoundException exception) { - getLogger().error("The required class to load the MariaDB database wasn't found"); + getLogger().error("The required class to load the MySQL database wasn't found"); } catch (SQLException exception) { getLogger().error("Error while loading database", exception); } diff --git a/database/mariadb/src/main/java/org/geysermc/floodgate/database/config/MariadbConfig.java b/database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java similarity index 96% rename from database/mariadb/src/main/java/org/geysermc/floodgate/database/config/MariadbConfig.java rename to database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java index 236f54ab..fbd72470 100644 --- a/database/mariadb/src/main/java/org/geysermc/floodgate/database/config/MariadbConfig.java +++ b/database/mysql/src/main/java/org/geysermc/floodgate/database/config/MysqlConfig.java @@ -28,7 +28,7 @@ package org.geysermc.floodgate.database.config; import lombok.Getter; @Getter -public class MariadbConfig implements DatabaseConfig { +public class MysqlConfig implements DatabaseConfig { private String hostname = "localhost"; private String database = "floodgate"; private String username = "floodgate"; diff --git a/database/mysql/src/main/resources/init.json b/database/mysql/src/main/resources/init.json new file mode 100644 index 00000000..3eb3da1b --- /dev/null +++ b/database/mysql/src/main/resources/init.json @@ -0,0 +1,4 @@ +{ + "mainClass": "org.geysermc.floodgate.database.MysqlDatabase", + "config": "mysql.yml" +} \ No newline at end of file diff --git a/database/mariadb/src/main/resources/mariadb/mariadb.yml b/database/mysql/src/main/resources/mysql.yml similarity index 100% rename from database/mariadb/src/main/resources/mariadb/mariadb.yml rename to database/mysql/src/main/resources/mysql.yml diff --git a/database/pom.xml b/database/pom.xml index 8d672e31..a64be266 100644 --- a/database/pom.xml +++ b/database/pom.xml @@ -19,7 +19,7 @@ sqlite - mariadb + mysql