X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=getdown%2Fsrc%2Fgetdown%2Fcore%2Fsrc%2Fmain%2Fjava%2Fcom%2Fthreerings%2Fgetdown%2Futil%2FConfig.java;h=e20bae2f52d322986a01315030ed5c90aa396e9a;hb=f82b6b6251f9cc35180881d4e5d7e48ca1783783;hp=6f99fa63918c18759bff2645f815df2655ecc8a1;hpb=dbfa10a0954d79fe8f0cde05dd23aa86efc3885b;p=jalview.git diff --git a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/Config.java b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/Config.java index 6f99fa6..e20bae2 100644 --- a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/Config.java +++ b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/Config.java @@ -14,6 +14,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -254,6 +255,9 @@ public class Config public String[] getMultiValue (String name) { Object value = _data.get(name); + if (value == null) { + return new String[] {}; + } if (value instanceof String) { return new String[] { (String)value }; } else { @@ -381,11 +385,10 @@ public class Config String key = entry.getKey(); Object nvalue = entry.getValue(); - if (!merge || key.equals("appbase")) { - _data.put(key, nvalue); - } else { + String mkey = key.indexOf('.') > -1 ? key.substring(key.indexOf('.') + 1) : key; + if (merge && allowedMergeKeys.contains(mkey)) { - // merge + // merge multi values Object value = _data.get(key); @@ -430,15 +433,45 @@ public class Config } } + } else if (allowedReplaceKeys.contains(mkey)){ + + // replace value + + _data.put(key, nvalue); + } else { + log.warning("Not merging key '"+key+"' into config"); } } } + public String toString() { + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry : getData().entrySet()) { + String key = entry.getKey(); + Object val = entry.getValue(); + sb.append(key); + sb.append("="); + if (val instanceof String) { + sb.append((String)val); + } else if (val instanceof String[]) { + sb.append(Arrays.toString((String[])val)); + } else { + sb.append("Value not String or String[]"); + } + sb.append("\n"); + } + return sb.toString(); + } + public Map getData() { return _data; } private final Map _data; + + public static final List allowedReplaceKeys = Arrays.asList("appbase","apparg","jvmarg"); // these are the ones we might use + public static final List allowedMergeKeys = Arrays.asList("apparg","jvmarg"); // these are the ones we might use + //private final List allowedMergeKeys = Arrays.asList("apparg","jvmarg","resource","code","java_location"); // (not exhaustive list here) }