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
>

Reply via email to