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

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


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

commit 7255d4793aa4cfab02634664ea59ed66a02be240
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 55d0e5fd70..c04c43458a 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