diff --git a/.travis.yml b/.travis.yml index 52fa5db..c0110b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ language: java +jdk: + - openjdk8 script: mvn -f json-overlay/pom.xml test cache: directories: diff --git a/json-overlay/src/main/java/com/reprezen/jsonoverlay/ListOverlay.java b/json-overlay/src/main/java/com/reprezen/jsonoverlay/ListOverlay.java index ef9e563..64b2d7a 100644 --- a/json-overlay/src/main/java/com/reprezen/jsonoverlay/ListOverlay.java +++ b/json-overlay/src/main/java/com/reprezen/jsonoverlay/ListOverlay.java @@ -36,9 +36,14 @@ private ListOverlay(JsonNode json, JsonOverlay parent, OverlayFactory private ListOverlay(List value, JsonOverlay parent, OverlayFactory> factory, ReferenceManager refMgr) { - super(new ArrayList<>(value), parent, factory, refMgr); + super(copyValue(value), parent, factory, refMgr); this.itemFactory = ((ListOverlayFactory) factory).getItemFactory(); } + static List copyValue(List src) { + if (src == null) + return null; + return new ArrayList<>(src); + } @Override protected JsonOverlay _findInternal(JsonPointer path) { diff --git a/json-overlay/src/main/java/com/reprezen/jsonoverlay/MapOverlay.java b/json-overlay/src/main/java/com/reprezen/jsonoverlay/MapOverlay.java index f045a97..3023f05 100644 --- a/json-overlay/src/main/java/com/reprezen/jsonoverlay/MapOverlay.java +++ b/json-overlay/src/main/java/com/reprezen/jsonoverlay/MapOverlay.java @@ -43,13 +43,19 @@ private MapOverlay(JsonNode json, JsonOverlay parent, OverlayFactory value, JsonOverlay parent, OverlayFactory> factory, ReferenceManager refMgr) { - super(new LinkedHashMap<>(value), parent, factory, refMgr); + super(copyValue(value), parent, factory, refMgr); MapOverlayFactory mapOverlayFactory = (MapOverlayFactory) factory; this.valueFactory = mapOverlayFactory.getValueFactory(); String keyPattern = mapOverlayFactory.getKeyPattern(); this.keyPattern = keyPattern != null ? Pattern.compile(keyPattern) : null; } + static Map copyValue(Map src) { + if (src == null) + return null; + return new LinkedHashMap<>(src); + } + @Override protected JsonOverlay _findInternal(JsonPointer path) { String key = path.getMatchingProperty();