From 2de4a60f3a2472bba771dc234aa4bd9dbb535e6d Mon Sep 17 00:00:00 2001 From: ljacqu Date: Thu, 24 Aug 2023 15:09:08 +0200 Subject: [PATCH] Revert "Update to ConfigMe 1.4.0" - ConfigMe uses a different version from SnakeYAML, causing issues because it uses a newer configuration. For now, we stay on 1.3 as a quick fix. This reverts commit 79309c3c050e222406ccfd8504df7b66a13026c9. --- pom.xml | 2 +- .../updater/MessageKeyConfigurationData.java | 11 ++--- .../MessageMigraterPropertyReader.java | 8 +-- .../message/updater/MessageUpdater.java | 7 +-- .../updater/MigraterYamlFileResource.java | 49 +++++++------------ 5 files changed, 30 insertions(+), 47 deletions(-) diff --git a/pom.xml b/pom.xml index 33861bb50..a3f870e80 100644 --- a/pom.xml +++ b/pom.xml @@ -760,7 +760,7 @@ ch.jalu configme - 1.4.0 + 1.3.0 true diff --git a/src/main/java/fr/xephi/authme/message/updater/MessageKeyConfigurationData.java b/src/main/java/fr/xephi/authme/message/updater/MessageKeyConfigurationData.java index 48cea6aa1..cf3c1c782 100644 --- a/src/main/java/fr/xephi/authme/message/updater/MessageKeyConfigurationData.java +++ b/src/main/java/fr/xephi/authme/message/updater/MessageKeyConfigurationData.java @@ -5,7 +5,6 @@ import ch.jalu.configme.properties.Property; import ch.jalu.configme.properties.convertresult.PropertyValue; import ch.jalu.configme.resource.PropertyReader; import fr.xephi.authme.message.MessageKey; -import fr.xephi.authme.message.updater.MessageUpdater.MessageKeyProperty; import java.util.List; import java.util.Map; @@ -40,19 +39,15 @@ public class MessageKeyConfigurationData extends ConfigurationDataImpl { } @SuppressWarnings("unchecked") - public List getAllMessageProperties() { + public List> getAllMessageProperties() { return (List) getProperties(); } public String getMessage(MessageKey messageKey) { - return getValue(new MessageKeyProperty(messageKey)); - } - - public String getMessage(MessageKeyProperty property) { - return (String) getValues().get(property.getPath()); + return getValue(new MessageUpdater.MessageKeyProperty(messageKey)); } public void setMessage(MessageKey messageKey, String message) { - setValue(new MessageKeyProperty(messageKey), message); + setValue(new MessageUpdater.MessageKeyProperty(messageKey), message); } } diff --git a/src/main/java/fr/xephi/authme/message/updater/MessageMigraterPropertyReader.java b/src/main/java/fr/xephi/authme/message/updater/MessageMigraterPropertyReader.java index 1c7e59615..a994df898 100644 --- a/src/main/java/fr/xephi/authme/message/updater/MessageMigraterPropertyReader.java +++ b/src/main/java/fr/xephi/authme/message/updater/MessageMigraterPropertyReader.java @@ -4,13 +4,13 @@ import ch.jalu.configme.exception.ConfigMeException; import ch.jalu.configme.resource.PropertyReader; import org.yaml.snakeyaml.Yaml; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,8 +36,8 @@ final class MessageMigraterPropertyReader implements PropertyReader { * @param file the file to load * @return the created property reader */ - public static MessageMigraterPropertyReader loadFromFile(Path file) { - try (InputStream is = Files.newInputStream(file)) { + public static MessageMigraterPropertyReader loadFromFile(File file) { + try (InputStream is = new FileInputStream(file)) { return loadFromStream(is); } catch (IOException e) { throw new IllegalStateException("Error while reading file '" + file + "'", e); diff --git a/src/main/java/fr/xephi/authme/message/updater/MessageUpdater.java b/src/main/java/fr/xephi/authme/message/updater/MessageUpdater.java index aeca297e8..77fc996b4 100644 --- a/src/main/java/fr/xephi/authme/message/updater/MessageUpdater.java +++ b/src/main/java/fr/xephi/authme/message/updater/MessageUpdater.java @@ -2,6 +2,7 @@ package fr.xephi.authme.message.updater; import ch.jalu.configme.configurationdata.ConfigurationData; import ch.jalu.configme.configurationdata.PropertyListBuilder; +import ch.jalu.configme.properties.Property; import ch.jalu.configme.properties.StringProperty; import ch.jalu.configme.properties.convertresult.ConvertErrorRecorder; import ch.jalu.configme.resource.PropertyReader; @@ -9,8 +10,8 @@ import ch.jalu.configme.resource.PropertyResource; import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.output.ConsoleLoggerFactory; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.util.FileUtils; import java.io.File; @@ -101,9 +102,9 @@ public class MessageUpdater { private boolean addMissingKeys(JarMessageSource jarMessageSource, MessageKeyConfigurationData configurationData) { List addedKeys = new ArrayList<>(); - for (MessageKeyProperty property : configurationData.getAllMessageProperties()) { + for (Property property : configurationData.getAllMessageProperties()) { final String key = property.getPath(); - if (configurationData.getMessage(property) == null) { + if (configurationData.getValue(property) == null) { configurationData.setValue(property, jarMessageSource.getMessageFromJar(property)); addedKeys.add(key); } diff --git a/src/main/java/fr/xephi/authme/message/updater/MigraterYamlFileResource.java b/src/main/java/fr/xephi/authme/message/updater/MigraterYamlFileResource.java index 94230b9f7..b0122215b 100644 --- a/src/main/java/fr/xephi/authme/message/updater/MigraterYamlFileResource.java +++ b/src/main/java/fr/xephi/authme/message/updater/MigraterYamlFileResource.java @@ -2,14 +2,8 @@ package fr.xephi.authme.message.updater; import ch.jalu.configme.resource.PropertyReader; import ch.jalu.configme.resource.YamlFileResource; -import ch.jalu.configme.resource.yaml.SnakeYamlNodeBuilder; -import ch.jalu.configme.resource.yaml.SnakeYamlNodeBuilderImpl; -import org.jetbrains.annotations.NotNull; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.nodes.Node; -import org.yaml.snakeyaml.nodes.ScalarNode; -import org.yaml.snakeyaml.nodes.Tag; import java.io.File; @@ -18,43 +12,36 @@ import java.io.File; */ public class MigraterYamlFileResource extends YamlFileResource { + private Yaml singleQuoteYaml; + public MigraterYamlFileResource(File file) { super(file); } @Override public PropertyReader createReader() { - return MessageMigraterPropertyReader.loadFromFile(getPath()); + return MessageMigraterPropertyReader.loadFromFile(getFile()); } @Override protected Yaml createNewYaml() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - options.setAllowUnicode(true); - options.setProcessComments(true); - options.setIndent(4); - // Overridden setting: don't split lines - options.setSplitLines(false); - return new Yaml(options); + if (singleQuoteYaml == null) { + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + options.setAllowUnicode(true); + options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); + // Overridden setting: don't split lines + options.setSplitLines(false); + singleQuoteYaml = new Yaml(options); + } + return singleQuoteYaml; } + // Because we set the YAML object to put strings in single quotes, this method by default uses that YAML object + // and also puts all paths as single quotes. Override to just always return the same string since we know those + // are only message names (so never any conflicting strings like "true" or "0"). @Override - protected @NotNull SnakeYamlNodeBuilder createNodeBuilder() { - return new MigraterYamlNodeBuilder(); - } - - /** Extended to represent all strings with single quotes in the YAML. */ - private static final class MigraterYamlNodeBuilder extends SnakeYamlNodeBuilderImpl { - - @Override - protected @NotNull Node createStringNode(@NotNull String value) { - return new ScalarNode(Tag.STR, value, null, null, DumperOptions.ScalarStyle.SINGLE_QUOTED); - } - - @Override - public @NotNull Node createKeyNode(@NotNull String key) { - return super.createStringNode(key); // no single quotes - } + protected String escapePathElementIfNeeded(String path) { + return path; } }