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;