diff --git a/proxy/src/main/java/com/velocitypowered/proxy/config/AnnotatedConfig.java b/proxy/src/main/java/com/velocitypowered/proxy/config/AnnotatedConfig.java index da05586d8..2d5ea5932 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/config/AnnotatedConfig.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/config/AnnotatedConfig.java @@ -125,7 +125,7 @@ public abstract class AnnotatedConfig { // Get a key name for config. Use field name if @ConfigKey annotation is not present. ConfigKey key = field.getAnnotation(ConfigKey.class); - final String name = safeKey(key == null ? field.getName() : key.value()); + final String name = escapeKeyIfNeeded(key == null ? field.getName() : key.value()); Object value = field.get(dumpable); @@ -142,7 +142,7 @@ public abstract class AnnotatedConfig { Map map = (Map) value; for (Entry entry : map.entrySet()) { lines.add( - safeKey(entry.getKey()) + " = " + serialize(entry.getValue())); // Save map data + escapeKeyIfNeeded(entry.getKey()) + " = " + serialize(entry.getValue())); // Save map data } lines.add(""); // Add empty line continue; @@ -203,7 +203,7 @@ public abstract class AnnotatedConfig { return value != null ? value.toString() : "null"; } - private static String safeKey(String key) { + protected static String escapeKeyIfNeeded(String key) { if (key.contains(".") && !(key.indexOf('"') == 0 && key.lastIndexOf('"') == (key.length() - 1))) { return '"' + key + '"'; @@ -211,6 +211,14 @@ public abstract class AnnotatedConfig { return key; } + protected static String unesacpeKeyIfNeeded(String key) { + int lastIndex; + if (key.indexOf('"') == 0 && (lastIndex = key.lastIndexOf('"')) == (key.length() - 1)) { + return key.substring(1, lastIndex); + } + return key; + } + /** * Writes list of strings to file. * diff --git a/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java b/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java index d33df5f20..7316f45b9 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java @@ -487,9 +487,9 @@ public class VelocityConfiguration extends AnnotatedConfig implements ProxyConfi for (Map.Entry entry : toml.entrySet()) { if (entry.getValue() instanceof String) { forcedHosts - .put(stripQuotes(entry.getKey()), ImmutableList.of((String) entry.getValue())); + .put(unesacpeKeyIfNeeded(entry.getKey()), ImmutableList.of((String) entry.getValue())); } else if (entry.getValue() instanceof List) { - forcedHosts.put(stripQuotes(entry.getKey()), + forcedHosts.put(unesacpeKeyIfNeeded(entry.getKey()), ImmutableList.copyOf((List) entry.getValue())); } else { throw new IllegalStateException( @@ -512,14 +512,6 @@ public class VelocityConfiguration extends AnnotatedConfig implements ProxyConfi this.forcedHosts = forcedHosts; } - private static String stripQuotes(String key) { - int lastIndex; - if (key.indexOf('"') == 0 && (lastIndex = key.lastIndexOf('"')) == (key.length() - 1)) { - return key.substring(1, lastIndex); - } - return key; - } - @Override public String toString() { return "ForcedHosts{"