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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"mainClass": "org.geysermc.floodgate.database.MariadbDatabase",
|
||||
"config": "mariadb.yml"
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mariadb</artifactId>
|
||||
<artifactId>mysql</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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";
|
||||
4
database/mysql/src/main/resources/init.json
Normal file
4
database/mysql/src/main/resources/init.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"mainClass": "org.geysermc.floodgate.database.MysqlDatabase",
|
||||
"config": "mysql.yml"
|
||||
}
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
<modules>
|
||||
<module>sqlite</module>
|
||||
<module>mariadb</module>
|
||||
<module>mysql</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
|
||||
Reference in New Issue
Block a user