You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@syncope.apache.org by "Massimiliano Perrone (JIRA)" <ji...@apache.org> on 2013/05/31 18:08:20 UTC

[jira] [Resolved] (SYNCOPE-381) Adding and saving roles with resources during save

     [ https://issues.apache.org/jira/browse/SYNCOPE-381?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Massimiliano Perrone resolved SYNCOPE-381.
------------------------------------------

    Resolution: Fixed

Committed revision 1488291.

                
> Adding and saving roles with resources during save
> --------------------------------------------------
>
>                 Key: SYNCOPE-381
>                 URL: https://issues.apache.org/jira/browse/SYNCOPE-381
>             Project: Syncope
>          Issue Type: Bug
>          Components: console
>    Affects Versions: 1.1.1
>         Environment: Glassfish
>            Reporter: Nik Tetteh-Lartey
>            Assignee: Massimiliano Perrone
>            Priority: Minor
>             Fix For: 1.1.2, 1.2.0
>
>
> add a new role which is connected to an ldap by a resource connector. 
> Then after pressing save the role popup window appears hung, so press save several times and eventually use the x to cancel. 
> You end up with many duplicate roles. If you delete all the duplicates until you end with one role and then try and create a new role we get the following exception thrown:
> 2013-05-31 11:13:07.514+0200 (21) StandardWrapperValve[syncope-core-rest]: PWC1406: Servlet.service() for servlet syncope-core-rest threw exception
> org.apache.syncope.core.persistence.dao.NotFoundException: Role 101
> 	at org.apache.syncope.core.rest.data.RoleDataBinder.getRoleFromId(RoleDataBinder.java:73)
> 	at org.apache.syncope.core.rest.data.RoleDataBinder$$FastClassByCGLIB$$75f19568.invoke(<generated>)
> 	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> 	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> 	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
> 	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
> 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> 	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
> 	at org.apache.syncope.core.rest.data.RoleDataBinder$$EnhancerByCGLIB$$bff86965.getRoleFromId(<generated>)
> 	at org.apache.syncope.core.rest.controller.RoleController.read(RoleController.java:109)
> 	at org.apache.syncope.core.rest.controller.RoleController$$FastClassByCGLIB$$77c6d55e.invoke(<generated>)
> 	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
> 	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> 	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
> 	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
> 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> 	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> 	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
> 	at org.apache.syncope.core.rest.controller.RoleController$$EnhancerByCGLIB$$1acaf620.read(<generated>)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
> 	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
> 	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
> 	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
> 	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
> 	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
> 	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
> 	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> 	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> 	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:201)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
> 	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> 	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
> 	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
> 	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
> 	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
> 	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
> 	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
> 	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
> 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
> 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
> 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
> 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
> 	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
> 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
> 	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
> 	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
> 	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
> 	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
> 	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
> 	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
> 	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
> 	at java.lang.Thread.run(Thread.java:662)
> WORKAROUND:
> Use the command REST interface:
> e.g.
> [nik@anvil idmRBAC]$ curl -u admin:passwoX POST http://10.0.0.183:9090/syncope/cxf/roles --data "<role><name>babar6</name></role>" -H "Content-type: application/xml"  -D /tmp/headers <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <role>
>     <attributes/>
>     <derivedAttributes/>
>     <id>117</id>
>     <propagationStatuses/>
>     <resources/>
>     <virtualAttributes/>
>     <entitlements/>
>     <inheritAccountPolicy>false</inheritAccountPolicy>
>     <inheritAttributes>false</inheritAttributes>
>     <inheritDerivedAttributes>false</inheritDerivedAttributes>
>     <inheritOwner>false</inheritOwner>
>     <inheritPasswordPolicy>false</inheritPasswordPolicy>
>     <inheritVirtualAttributes>false</inheritVirtualAttributes>
>     <name>babar6</name>
>     <parent>0</parent>
> </role>
> [nik@anvil idmRBAC]$ curl -u admin:password -H "Content-Type: application/json" -X GET http://10.0.0.183:9090/syncope/cxf/roles/{117}
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <role>
>     <attributes/>
>     <derivedAttributes/>
>     <id>117</id>
>     <propagationStatuses/>
>     <resources/>
>     <virtualAttributes/>
>     <entitlements/>
>     <inheritAccountPolicy>false</inheritAccountPolicy>
>     <inheritAttributes>false</inheritAttributes>
>     <inheritDerivedAttributes>false</inheritDerivedAttributes>
>     <inheritOwner>false</inheritOwner>
>     <inheritPasswordPolicy>false</inheritPasswordPolicy>
>     <inheritVirtualAttributes>false</inheritVirtualAttributes>
>     <name>babar6</name>
>     <parent>0</parent>
> </role>
> [nik@anvil idmRBAC]$ 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira