From 8c324730f3ef170b81d54bf32d02df61457e8bf7 Mon Sep 17 00:00:00 2001 From: Ramiz Ismailov Date: Mon, 1 Mar 2021 16:42:16 +0100 Subject: [PATCH 1/2] Fix NPE if wrapping/copying null value --- .../main/java/com/reprezen/jsonoverlay/ListOverlay.java | 7 ++++++- .../main/java/com/reprezen/jsonoverlay/MapOverlay.java | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) 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(); From 904f31d7eac3e3d6cecc1f48c71c7807716dce4a Mon Sep 17 00:00:00 2001 From: Ramiz Ismailov Date: Fri, 5 Mar 2021 09:34:52 +0100 Subject: [PATCH 2/2] Fix travis build, since JDK8 is not default anymore. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) 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: