Skip to content

Commit f50a549

Browse files
committed
Extract saveDefaultConfig to ConfigurationAdapter
1 parent 95a831d commit f50a549

File tree

4 files changed

+105
-98
lines changed

4 files changed

+105
-98
lines changed

commandapi-platforms/commandapi-bukkit/commandapi-bukkit-plugin-common/src/main/java/dev/jorel/commandapi/config/BukkitConfigurationAdapter.java

Lines changed: 27 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@
1414
import java.util.Set;
1515
import java.util.logging.Logger;
1616

17-
public record BukkitConfigurationAdapter(YamlConfiguration config) implements ConfigurationAdapter<YamlConfiguration> {
17+
public class BukkitConfigurationAdapter extends ConfigurationAdapter<YamlConfiguration, DefaultBukkitConfig> {
18+
19+
private final YamlConfiguration config;
20+
21+
public BukkitConfigurationAdapter(YamlConfiguration config) {
22+
this.config = config;
23+
}
1824

1925
public static BukkitConfigurationAdapter createDummyInstance() {
2026
return new BukkitConfigurationAdapter(null);
@@ -87,7 +93,7 @@ public void tryCreateSection(String key) {
8793
}
8894

8995
@Override
90-
public ConfigurationAdapter<YamlConfiguration> complete() {
96+
public ConfigurationAdapter<YamlConfiguration, DefaultBukkitConfig> complete() {
9197
String[] configStrings = config.saveToString().split("\n");
9298
StringBuilder configBuilder = new StringBuilder();
9399
for (String configString : configStrings) {
@@ -105,49 +111,29 @@ public ConfigurationAdapter<YamlConfiguration> complete() {
105111
}
106112

107113
@Override
108-
public ConfigurationAdapter<YamlConfiguration> createNew() {
114+
public YamlConfiguration config() {
115+
return config;
116+
}
117+
118+
@Override
119+
public ConfigurationAdapter<YamlConfiguration, DefaultBukkitConfig> createNew() {
109120
return new BukkitConfigurationAdapter(new YamlConfiguration());
110121
}
111122

112123
@Override
113-
public void saveDefaultConfig(File directory, File configFile, Logger logger) {
114-
ConfigGenerator configGenerator = ConfigGenerator.createNew(DefaultBukkitConfig.createDefault());
115-
if (!directory.exists()) {
116-
boolean createdDirectory = directory.mkdirs();
117-
if (!createdDirectory) {
118-
logger.severe("Failed to create directory for the CommandAPI's config.yml file!");
119-
}
120-
try {
121-
ConfigurationAdapter<YamlConfiguration> bukkitConfigurationAdapter = new BukkitConfigurationAdapter(new YamlConfiguration());
122-
ConfigurationAdapter<YamlConfiguration> generatedConfig = configGenerator.generate(bukkitConfigurationAdapter);
123-
generatedConfig.config().save(configFile);
124-
} catch (IOException e) {
125-
logger.severe("Could not create default config file! This is (probably) a bug.");
126-
logger.severe("Error message: " + e.getMessage());
127-
logger.severe("Stacktrace:");
128-
for (StackTraceElement element : e.getStackTrace()) {
129-
logger.severe(element.toString());
130-
}
131-
}
132-
return;
133-
}
134-
// Update the config if necessary
135-
try {
136-
YamlConfiguration existingYamlConfig = YamlConfiguration.loadConfiguration(configFile);
137-
ConfigurationAdapter<YamlConfiguration> existingConfig = new BukkitConfigurationAdapter(existingYamlConfig);
138-
ConfigurationAdapter<YamlConfiguration> updatedConfig = configGenerator.generate(existingConfig);
139-
if (updatedConfig == null) {
140-
return;
141-
}
142-
updatedConfig.config().save(configFile);
143-
} catch (IOException e) {
144-
logger.severe("Could not update config! This is (probably) a bug.");
145-
logger.severe("Error message: " + e.getMessage());
146-
logger.severe("Stacktrace:");
147-
for (StackTraceElement element : e.getStackTrace()) {
148-
logger.severe(element.toString());
149-
}
150-
}
124+
public DefaultBukkitConfig createDefaultConfig() {
125+
return DefaultBukkitConfig.createDefault();
126+
}
127+
128+
@Override
129+
public ConfigurationAdapter<YamlConfiguration, DefaultBukkitConfig> loadFromFile(File file) {
130+
YamlConfiguration config = YamlConfiguration.loadConfiguration(file);
131+
return new BukkitConfigurationAdapter(config);
132+
}
133+
134+
@Override
135+
public void saveToFile(File file) throws IOException {
136+
config.save(file);
151137
}
152138

153139
}

commandapi-platforms/commandapi-velocity/commandapi-velocity-plugin/src/main/java/dev/jorel/commandapi/config/VelocityConfigurationAdapter.java

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,17 @@
1111
import java.util.Set;
1212
import java.util.logging.Logger;
1313

14-
public record VelocityConfigurationAdapter(YamlConfigurationLoader loader, CommentedConfigurationNode config, DefaultVelocityConfig defaultVelocityConfig) implements ConfigurationAdapter<ConfigurationNode> {
14+
public class VelocityConfigurationAdapter extends ConfigurationAdapter<ConfigurationNode, DefaultVelocityConfig> {
15+
16+
private final YamlConfigurationLoader loader;
17+
private final CommentedConfigurationNode config;
18+
private final DefaultVelocityConfig defaultVelocityConfig;
19+
20+
public VelocityConfigurationAdapter(YamlConfigurationLoader loader, CommentedConfigurationNode config, DefaultVelocityConfig defaultVelocityConfig) {
21+
this.loader = loader;
22+
this.config = config;
23+
this.defaultVelocityConfig = defaultVelocityConfig;
24+
}
1525

1626
public static VelocityConfigurationAdapter createDummyInstance(YamlConfigurationLoader loader) {
1727
return new VelocityConfigurationAdapter(loader, null, null);
@@ -68,54 +78,28 @@ public CommentedConfigurationNode config() {
6878
}
6979

7080
@Override
71-
public ConfigurationAdapter<ConfigurationNode> complete() {
81+
public ConfigurationAdapter<ConfigurationNode, DefaultVelocityConfig> complete() {
7282
return this;
7383
}
7484

7585
@Override
76-
public ConfigurationAdapter<ConfigurationNode> createNew() {
77-
return new VelocityConfigurationAdapter(loader, loader.createNode(), DefaultVelocityConfig.createDefault());
86+
public ConfigurationAdapter<ConfigurationNode, DefaultVelocityConfig> createNew() {
87+
return new VelocityConfigurationAdapter(loader, loader.createNode(), createDefaultConfig());
7888
}
7989

8090
@Override
81-
public void saveDefaultConfig(File directory, File configFile, Logger logger) {
82-
DefaultVelocityConfig defaultConfig = DefaultVelocityConfig.createDefault();
83-
ConfigGenerator configGenerator = ConfigGenerator.createNew(defaultConfig);
84-
if (!directory.exists()) {
85-
boolean createdDirectory = directory.mkdirs();
86-
if (!createdDirectory) {
87-
logger.severe("Failed to create directory for the CommandAPI's config.yml file!");
88-
}
89-
try {
90-
ConfigurationAdapter<ConfigurationNode> velocityConfigurationAdapter = new VelocityConfigurationAdapter(loader, loader.createNode(), defaultConfig);
91-
configGenerator.generate(velocityConfigurationAdapter);
92-
loader.save(velocityConfigurationAdapter.config());
93-
} catch (IOException e) {
94-
logger.severe("Could not create default config file! This is (probably) a bug.");
95-
logger.severe("Error message: " + e.getMessage());
96-
logger.severe("Stacktrace:");
97-
for (StackTraceElement element : e.getStackTrace()) {
98-
logger.severe(element.toString());
99-
}
100-
}
101-
} else {
102-
try {
103-
// If the config does exist, update it if necessary
104-
CommentedConfigurationNode existingYamlConfig = loader.load();
105-
ConfigurationAdapter<ConfigurationNode> existingConfig = new VelocityConfigurationAdapter(loader, existingYamlConfig, defaultConfig);
106-
ConfigurationAdapter<ConfigurationNode> updatedConfig = configGenerator.generate(existingConfig);
107-
if (updatedConfig != null) {
108-
loader.save(updatedConfig.config());
109-
}
110-
} catch (IOException e) {
111-
logger.severe("Could not update config! This is (probably) a bug.");
112-
logger.severe("Error message: " + e.getMessage());
113-
logger.severe("Stacktrace:");
114-
for (StackTraceElement element : e.getStackTrace()) {
115-
logger.severe(element.toString());
116-
}
117-
}
118-
}
91+
public DefaultVelocityConfig createDefaultConfig() {
92+
return DefaultVelocityConfig.createDefault();
93+
}
94+
95+
@Override
96+
public ConfigurationAdapter<ConfigurationNode, DefaultVelocityConfig> loadFromFile(File file) throws IOException {
97+
return new VelocityConfigurationAdapter(loader, loader.load(), createDefaultConfig());
98+
}
99+
100+
@Override
101+
public void saveToFile(File file) throws IOException {
102+
loader.save(config);
119103
}
120104

121105
@SuppressWarnings("ConfusingArgumentToVarargsMethod")

commandapi-plugin/src/main/java/dev/jorel/commandapi/config/ConfigGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public static ConfigGenerator createNew(DefaultConfig defaultConfig) {
1616
return new ConfigGenerator(defaultConfig);
1717
}
1818

19-
public <T> ConfigurationAdapter<T> generate(ConfigurationAdapter<T> existingConfig) {
20-
ConfigurationAdapter<T> updatedConfig = existingConfig.createNew();
19+
public <T, C extends DefaultConfig> ConfigurationAdapter<T, C> generate(ConfigurationAdapter<T, C> existingConfig) {
20+
ConfigurationAdapter<T, C> updatedConfig = existingConfig.createNew();
2121

2222
boolean shouldRemoveValues = shouldRemoveOptions(existingConfig);
2323

@@ -61,7 +61,7 @@ public <T> ConfigurationAdapter<T> generate(ConfigurationAdapter<T> existingConf
6161
return (wasConfigUpdated) ? updatedConfig.complete() : null;
6262
}
6363

64-
private <T> boolean shouldRemoveOptions(ConfigurationAdapter<T> config) {
64+
private <T, C extends DefaultConfig> boolean shouldRemoveOptions(ConfigurationAdapter<T, C> config) {
6565
Set<String> configOptions = config.getKeys();
6666
Set<String> defaultConfigOptions = defaultConfig.getAllOptions().keySet();
6767

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,68 @@
11
package dev.jorel.commandapi.config;
22

33
import java.io.File;
4+
import java.io.IOException;
45
import java.util.Set;
56
import java.util.logging.Logger;
67

7-
public interface ConfigurationAdapter<Configuration> {
8+
public abstract class ConfigurationAdapter<Configuration, DefaultConfig extends dev.jorel.commandapi.config.DefaultConfig> {
89

9-
void setValue(String key, Object value);
10+
public abstract void setValue(String key, Object value);
1011

11-
void setComment(String key, String[] comment);
12+
public abstract void setComment(String key, String[] comment);
1213

13-
Object getValue(String key);
14+
public abstract Object getValue(String key);
1415

15-
String[] getComment(String key);
16+
public abstract String[] getComment(String key);
1617

17-
Set<String> getKeys();
18+
public abstract Set<String> getKeys();
1819

19-
boolean contains(String key);
20+
public abstract boolean contains(String key);
2021

21-
void tryCreateSection(String key);
22+
public abstract void tryCreateSection(String key);
2223

23-
ConfigurationAdapter<Configuration> complete();
24+
public abstract ConfigurationAdapter<Configuration, DefaultConfig> complete();
2425

25-
Configuration config();
26+
public abstract Configuration config();
2627

27-
ConfigurationAdapter<Configuration> createNew();
28+
public abstract ConfigurationAdapter<Configuration, DefaultConfig> createNew();
2829

29-
void saveDefaultConfig(File directory, File configFile, Logger logger);
30+
public abstract DefaultConfig createDefaultConfig();
31+
32+
public abstract ConfigurationAdapter<Configuration, DefaultConfig> loadFromFile(File file) throws IOException;
33+
34+
public abstract void saveToFile(File file) throws IOException;
35+
36+
public void saveDefaultConfig(File directory, File configFile, Logger logger) {
37+
ConfigGenerator generator = ConfigGenerator.createNew(createDefaultConfig());
38+
ConfigurationAdapter<Configuration, DefaultConfig> existingConfig;
39+
if (!directory.exists()) {
40+
if (!directory.mkdirs()) {
41+
logger.severe("Failed to create directory for the CommandAPI's config.yml file!");
42+
}
43+
existingConfig = createNew();
44+
} else {
45+
try {
46+
existingConfig = loadFromFile(configFile);
47+
} catch (IOException e) {
48+
logger.severe("Failed to load the config file!");
49+
return;
50+
}
51+
}
52+
ConfigurationAdapter<Configuration, DefaultConfig> updatedConfig = generator.generate(existingConfig);
53+
if (updatedConfig == null) {
54+
return;
55+
}
56+
try {
57+
updatedConfig.saveToFile(configFile);
58+
} catch (IOException e) {
59+
logger.severe("Failed to save the config file!");
60+
logger.severe("Error message: " + e.getMessage());
61+
logger.severe("Stacktrace:");
62+
for (StackTraceElement element : e.getStackTrace()) {
63+
logger.severe(element.toString());
64+
}
65+
}
66+
}
3067

3168
}

0 commit comments

Comments
 (0)