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 cdc666e566 [SYNCOPE-1896] Fixing ConnectorObject serialization for 
Audit
cdc666e566 is described below

commit cdc666e5663b99d5193d168c6f43b0a1f3c7bec0
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Wed Jul 23 11:17:17 2025 +0200

    [SYNCOPE-1896] Fixing ConnectorObject serialization for Audit
---
 .../core/provisioning/java/DefaultAuditManager.java       | 10 +++++++---
 .../java/pushpull/AbstractPushResultHandler.java          | 15 +++++++++++----
 .../java/pushpull/DefaultRealmPushResultHandler.java      |  7 ++++---
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
index 9aa36c3d45..e42b276c9a 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
@@ -149,16 +149,20 @@ public class DefaultAuditManager implements AuditManager {
             auditEntry.setWho(who);
             auditEntry.setLogger(auditLoggerName);
             auditEntry.setDate(OffsetDateTime.now());
-            
auditEntry.setBefore(POJOHelper.serialize((maskSensitive(before))));
+            auditEntry.setBefore(before instanceof String
+                    ? (String) before
+                    : POJOHelper.serialize((maskSensitive(before))));
             if (throwable == null) {
-                
auditEntry.setOutput(POJOHelper.serialize((maskSensitive(output))));
+                auditEntry.setOutput(output instanceof String
+                        ? (String) output
+                        : POJOHelper.serialize((maskSensitive(output))));
             } else {
                 auditEntry.setOutput(throwable.getMessage());
                 
auditEntry.setThrowable(ExceptionUtils2.getFullStackTrace(throwable));
             }
             if (input != null) {
                 auditEntry.getInputs().addAll(Arrays.stream(input).
-                        
map(DefaultAuditManager::maskSensitive).map(POJOHelper::serialize).
+                        map(item -> item instanceof String ? (String) item : 
POJOHelper.serialize(maskSensitive(item))).
                         collect(Collectors.toList()));
             }
 
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
index 7b64944f7b..b0636ddb8f 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
@@ -42,6 +42,8 @@ import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.AuditManager;
@@ -54,6 +56,7 @@ import 
org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import 
org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import 
org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandler;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.provisioning.java.job.AfterHandlingJob;
 import 
org.apache.syncope.core.provisioning.java.propagation.DefaultPropagationReporter;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
@@ -95,7 +98,7 @@ public abstract class AbstractPushResultHandler extends 
AbstractSyncopeResultHan
             final Boolean enable,
             final ConnectorObject beforeObj,
             final ProvisioningReport result) {
-        
+
         List<String> ownedResources = 
getAnyUtils().getAllResources(any).stream().
                 map(ExternalResource::getKey).collect(Collectors.toList());
 
@@ -493,9 +496,13 @@ public abstract class AbstractPushResultHandler extends 
AbstractSyncopeResultHan
                             profile.getTask().getResource().getKey(),
                             operation,
                             resultStatus,
-                            beforeObj,
-                            output,
-                            any));
+                            beforeObj == null ? null : 
POJOHelper.serialize(beforeObj),
+                            output == null ? null : output instanceof 
Exception ? output : POJOHelper.serialize(output),
+                            any instanceof User
+                                    ? userDataBinder.getUserTO((User) any, 
true)
+                                    : any instanceof Group
+                                            ? 
groupDataBinder.getGroupTO((Group) any, true)
+                                            : 
anyObjectDataBinder.getAnyObjectTO((AnyObject) any, true)));
                     AfterHandlingJob.schedule(scheduler, jobMap);
                 }
             }
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
index 17050efa84..db09f37400 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
@@ -49,6 +49,7 @@ import 
org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import 
org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import 
org.apache.syncope.core.provisioning.api.pushpull.RealmPushResultHandler;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.provisioning.java.job.AfterHandlingJob;
 import 
org.apache.syncope.core.provisioning.java.propagation.DefaultPropagationReporter;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
@@ -441,9 +442,9 @@ public class DefaultRealmPushResultHandler
                             profile.getTask().getResource().getKey(),
                             operation,
                             resultStatus,
-                            beforeObj,
-                            output,
-                            realm));
+                            beforeObj == null ? null : 
POJOHelper.serialize(beforeObj),
+                            output == null ? null : output instanceof 
Exception ? output : POJOHelper.serialize(output),
+                            binder.getRealmTO(realm, true)));
                     AfterHandlingJob.schedule(scheduler, jobMap);
                 }
             }

Reply via email to