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;
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 {
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);
}
}
+ } 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<String, Object> 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<String, Object> getData() {
return _data;
}
private final Map<String, Object> _data;
+
+ public static final List<String> allowedReplaceKeys = Arrays.asList("appbase","apparg","jvmarg"); // these are the ones we might use
+ public static final List<String> allowedMergeKeys = Arrays.asList("apparg","jvmarg"); // these are the ones we might use
+ //private final List<String> allowedMergeKeys = Arrays.asList("apparg","jvmarg","resource","code","java_location"); // (not exhaustive list here)
}