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

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


The following commit(s) were added to refs/heads/4_0_X by this push:
     new e1d59732fa Create Groovy CommandArgs instances under GroovyInterceptor
e1d59732fa is described below

commit e1d59732fa642b16f034d52b0dfcb1f96e0dbc7f
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Thu Aug 20 14:07:45 2026 +0200

    Create Groovy CommandArgs instances under GroovyInterceptor
---
 .../implementation/ImplementationManager.java      | 22 +++++++++++++++++++++-
 .../dao/ElasticsearchAuditEventDAO.java            |  2 +-
 .../opensearch/dao/OpenSearchAuditEventDAO.java    |  2 +-
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git 
a/core/spring/src/main/java/org/apache/syncope/core/spring/implementation/ImplementationManager.java
 
b/core/spring/src/main/java/org/apache/syncope/core/spring/implementation/ImplementationManager.java
index 99a89b3490..2f9c890be2 100644
--- 
a/core/spring/src/main/java/org/apache/syncope/core/spring/implementation/ImplementationManager.java
+++ 
b/core/spring/src/main/java/org/apache/syncope/core/spring/implementation/ImplementationManager.java
@@ -20,6 +20,7 @@ package org.apache.syncope.core.spring.implementation;
 
 import groovy.grape.GrabAnnotationTransformation;
 import groovy.lang.GroovyClassLoader;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -246,7 +247,7 @@ public final class ImplementationManager {
                 && (commandArgsClass.getEnclosingClass() == null
                 || Modifier.isStatic(commandArgsClass.getModifiers()))) {
 
-            return commandArgsClass.getDeclaredConstructor().newInstance();
+            return newInstance(commandArgsClass, impl.getEngine());
         }
 
         throw new IllegalArgumentException(
@@ -277,6 +278,25 @@ public final class ImplementationManager {
         return Pair.of((Class<T>) clazz, false);
     }
 
+    private static <T> T newInstance(final Class<T> clazz, final 
ImplementationEngine engine)
+            throws NoSuchMethodException, InstantiationException, 
IllegalAccessException, IllegalArgumentException,
+            InvocationTargetException {
+
+        if (engine == ImplementationEngine.JAVA) {
+            return clazz.getDeclaredConstructor().newInstance();
+        }
+
+        GroovyInterceptor interceptor = new SandboxInterceptor(
+                
ApplicationContextProvider.getApplicationContext().getBean(Blacklist.class));
+        try {
+            interceptor.register();
+
+            return clazz.getDeclaredConstructor().newInstance();
+        } finally {
+            interceptor.unregister();
+        }
+    }
+
     private static <T> T createBean(final Class<T> clazz, final 
ImplementationEngine engine) {
         if (engine == ImplementationEngine.JAVA) {
             return 
ApplicationContextProvider.getBeanFactory().createBean(clazz);
diff --git 
a/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAuditEventDAO.java
 
b/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAuditEventDAO.java
index 05ec70d1eb..8808bd3422 100644
--- 
a/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAuditEventDAO.java
+++ 
b/ext/elasticsearch/persistence/src/main/java/org/apache/syncope/core/persistence/elasticsearch/dao/ElasticsearchAuditEventDAO.java
@@ -43,8 +43,8 @@ import org.apache.syncope.common.lib.to.AuditEventTO;
 import org.apache.syncope.common.lib.types.OpEvent;
 import org.apache.syncope.core.persistence.api.dao.AuditEventDAO;
 import org.apache.syncope.core.persistence.api.entity.AuditEvent;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.common.dao.AbstractAuditEventDAO;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.ext.elasticsearch.client.ElasticsearchIndexManager;
 import org.apache.syncope.ext.elasticsearch.client.ElasticsearchUtils;
diff --git 
a/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAuditEventDAO.java
 
b/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAuditEventDAO.java
index be7263859d..401ed1e9ed 100644
--- 
a/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAuditEventDAO.java
+++ 
b/ext/opensearch/persistence/src/main/java/org/apache/syncope/core/persistence/opensearch/dao/OpenSearchAuditEventDAO.java
@@ -30,8 +30,8 @@ import org.apache.syncope.common.lib.to.AuditEventTO;
 import org.apache.syncope.common.lib.types.OpEvent;
 import org.apache.syncope.core.persistence.api.dao.AuditEventDAO;
 import org.apache.syncope.core.persistence.api.entity.AuditEvent;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.common.dao.AbstractAuditEventDAO;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.ext.opensearch.client.OpenSearchIndexManager;
 import org.apache.syncope.ext.opensearch.client.OpenSearchUtils;

Reply via email to