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())) {

Reply via email to