From 995d4acda2bc08ed05e9e291edd7b1e71cb5b62a Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sun, 16 Oct 2016 20:08:52 +0200 Subject: [PATCH] Upgrade to ConfigMe 0.2 --- pom.xml | 2 +- .../authme/initialization/Initializer.java | 20 ++++++++-------- .../fr/xephi/authme/settings/Settings.java | 9 ++++---- .../settings/SettingsMigrationService.java | 3 +-- .../properties/AuthMeSettingsRetriever.java | 14 +++++------ .../authme/AuthMeInitializationTest.java | 6 ++--- .../settings/ConfigFileConsistencyTest.java | 23 ++++++++----------- .../settings/SettingsIntegrationTest.java | 17 +++++++------- .../SettingsMigrationServiceTest.java | 7 +++--- .../xephi/authme/settings/SettingsTest.java | 13 +++++------ 10 files changed, 51 insertions(+), 63 deletions(-) diff --git a/pom.xml b/pom.xml index 101ec1198..d6a65cba5 100644 --- a/pom.xml +++ b/pom.xml @@ -873,7 +873,7 @@ com.github.authme configme - 0.1 + 0.2 compile true diff --git a/src/main/java/fr/xephi/authme/initialization/Initializer.java b/src/main/java/fr/xephi/authme/initialization/Initializer.java index a7bb4c28c..eaac2abc9 100644 --- a/src/main/java/fr/xephi/authme/initialization/Initializer.java +++ b/src/main/java/fr/xephi/authme/initialization/Initializer.java @@ -1,6 +1,6 @@ package fr.xephi.authme.initialization; -import com.github.authme.configme.knownproperties.PropertyEntry; +import com.github.authme.configme.knownproperties.ConfigurationData; import com.github.authme.configme.resource.PropertyResource; import com.github.authme.configme.resource.YamlFileResource; import fr.xephi.authme.AuthMe; @@ -12,19 +12,19 @@ import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.datasource.FlatFile; import fr.xephi.authme.datasource.MySQL; import fr.xephi.authme.datasource.SQLite; -import fr.xephi.authme.output.ConsoleFilter; -import fr.xephi.authme.output.Log4JFilter; import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.message.Messages; +import fr.xephi.authme.output.ConsoleFilter; +import fr.xephi.authme.output.Log4JFilter; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.MigrationService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SettingsMigrationService; import fr.xephi.authme.settings.properties.AuthMeSettingsRetriever; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.FileUtils; -import fr.xephi.authme.service.MigrationService; import fr.xephi.authme.util.StringUtils; import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; @@ -33,11 +33,10 @@ import org.bukkit.entity.Player; import java.io.File; import java.io.IOException; import java.sql.SQLException; -import java.util.List; import java.util.logging.Logger; -import static fr.xephi.authme.settings.properties.EmailSettings.RECALL_PLAYERS; import static fr.xephi.authme.service.BukkitService.TICKS_PER_MINUTE; +import static fr.xephi.authme.settings.properties.EmailSettings.RECALL_PLAYERS; /** * Initializes various services. @@ -62,13 +61,12 @@ public class Initializer { * @return the settings instance, or null if it could not be constructed */ public static Settings createSettings(AuthMe authMe) throws Exception { - SettingsMigrationService migrationService = new SettingsMigrationService(authMe.getDataFolder()); - List knownProperties = AuthMeSettingsRetriever.getAllPropertyFields(); - File configFile = new File(authMe.getDataFolder(), "config.yml"); if (FileUtils.copyFileFromResource(configFile, "config.yml")) { PropertyResource resource = new YamlFileResource(configFile); - return new Settings(authMe.getDataFolder(), resource, migrationService, knownProperties); + SettingsMigrationService migrationService = new SettingsMigrationService(authMe.getDataFolder()); + ConfigurationData configurationData = AuthMeSettingsRetriever.buildConfigurationData(); + return new Settings(authMe.getDataFolder(), resource, migrationService, configurationData); } throw new Exception("Could not copy config.yml from JAR to plugin folder"); } diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index e2ebd0aa6..fb4c06246 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -1,7 +1,7 @@ package fr.xephi.authme.settings; import com.github.authme.configme.SettingsManager; -import com.github.authme.configme.knownproperties.PropertyEntry; +import com.github.authme.configme.knownproperties.ConfigurationData; import com.github.authme.configme.migration.MigrationService; import com.github.authme.configme.resource.PropertyResource; import com.google.common.io.Files; @@ -10,7 +10,6 @@ import fr.xephi.authme.ConsoleLogger; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.List; import static fr.xephi.authme.util.FileUtils.copyFileFromResource; @@ -30,11 +29,11 @@ public class Settings extends SettingsManager { * @param pluginFolder the AuthMe plugin folder * @param resource the property resource to read and write properties to * @param migrationService migration service to check the settings file with - * @param knownProperties collection of all available settings + * @param configurationData configuration data (properties and comments) */ public Settings(File pluginFolder, PropertyResource resource, MigrationService migrationService, - List knownProperties) { - super(resource, migrationService, knownProperties); + ConfigurationData configurationData) { + super(resource, migrationService, configurationData); this.pluginFolder = pluginFolder; loadSettingsFromFiles(); } diff --git a/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java b/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java index 3ef6259b7..30163bf0f 100644 --- a/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java +++ b/src/main/java/fr/xephi/authme/settings/SettingsMigrationService.java @@ -1,6 +1,5 @@ package fr.xephi.authme.settings; -import com.github.authme.configme.knownproperties.PropertyEntry; import com.github.authme.configme.migration.PlainMigrationService; import com.github.authme.configme.properties.Property; import com.github.authme.configme.resource.PropertyResource; @@ -35,7 +34,7 @@ public class SettingsMigrationService extends PlainMigrationService { } @Override - protected boolean performMigrations(PropertyResource resource, List knownProperties) { + protected boolean performMigrations(PropertyResource resource, List> properties) { boolean changes = false; if ("[a-zA-Z0-9_?]*".equals(resource.getString(ALLOWED_NICKNAME_CHARACTERS.getPath()))) { resource.setValue(ALLOWED_NICKNAME_CHARACTERS.getPath(), "[a-zA-Z0-9_]*"); diff --git a/src/main/java/fr/xephi/authme/settings/properties/AuthMeSettingsRetriever.java b/src/main/java/fr/xephi/authme/settings/properties/AuthMeSettingsRetriever.java index 54b3e6e58..80bd02cfd 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/AuthMeSettingsRetriever.java +++ b/src/main/java/fr/xephi/authme/settings/properties/AuthMeSettingsRetriever.java @@ -1,12 +1,10 @@ package fr.xephi.authme.settings.properties; import com.github.authme.configme.SettingsHolder; -import com.github.authme.configme.knownproperties.PropertyEntry; -import com.github.authme.configme.knownproperties.PropertyFieldsCollector; +import com.github.authme.configme.knownproperties.ConfigurationData; +import com.github.authme.configme.knownproperties.ConfigurationDataBuilder; import com.github.authme.configme.properties.Property; -import java.util.List; - /** * Utility class responsible for retrieving all {@link Property} fields * from {@link SettingsHolder} implementations via reflection. @@ -17,12 +15,12 @@ public final class AuthMeSettingsRetriever { } /** - * Constructs a list with all property fields in AuthMe {@link SettingsHolder} classes. + * Builds the configuration data for all property fields in AuthMe {@link SettingsHolder} classes. * - * @return list of all known properties + * @return configuration data */ - public static List getAllPropertyFields() { - return PropertyFieldsCollector.getAllProperties( + public static ConfigurationData buildConfigurationData() { + return ConfigurationDataBuilder.collectData( DatabaseSettings.class, ConverterSettings.class, PluginSettings.class, RestrictionSettings.class, EmailSettings.class, HooksSettings.class, ProtectionSettings.class, PurgeSettings.class, SecuritySettings.class, diff --git a/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java b/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java index fc504f439..ba7f76068 100644 --- a/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java +++ b/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java @@ -13,9 +13,9 @@ import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.process.Management; import fr.xephi.authme.process.login.ProcessSyncPlayerLogin; import fr.xephi.authme.security.PasswordSecurity; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.purge.PurgeService; -import fr.xephi.authme.service.BukkitService; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.plugin.PluginDescriptionFile; @@ -36,7 +36,7 @@ import java.io.IOException; import java.util.logging.Logger; import static fr.xephi.authme.settings.TestSettingsMigrationServices.alwaysFulfilled; -import static fr.xephi.authme.settings.properties.AuthMeSettingsRetriever.getAllPropertyFields; +import static fr.xephi.authme.settings.properties.AuthMeSettingsRetriever.buildConfigurationData; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; @@ -95,7 +95,7 @@ public class AuthMeInitializationTest { public void shouldInitializeAllServices() { // given Settings settings = - new Settings(dataFolder, mock(PropertyResource.class), alwaysFulfilled(), getAllPropertyFields()); + new Settings(dataFolder, mock(PropertyResource.class), alwaysFulfilled(), buildConfigurationData()); Injector injector = new InjectorBuilder().addDefaultHandlers("fr.xephi.authme").create(); injector.provide(DataFolder.class, dataFolder); diff --git a/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java b/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java index 768dd98ed..ab4031e25 100644 --- a/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java +++ b/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java @@ -1,6 +1,6 @@ package fr.xephi.authme.settings; -import com.github.authme.configme.knownproperties.PropertyEntry; +import com.github.authme.configme.knownproperties.ConfigurationData; import com.github.authme.configme.migration.MigrationService; import com.github.authme.configme.migration.PlainMigrationService; import com.github.authme.configme.properties.Property; @@ -16,10 +16,10 @@ import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; @@ -42,7 +42,8 @@ public class ConfigFileConsistencyTest { MigrationService migration = new PlainMigrationService(); // when - boolean result = migration.checkAndMigrate(resource, AuthMeSettingsRetriever.getAllPropertyFields()); + boolean result = migration.checkAndMigrate( + resource, AuthMeSettingsRetriever.buildConfigurationData().getProperties()); // then if (result) { @@ -86,23 +87,19 @@ public class ConfigFileConsistencyTest { // given File configFile = TestHelper.getJarFile(CONFIG_FILE); PropertyResource resource = new YamlFileResource(configFile); - List knownProperties = AuthMeSettingsRetriever.getAllPropertyFields(); + ConfigurationData configurationData = AuthMeSettingsRetriever.buildConfigurationData(); // when / then - for (PropertyEntry propertyEntry : knownProperties) { - Property property = propertyEntry.getProperty(); + for (Property property : configurationData.getProperties()) { assertThat("Default value of '" + property.getPath() + "' in config.yml should be the same as in Property", property.getValue(resource).equals(property.getDefaultValue()), equalTo(true)); } } private static Set getAllKnownPropertyPaths() { - List knownProperties = AuthMeSettingsRetriever.getAllPropertyFields(); - Set paths = new HashSet<>(knownProperties.size()); - for (PropertyEntry propertyEntry : knownProperties) { - paths.add(propertyEntry.getProperty().getPath()); - } - return paths; + return AuthMeSettingsRetriever.buildConfigurationData() + .getProperties().stream() + .map(Property::getPath) + .collect(Collectors.toSet()); } - } diff --git a/src/test/java/fr/xephi/authme/settings/SettingsIntegrationTest.java b/src/test/java/fr/xephi/authme/settings/SettingsIntegrationTest.java index f29bcc49b..9a6441979 100644 --- a/src/test/java/fr/xephi/authme/settings/SettingsIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/settings/SettingsIntegrationTest.java @@ -1,7 +1,7 @@ package fr.xephi.authme.settings; -import com.github.authme.configme.knownproperties.PropertyEntry; -import com.github.authme.configme.knownproperties.PropertyFieldsCollector; +import com.github.authme.configme.knownproperties.ConfigurationData; +import com.github.authme.configme.knownproperties.ConfigurationDataBuilder; import com.github.authme.configme.migration.PlainMigrationService; import com.github.authme.configme.properties.Property; import com.github.authme.configme.resource.PropertyResource; @@ -21,7 +21,6 @@ import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Collections; -import java.util.List; import java.util.Map; import static fr.xephi.authme.TestHelper.getJarFile; @@ -38,8 +37,8 @@ public class SettingsIntegrationTest { /** File name of the sample config missing certain {@link TestConfiguration} values. */ private static final String INCOMPLETE_FILE = TestHelper.PROJECT_ROOT + "settings/config-incomplete-sample.yml"; - private static List knownProperties = - PropertyFieldsCollector.getAllProperties(TestConfiguration.class); + private static ConfigurationData CONFIG_DATA = + ConfigurationDataBuilder.collectData(TestConfiguration.class); @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @@ -65,7 +64,7 @@ public class SettingsIntegrationTest { // when / then Settings settings = new Settings(testPluginFolder, resource, - new PlainMigrationService(), knownProperties); + new PlainMigrationService(), CONFIG_DATA); Map, Object> expectedValues = ImmutableMap., Object>builder() .put(TestConfiguration.DURATION_IN_SECONDS, 22) .put(TestConfiguration.SYSTEM_NAME, "Custom sys name") @@ -91,14 +90,14 @@ public class SettingsIntegrationTest { File file = copyFileFromResources(INCOMPLETE_FILE); PropertyResource resource = new YamlFileResource(file); // Expectation: File is rewritten to since it does not have all configurations - new Settings(testPluginFolder, resource, new PlainMigrationService(), knownProperties); + new Settings(testPluginFolder, resource, new PlainMigrationService(), CONFIG_DATA); // Load the settings again -> checks that what we wrote can be loaded again resource = new YamlFileResource(file); // then Settings settings = new Settings(testPluginFolder, resource, - new PlainMigrationService(), knownProperties); + new PlainMigrationService(), CONFIG_DATA); Map, Object> expectedValues = ImmutableMap., Object>builder() .put(TestConfiguration.DURATION_IN_SECONDS, 22) .put(TestConfiguration.SYSTEM_NAME, "[TestDefaultValue]") @@ -123,7 +122,7 @@ public class SettingsIntegrationTest { File configFile = temporaryFolder.newFile(); PropertyResource resource = new YamlFileResource(configFile); Settings settings = new Settings(testPluginFolder, resource, - TestSettingsMigrationServices.alwaysFulfilled(), knownProperties); + TestSettingsMigrationServices.alwaysFulfilled(), CONFIG_DATA); // when assertThat(settings.getProperty(TestConfiguration.RATIO_ORDER), equalTo(TestEnum.SECOND)); // default value diff --git a/src/test/java/fr/xephi/authme/settings/SettingsMigrationServiceTest.java b/src/test/java/fr/xephi/authme/settings/SettingsMigrationServiceTest.java index bc2284b8e..93325110a 100644 --- a/src/test/java/fr/xephi/authme/settings/SettingsMigrationServiceTest.java +++ b/src/test/java/fr/xephi/authme/settings/SettingsMigrationServiceTest.java @@ -1,6 +1,6 @@ package fr.xephi.authme.settings; -import com.github.authme.configme.knownproperties.PropertyEntry; +import com.github.authme.configme.knownproperties.ConfigurationData; import com.github.authme.configme.resource.PropertyResource; import com.github.authme.configme.resource.YamlFileResource; import com.google.common.io.Files; @@ -12,7 +12,6 @@ import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.IOException; -import java.util.List; import static org.hamcrest.Matchers.arrayWithSize; import static org.hamcrest.Matchers.equalTo; @@ -41,12 +40,12 @@ public class SettingsMigrationServiceTest { // given copyConfigToTestFolder(); PropertyResource resource = new YamlFileResource(configTestFile); - List propertyMap = AuthMeSettingsRetriever.getAllPropertyFields(); + ConfigurationData configurationData = AuthMeSettingsRetriever.buildConfigurationData(); assumeThat(testFolder.listFiles(), arrayWithSize(1)); SettingsMigrationService migrationService = new SettingsMigrationService(testFolder); // when - boolean result = migrationService.checkAndMigrate(resource, propertyMap); + boolean result = migrationService.checkAndMigrate(resource, configurationData.getProperties()); // then assertThat(result, equalTo(false)); diff --git a/src/test/java/fr/xephi/authme/settings/SettingsTest.java b/src/test/java/fr/xephi/authme/settings/SettingsTest.java index 8dc2316f5..e839bb39f 100644 --- a/src/test/java/fr/xephi/authme/settings/SettingsTest.java +++ b/src/test/java/fr/xephi/authme/settings/SettingsTest.java @@ -1,7 +1,7 @@ package fr.xephi.authme.settings; -import com.github.authme.configme.knownproperties.PropertyEntry; -import com.github.authme.configme.knownproperties.PropertyFieldsCollector; +import com.github.authme.configme.knownproperties.ConfigurationData; +import com.github.authme.configme.knownproperties.ConfigurationDataBuilder; import com.github.authme.configme.resource.PropertyResource; import fr.xephi.authme.TestHelper; import fr.xephi.authme.settings.properties.RegistrationSettings; @@ -15,7 +15,6 @@ import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.List; import static org.hamcrest.Matchers.arrayContaining; import static org.hamcrest.Matchers.arrayWithSize; @@ -29,8 +28,8 @@ import static org.mockito.Mockito.mock; */ public class SettingsTest { - private static final List knownProperties = - PropertyFieldsCollector.getAllProperties(TestConfiguration.class); + private static final ConfigurationData CONFIG_DATA = + ConfigurationDataBuilder.collectData(TestConfiguration.class); @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @@ -57,7 +56,7 @@ public class SettingsTest { PropertyResource resource = mock(PropertyResource.class); given(resource.getBoolean(RegistrationSettings.USE_WELCOME_MESSAGE.getPath())).willReturn(true); Settings settings = new Settings(testPluginFolder, resource, - TestSettingsMigrationServices.alwaysFulfilled(), knownProperties); + TestSettingsMigrationServices.alwaysFulfilled(), CONFIG_DATA); // when String[] result = settings.getWelcomeMessage(); @@ -77,7 +76,7 @@ public class SettingsTest { PropertyResource resource = mock(PropertyResource.class); Settings settings = new Settings(testPluginFolder, resource, - TestSettingsMigrationServices.alwaysFulfilled(), knownProperties); + TestSettingsMigrationServices.alwaysFulfilled(), CONFIG_DATA); // when String result = settings.getPasswordEmailMessage();