Hi Francesco, You're right, there is an error in the UpdateScript (AbstractScriptedConnector.java:187). Best regards,
Stéphane POPOFF Le mar. 13 janv. 2026 à 08:32, Francesco Chicchiriccò <[email protected]> a écrit : > > Hi, > the stacktrace below looks like a bare syntax error. > > You can have a look at the scripts in > > https://github.com/apache/syncope/tree/4_0_X/fit/core-reference/src/test/resources/rest > > for some examples. > > Also refer to Groovy syntax: > > https://groovy-lang.org/syntax.html > > HTH > Regards. > > On 12/01/26 17:39, Stéphane Popoff wrote: > > Hi, > > When creating a second REST connector an error raised in Core Syncope > > while inspecting the first one. It's about compiling a groovy script > > not in connector configuration. > > Any help would be appreciated. > > Best regards, > > > > Stéphane POPOFF > > > > 2026-01-12 16:32:10.524 > > [operation.id=019bb30c-f896-721f-b7da-bf8fdb04942a] ERROR > > [handler-431] org.apache.syncope.core.rest.cxf.RestServiceExceptionMapper > > : Exception thrown > > > > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > > failed: > > Script1.groovy: 109: Unexpected input: 'case' @ line 109, column 1. > > case "UPDATE_DELTA": > > ^ > > > > 1 error > > > > at > > org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292) > > at > > org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:148) > > at > > org.apache.groovy.parser.antlr4.AstBuilder.collectSyntaxError(AstBuilder.java:4714) > > at > > org.apache.groovy.parser.antlr4.AstBuilder$3.syntaxError(AstBuilder.java:4725) > > at > > groovyjarjarantlr4.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:44) > > at > > groovyjarjarantlr4.v4.runtime.Parser.notifyErrorListeners(Parser.java:543) > > at > > groovyjarjarantlr4.v4.runtime.DefaultErrorStrategy.notifyErrorListeners(DefaultErrorStrategy.java:154) > > at > > org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy.reportInputMismatch(DescriptiveErrorStrategy.java:104) > > at > > org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy.recover(DescriptiveErrorStrategy.java:55) > > at > > org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy.recoverInline(DescriptiveErrorStrategy.java:68) > > at groovyjarjarantlr4.v4.runtime.Parser.match(Parser.java:213) > > at > > org.apache.groovy.parser.antlr4.GroovyParser.compilationUnit(GroovyParser.java:366) > > at > > org.apache.groovy.parser.antlr4.AstBuilder.buildCST(AstBuilder.java:250) > > at > > org.apache.groovy.parser.antlr4.AstBuilder.buildCST(AstBuilder.java:228) > > at > > org.apache.groovy.parser.antlr4.AstBuilder.buildAST(AstBuilder.java:269) > > at > > org.apache.groovy.parser.antlr4.Antlr4ParserPlugin.buildAST(Antlr4ParserPlugin.java:58) > > at > > org.codehaus.groovy.control.SourceUnit.buildAST(SourceUnit.java:256) > > at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) > > at > > java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939) > > at > > java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803) > > at > > org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:639) > > at > > groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:399) > > at > > groovy.lang.GroovyClassLoader.lambda$parseClass$5(GroovyClassLoader.java:345) > > at > > org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache.getAndPut(ConcurrentCommonCache.java:138) > > at > > groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:345) > > at groovy.lang.GroovyShell.parseClass(GroovyShell.java:601) > > at groovy.lang.GroovyShell.parse(GroovyShell.java:614) > > at groovy.lang.GroovyShell.parse(GroovyShell.java:668) > > at groovy.lang.GroovyShell.parse(GroovyShell.java:654) > > at groovy.lang.GroovyShell.parse(GroovyShell.java:663) > > at > > org.identityconnectors.common.script.groovy.GroovyScriptExecutorFactory$GroovyScriptExecutor.<init>(GroovyScriptExecutorFactory.java:85) > > at > > org.identityconnectors.common.script.groovy.GroovyScriptExecutorFactory.newScriptExecutor(GroovyScriptExecutorFactory.java:124) > > at > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector.getScriptExecutor(AbstractScriptedConnector.java:164) > > at > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector.init(AbstractScriptedConnector.java:187) > > at > > net.tirasa.connid.bundles.rest.RESTConnector.init(RESTConnector.java:72) > > at > > org.identityconnectors.framework.impl.api.local.operations.ConnectorAPIOperationRunnerProxy.invoke(ConnectorAPIOperationRunnerProxy.java:94) > > at jdk.proxy2/jdk.proxy2.$Proxy360.test(Unknown Source) > > at > > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > > at > > org.identityconnectors.framework.impl.api.local.operations.ThreadClassLoaderManagerProxy.invoke(ThreadClassLoaderManagerProxy.java:96) > > at jdk.proxy2/jdk.proxy2.$Proxy360.test(Unknown Source) > > at > > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > > at > > org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:98) > > at jdk.proxy2/jdk.proxy2.$Proxy360.test(Unknown Source) > > at > > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > > at > > org.identityconnectors.framework.impl.api.LoggingProxy.invoke(LoggingProxy.java:89) > > at jdk.proxy2/jdk.proxy2.$Proxy360.test(Unknown Source) > > at > > org.identityconnectors.framework.impl.api.AbstractConnectorFacade.test(AbstractConnectorFacade.java:265) > > at > > org.apache.syncope.core.provisioning.java.AsyncConnectorFacade.test(AsyncConnectorFacade.java:162) > > at > > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) > > at java.base/java.lang.reflect.Method.invoke(Method.java:565) > > at > > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) > > at > > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) > > at > > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) > > at > > org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:114) > > at > > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328) > > at > > org.springframework.core.task.SimpleAsyncTaskExecutor$TaskTrackingRunnable.run(SimpleAsyncTaskExecutor.java:481) > > at java.base/java.lang.VirtualThread.run(VirtualThread.java:456) > > > > 2026-01-12 16:32:10.563 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] rg.identityconnectors.framework.api.operations.ValidateApiOp > > : instance='RestPerson' Enter: validate() Method: validate > > 2026-01-12 16:32:10.564 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Validate net.tirasa.connid.bundles.rest.RESTConfiguration Method: > > validate > > 2026-01-12 16:32:10.565 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Checking Create Script filename Method: validate > > 2026-01-12 16:32:10.565 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : /opt/syncope/conf/CreateScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.566 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Checking Update Script filename Method: validate > > 2026-01-12 16:32:10.566 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : /opt/syncope/conf/UpdateScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.566 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Checking Delete Script filename Method: validate > > 2026-01-12 16:32:10.567 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : /opt/syncope/conf/DeleteScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.567 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Checking Search Script filename Method: validate > > 2026-01-12 16:32:10.568 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : /opt/syncope/conf/SearchScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.568 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Checking Sync Script filename Method: validate > > 2026-01-12 16:32:10.569 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : /opt/syncope/conf/SyncScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.569 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] INFO > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Checking Test Script filename Method: validate > > 2026-01-12 16:32:10.569 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : /opt/syncope/conf/TestScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.570 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] tirasa.connid.commons.scripted.AbstractScriptedConfiguration > > : Configuration is valid Method: validate > > 2026-01-12 16:32:10.570 > > [operation.id=019bb30c-f93a-7283-b710-56f78c5a06d3] DEBUG > > [handler-433] rg.identityconnectors.framework.api.operations.ValidateApiOp > > : Return: null Method: validate > > 2026-01-12 16:32:10.571 DEBUG [Executor-13] > > org.identityconnectors.framework.api.operations.TestApiOp : > > instance='RestPerson' Enter: test() Method: test > > 2026-01-12 16:32:10.620 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Create > > script loaded Method: init > > 2026-01-12 16:32:10.685 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Update > > script loaded Method: init > > 2026-01-12 16:32:10.714 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Delete > > script loaded Method: init > > 2026-01-12 16:32:10.795 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Search > > script loaded Method: init > > 2026-01-12 16:32:10.865 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Sync > > script loaded Method: init > > 2026-01-12 16:32:10.924 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Schema > > script loaded Method: init > > 2026-01-12 16:32:10.956 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Test > > script loaded Method: init > > 2026-01-12 16:32:10.956 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : > > Connector net.tirasa.connid.bundles.rest.RESTConnector successfully > > inited Method: init > > 2026-01-12 16:32:10.956 DEBUG [Executor-13] > > org.identityconnectors.framework.spi.operations.TestOp : > > instance='RestPerson' Enter: test() Method: test > > 2026-01-12 16:32:10.956 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Validate net.tirasa.connid.bundles.rest.RESTConfiguration Method: > > validate > > 2026-01-12 16:32:10.957 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Checking Create Script filename Method: validate > > 2026-01-12 16:32:10.957 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > /opt/syncope/conf/CreateScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.957 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Checking Update Script filename Method: validate > > 2026-01-12 16:32:10.958 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > /opt/syncope/conf/UpdateScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.958 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Checking Delete Script filename Method: validate > > 2026-01-12 16:32:10.958 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > /opt/syncope/conf/DeleteScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.959 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Checking Search Script filename Method: validate > > 2026-01-12 16:32:10.959 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > /opt/syncope/conf/SearchScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.959 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Checking Sync Script filename Method: validate > > 2026-01-12 16:32:10.959 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > /opt/syncope/conf/SyncScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.960 INFO [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Checking Test Script filename Method: validate > > 2026-01-12 16:32:10.960 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > /opt/syncope/conf/TestScript.groovy is readable Method: > > checkFileIsReadable > > 2026-01-12 16:32:10.960 DEBUG [Executor-13] > > tirasa.connid.commons.scripted.AbstractScriptedConfiguration : > > Configuration is valid Method: validate > > 2026-01-12 16:32:10.963 INFO [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : > > Entering TEST Script Method: invoke > > 2026-01-12 16:32:10.977 DEBUG [Executor-13] > > net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Test ok > > Method: test > > 2026-01-12 16:32:10.977 DEBUG [Executor-13] > > org.identityconnectors.framework.spi.operations.TestOp : > > instance='RestPerson' Return Method: test > > 2026-01-12 16:32:10.977 DEBUG [Executor-13] > > org.identityconnectors.framework.api.operations.TestApiOp : Return: > > null Method: test > > > -- > Francesco Chicchiriccò > > Tirasa - Open Source Excellence > http://www.tirasa.net/ > > Member at The Apache Software Foundation > Syncope, Cocoon, Olingo, CXF, OpenJPA > https://about.me/ilgrosso >
