This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/master by this push:
     new 9586721892 [SYNCOPE-1822] Prevent NPE
9586721892 is described below

commit 9586721892f761b2a7b5a73287f16d073a4ab5de
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Mon Jul 8 09:18:39 2024 +0200

    [SYNCOPE-1822] Prevent NPE
---
 .../java/org/apache/syncope/core/logic/SCIMDataBinder.java   | 12 +++++++++---
 .../syncope/ext/scimv2/api/data/SCIMExtensionInfo.java       |  6 ++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
 
b/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
index 354a7ecbfc..5ec9bce174 100644
--- 
a/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
+++ 
b/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMDataBinder.java
@@ -446,9 +446,15 @@ public class SCIMDataBinder {
 
         if (conf.getExtensionUserConf() != null) {
             SCIMExtensionInfo extensionInfo = new SCIMExtensionInfo();
-            conf.getExtensionUserConf().asMap().forEach((scimAttr, 
syncopeAttr) -> extensionInfo.getAttributes().put(
-                    scimAttr, attrs.get(syncopeAttr).getValues().get(0)));
-            user.setExtensionInfo(extensionInfo);
+            conf.getExtensionUserConf().asMap().forEach((scimAttr, 
syncopeAttr) -> {
+                if (output(attributes, excludedAttributes, scimAttr) && 
attrs.containsKey(syncopeAttr)) {
+                    extensionInfo.getAttributes().put(scimAttr, 
attrs.get(syncopeAttr).getValues().get(0));
+                }
+            });
+
+            if (!extensionInfo.isEmpty()) {
+                user.setExtensionInfo(extensionInfo);
+            }
         }
 
         if (output(attributes, excludedAttributes, "groups")) {
diff --git 
a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMExtensionInfo.java
 
b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMExtensionInfo.java
index a23ee4ef58..367f722ccd 100644
--- 
a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMExtensionInfo.java
+++ 
b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMExtensionInfo.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.ext.scimv2.api.data;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -30,4 +31,9 @@ public class SCIMExtensionInfo extends SCIMBean {
     public Map<String, String> getAttributes() {
         return attributes;
     }
+
+    @JsonIgnore
+    public boolean isEmpty() {
+        return attributes.isEmpty();
+    }
 }

Reply via email to