Fixed exception on boot if settings changed

This commit is contained in:
Rsl1122 2019-09-14 11:25:30 +03:00
parent 9df819b27a
commit 813eaf4c81
3 changed files with 18 additions and 4 deletions

View File

@ -21,6 +21,7 @@ import com.djrapitops.plan.exceptions.EnableException;
import com.djrapitops.plan.identification.properties.ServerProperties;
import com.djrapitops.plugin.utilities.Verify;
import java.util.Optional;
import java.util.UUID;
/**
@ -47,6 +48,10 @@ public abstract class ServerInfo implements SubSystem {
return getServer().getUuid();
}
public Optional<UUID> getServerUUIDSafe() {
return Optional.ofNullable(server).map(Server::getUuid);
}
public ServerProperties getServerProperties() {
return serverProperties;
}

View File

@ -17,7 +17,6 @@
package com.djrapitops.plan.query;
import com.djrapitops.plan.exceptions.database.DBOpException;
import com.djrapitops.plan.identification.Server;
import com.djrapitops.plan.identification.ServerInfo;
import com.djrapitops.plan.storage.database.DBSystem;
import com.djrapitops.plan.storage.database.Database;
@ -127,7 +126,7 @@ public class QueryServiceImplementation implements QueryService {
@Override
public Optional<UUID> getServerUUID() {
return Optional.ofNullable(serverInfo.getServer()).map(Server::getUuid);
return serverInfo.getServerUUIDSafe();
}
@Override

View File

@ -42,6 +42,7 @@ import java.io.File;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/**
@ -108,10 +109,14 @@ public class ServerSettingsManager implements SubSystem {
}
Database database = dbSystem.getDatabase();
Optional<UUID> serverUUID = serverInfo.getServerUUIDSafe();
if (!serverUUID.isPresent()) {
return;
}
try (ConfigReader reader = new ConfigReader(file.toPath())) {
Config read = reader.read();
database.executeTransaction(new StoreConfigTransaction(serverInfo.getServerUUID(), read, file.lastModified()));
database.executeTransaction(new StoreConfigTransaction(serverUUID.get(), read, file.lastModified()));
logger.debug("Server config saved to database.");
} catch (IOException e) {
throw new UncheckedIOException(e);
@ -132,7 +137,12 @@ public class ServerSettingsManager implements SubSystem {
File configFile = files.getConfigFile();
long lastModified = configFile.exists() ? configFile.lastModified() : -1;
Optional<Config> foundConfig = database.query(new NewerConfigQuery(serverInfo.getServerUUID(), lastModified));
Optional<UUID> serverUUID = serverInfo.getServerUUIDSafe();
if (!serverUUID.isPresent()) {
return;
}
Optional<Config> foundConfig = database.query(new NewerConfigQuery(serverUUID.get(), lastModified));
if (foundConfig.isPresent()) {
try {
new ConfigWriter(configFile.toPath()).write(foundConfig.get());