This is an automated email from the ASF dual-hosted git repository. taybou pushed a commit to branch UNOMI-242-improve-merge-function in repository https://gitbox.apache.org/repos/asf/unomi.git
commit 6add011c8b2df4053b961b542f6412fa508f6939 Author: Taybou <[email protected]> AuthorDate: Tue Aug 27 17:19:28 2019 +0200 UNOMI-242 improve merge function to avoid NPE and handle nested objects --- .../org/apache/unomi/services/services/ProfileServiceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java index e612e15..689e416 100644 --- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java +++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java @@ -1010,14 +1010,18 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList } else { changed |= merge(currentMap, (Map) newEntry.getValue()); } - } else if (StringUtils.equals(packageName, "java.lang") - || StringUtils.equals(packageName, "org.apache.unomi.api")) { + } else if (StringUtils.equals(packageName, "java.lang")) { if (newEntry.getValue() != null && !newEntry.getValue().equals(target.get(newEntry.getKey()))) { target.put(newEntry.getKey(), newEntry.getValue()); changed = true; } } else { - changed |= merge(target.get(newEntry.getKey()), newEntry.getValue()); + if (target.get(newEntry.getKey()) != null) { + changed |= merge(target.get(newEntry.getKey()), newEntry.getValue()); + } else { + target.put(newEntry.getKey(), newEntry.getValue()); + changed = true; + } } } else { if (target.containsKey(newEntry.getKey())) {
