Description
When an LDAP resource (1.3.7) is configured to map roles to LDAP groups (cn is AccountLink) the propagation of the role as group is fine (syncope console reports success, group is created) but LDAP resource Push Task fails:
22:17:10.115 WARN org.apache.syncope.core.quartz.AbstractTaskJob - Failure pushing role 'SyncopeRole[104]' on 'ExternalResource[m7 LDAP]'
java.lang.NullPointerException
at org.apache.syncope.core.persistence.beans.AbstractAttributable.getAttr(AbstractAttributable.java:33) ~[AbstractAttributable.class:?]
at org.apache.syncope.core.util.MappingUtil.getIntValues(MappingUtil.java:478) ~[MappingUtil.class:?]
at org.apache.syncope.core.util.MappingUtil.getAccountIdValue(MappingUtil.java:653) ~[MappingUtil.class:?]
at org.apache.syncope.core.sync.impl.AbstractSubjectPushResultHandler.doHandle(AbstractSubjectPushResultHandler.java:118) ~[AbstractSubjectPushResultHandler.class:?]
at org.apache.syncope.core.sync.impl.AbstractSubjectPushResultHandler.handle(AbstractSubjectPushResultHandler.java:78) ~[AbstractSubjectPushResultHandler.class:?]
at org.apache.syncope.core.sync.impl.AbstractSubjectPushResultHandler$$FastClassBySpringCGLIB$$d86e2298.invoke(<generated>) ~[spring-core-4.0.7.RELEASE.jar:?]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) ~[spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) ~[spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) ~[spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.apache.syncope.core.sync.impl.RolePushResultHandler$$EnhancerBySpringCGLIB$$86ac2e87.handle(<generated>) ~[spring-core-4.0.7.RELEASE.jar:?]
at org.apache.syncope.core.sync.impl.PushJob.executeWithSecurityContext(PushJob.java:137) ~[PushJob.class:?]
at org.apache.syncope.core.sync.impl.PushJob.executeWithSecurityContext(PushJob.java:54) ~[PushJob.class:?]
at org.apache.syncope.core.sync.impl.AbstractSyncJob.doExecute(AbstractSyncJob.java:338) ~[AbstractSyncJob.class:?]
at org.apache.syncope.core.quartz.AbstractTaskJob.execute(AbstractTaskJob.java:125) ~[AbstractTaskJob.class:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:?]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) ~[quartz-2.2.1.jar:?]
22:17:10.116 ERROR org.apache.syncope.core.quartz.AbstractTaskJob - While executing task 326
org.quartz.JobExecutionException: While pushing roles on connector
at org.apache.syncope.core.sync.impl.PushJob.executeWithSecurityContext(PushJob.java:140) ~[PushJob.class:?]
at org.apache.syncope.core.sync.impl.PushJob.executeWithSecurityContext(PushJob.java:54) ~[PushJob.class:?]
at org.apache.syncope.core.sync.impl.AbstractSyncJob.doExecute(AbstractSyncJob.java:338) ~[AbstractSyncJob.class:?]
at org.apache.syncope.core.quartz.AbstractTaskJob.execute(AbstractTaskJob.java:125) ~[AbstractTaskJob.class:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.2.1.jar:?]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) ~[quartz-2.2.1.jar:?]
Caused by: java.lang.NullPointerException
at org.apache.syncope.core.persistence.beans.AbstractAttributable.getAttr(AbstractAttributable.java:33) ~[AbstractAttributable.class:?]
at org.apache.syncope.core.util.MappingUtil.getIntValues(MappingUtil.java:478) ~[MappingUtil.class:?]
at org.apache.syncope.core.util.MappingUtil.getAccountIdValue(MappingUtil.java:653) ~[MappingUtil.class:?]
at org.apache.syncope.core.sync.impl.AbstractSubjectPushResultHandler.doHandle(AbstractSubjectPushResultHandler.java:118) ~[AbstractSubjectPushResultHandler.class:?]
at org.apache.syncope.core.sync.impl.AbstractSubjectPushResultHandler.handle(AbstractSubjectPushResultHandler.java:78) ~[AbstractSubjectPushResultHandler.class:?]
at org.apache.syncope.core.sync.impl.AbstractSubjectPushResultHandler$$FastClassBySpringCGLIB$$d86e2298.invoke(<generated>) ~[spring-core-4.0.7.RELEASE.jar:?]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) ~[spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) ~[spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) ~[spring-tx-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) ~[spring-aop-4.0.7.RELEASE.jar:4.0.7.RELEASE]
at org.apache.syncope.core.sync.impl.RolePushResultHandler$$EnhancerBySpringCGLIB$$86ac2e87.handle(<generated>) ~[spring-core-4.0.7.RELEASE.jar:?]
at org.apache.syncope.core.sync.impl.PushJob.executeWithSecurityContext(PushJob.java:137) ~[PushJob.class:?]
... 5 more
A workaround is to filter only roles that don't have this resource.