Add missing properties to commands.yml on start and reload
This commit is contained in:
parent
5c6af0330e
commit
5ca9112c12
@ -4,6 +4,7 @@ import ch.jalu.configme.migration.MigrationService;
|
|||||||
import ch.jalu.configme.properties.Property;
|
import ch.jalu.configme.properties.Property;
|
||||||
import ch.jalu.configme.resource.PropertyResource;
|
import ch.jalu.configme.resource.PropertyResource;
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.settings.SettingsMigrationService;
|
import fr.xephi.authme.settings.SettingsMigrationService;
|
||||||
import fr.xephi.authme.util.RandomStringUtils;
|
import fr.xephi.authme.util.RandomStringUtils;
|
||||||
@ -19,6 +20,11 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
class CommandMigrationService implements MigrationService {
|
class CommandMigrationService implements MigrationService {
|
||||||
|
|
||||||
|
/** List of all properties in {@link CommandConfig}. */
|
||||||
|
@VisibleForTesting
|
||||||
|
static final List<String> COMMAND_CONFIG_PROPERTIES = ImmutableList.of(
|
||||||
|
"onJoin", "onLogin", "onSessionLogin", "onRegister", "onUnregister", "onLogout");
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SettingsMigrationService settingsMigrationService;
|
private SettingsMigrationService settingsMigrationService;
|
||||||
|
|
||||||
@ -38,8 +44,7 @@ class CommandMigrationService implements MigrationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isFileEmpty(PropertyResource resource) {
|
private boolean isFileEmpty(PropertyResource resource) {
|
||||||
Object root = resource.getObject("");
|
return COMMAND_CONFIG_PROPERTIES.stream().anyMatch(property -> resource.getObject(property) == null);
|
||||||
return (root instanceof Map) && ((Map) root).isEmpty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package fr.xephi.authme.settings.commandconfig;
|
package fr.xephi.authme.settings.commandconfig;
|
||||||
|
|
||||||
|
import ch.jalu.configme.beanmapper.BeanDescriptionFactory;
|
||||||
|
import ch.jalu.configme.beanmapper.BeanPropertyDescription;
|
||||||
import ch.jalu.configme.configurationdata.ConfigurationDataBuilder;
|
import ch.jalu.configme.configurationdata.ConfigurationDataBuilder;
|
||||||
import ch.jalu.configme.resource.PropertyResource;
|
import ch.jalu.configme.resource.PropertyResource;
|
||||||
import ch.jalu.configme.resource.YamlFileResource;
|
import ch.jalu.configme.resource.YamlFileResource;
|
||||||
@ -24,6 +26,7 @@ import static fr.xephi.authme.settings.commandconfig.CommandConfigTestHelper.isC
|
|||||||
import static java.util.Collections.emptyList;
|
import static java.util.Collections.emptyList;
|
||||||
import static org.hamcrest.Matchers.anEmptyMap;
|
import static org.hamcrest.Matchers.anEmptyMap;
|
||||||
import static org.hamcrest.Matchers.contains;
|
import static org.hamcrest.Matchers.contains;
|
||||||
|
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.hamcrest.Matchers.sameInstance;
|
import static org.hamcrest.Matchers.sameInstance;
|
||||||
import static org.junit.Assert.assertThat;
|
import static org.junit.Assert.assertThat;
|
||||||
@ -116,7 +119,7 @@ public class CommandMigrationServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldRewriteForEmptyFile() {
|
public void shouldRewriteForEmptyFile() {
|
||||||
// given
|
// given
|
||||||
File commandFile = TestHelper.getJarFile("/fr/xephi/authme/settings/commandconfig/commands.empty.yml");
|
File commandFile = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "settings/commandconfig/commands.empty.yml");
|
||||||
PropertyResource resource = new YamlFileResource(commandFile);
|
PropertyResource resource = new YamlFileResource(commandFile);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
@ -126,4 +129,49 @@ public class CommandMigrationServiceTest {
|
|||||||
// then
|
// then
|
||||||
assertThat(result, equalTo(true));
|
assertThat(result, equalTo(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldRewriteIncompleteFile() {
|
||||||
|
// given
|
||||||
|
File commandFile = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "settings/commandconfig/commands.incomplete.yml");
|
||||||
|
PropertyResource resource = new YamlFileResource(commandFile);
|
||||||
|
|
||||||
|
// when
|
||||||
|
boolean result = commandMigrationService.checkAndMigrate(
|
||||||
|
resource, ConfigurationDataBuilder.collectData(CommandSettingsHolder.class).getProperties());
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result, equalTo(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldNotChangeCompleteFile() {
|
||||||
|
// given
|
||||||
|
File commandFile = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "settings/commandconfig/commands.complete.yml");
|
||||||
|
PropertyResource resource = new YamlFileResource(commandFile);
|
||||||
|
|
||||||
|
// when
|
||||||
|
boolean result = commandMigrationService.checkAndMigrate(
|
||||||
|
resource, ConfigurationDataBuilder.collectData(CommandSettingsHolder.class).getProperties());
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(result, equalTo(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that {@link CommandMigrationService#COMMAND_CONFIG_PROPERTIES} contains all properties defined in the
|
||||||
|
* {@link CommandConfig} class. It is used to ensure that the commands.yml file is complete.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void shouldHaveAllPropertiesFromCommandConfig() {
|
||||||
|
// given
|
||||||
|
String[] properties = new BeanDescriptionFactory()
|
||||||
|
.collectWritableFields(CommandConfig.class)
|
||||||
|
.stream()
|
||||||
|
.map(BeanPropertyDescription::getName)
|
||||||
|
.toArray(String[]::new);
|
||||||
|
|
||||||
|
// when / then
|
||||||
|
assertThat(CommandMigrationService.COMMAND_CONFIG_PROPERTIES, containsInAnyOrder(properties));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ onSessionLogin:
|
|||||||
welcome:
|
welcome:
|
||||||
command: 'msg %p Session login!'
|
command: 'msg %p Session login!'
|
||||||
executor: CONSOLE
|
executor: CONSOLE
|
||||||
|
onUnregister: {}
|
||||||
onLogout:
|
onLogout:
|
||||||
announce:
|
announce:
|
||||||
command: 'broadcast %p (%ip) logged out'
|
command: 'broadcast %p (%ip) logged out'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user