1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2025-12-19 14:59:20 +00:00

Fixed issues with MariaDB support and renamed MariaDB to MySQL

This commit is contained in:
Tim203
2021-04-23 11:40:28 +02:00
parent 2cb0162f64
commit f46791bd18
10 changed files with 35 additions and 46 deletions

View File

@@ -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);
}

View File

@@ -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 extends DatabaseConfig> T getConfig(Class<T> 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

View File

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

View File

@@ -1,4 +0,0 @@
{
"mainClass": "org.geysermc.floodgate.database.MariadbDatabase",
"config": "mariadb.yml"
}

View File

@@ -10,7 +10,7 @@
<version>2.0-SNAPSHOT</version>
</parent>
<artifactId>mariadb</artifactId>
<artifactId>mysql</artifactId>
<dependencies>
<dependency>

View File

@@ -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);
}

View File

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

View File

@@ -0,0 +1,4 @@
{
"mainClass": "org.geysermc.floodgate.database.MysqlDatabase",
"config": "mysql.yml"
}

View File

@@ -19,7 +19,7 @@
<modules>
<module>sqlite</module>
<module>mariadb</module>
<module>mysql</module>
</modules>
<properties>