Uploaded image for project: 'OpenMRS Core'
  1. OpenMRS Core
  2. TRUNK-3437

Cannot edit a role

    XMLWordPrintable

Details

    Description

      In my database (I don't know offhand where I got it from) I have a Clinician role that inherits from Provider.

      I've just created a new role ("API Privileges") and I want to have Clinician also inherit that role. When I make that change and click save, though, I get this stack trace:

      An Internal Error has Occurred
      org.hibernate.NonUniqueObjectException
      a different object with the same identifier value was already associated with the session: [org.openmrs.Role#Clinician]
      
      
      Consult the help document. 
      Contact your friendly neighborhood administrator if it cannot be resolved. 
      
      Hide stack trace 
      org.hibernate.engine.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:638)
      org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:305)
      org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:246)
      org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:112)
      org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
      org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
      org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
      org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:673)
      org.openmrs.api.db.hibernate.HibernateUserDAO.saveRole(HibernateUserDAO.java:227)
      org.openmrs.api.impl.UserServiceImpl.saveRole(UserServiceImpl.java:313)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:597)
      org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
      org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      $Proxy414.saveRole(Unknown Source)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:597)
      org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
      org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      org.openmrs.aop.LoggingAdvice.invoke(LoggingAdvice.java:122)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      $Proxy415.saveRole(Unknown Source)
      sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      java.lang.reflect.Method.invoke(Method.java:597)
      org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
      org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
      org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      $Proxy415.saveRole(Unknown Source)
      org.openmrs.web.controller.user.RoleFormController.onSubmit(RoleFormController.java:108)
      org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272)
      org.openmrs.web.controller.user.RoleFormController.processFormSubmission(RoleFormController.java:87)
      org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:268)
      org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
      org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
      org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
      org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
      org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
      org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
      org.openmrs.module.web.filter.ForcePasswordChangeFilter.doFilter(ForcePasswordChangeFilter.java:65)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.openmrs.module.web.filter.ModuleFilterChain.doFilter(ModuleFilterChain.java:76)
      org.openmrs.module.web.filter.ModuleFilter.doFilter(ModuleFilter.java:58)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.openmrs.web.filter.OpenmrsFilter.doFilterInternal(OpenmrsFilter.java:111)
      org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:109)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:109)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.openmrs.web.filter.StartupFilter.doFilter(StartupFilter.java:109)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
      org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
      org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
      org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
      org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
      org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      org.mortbay.jetty.Server.handle(Server.java:324)
      org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
      org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
      org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
      org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
      org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
      org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
      org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
      
      
      OpenMRS Version: 1.9.0 SNAPSHOT Build 26883
      

      Then I tried just editing the role by adding a couple of privileges, and got a similar stack trace.

      I don't know what's special about this role, because I am able to edit another role. (I haven't checked if this is broken on all roles that inherit other roles, because I don't want to mess up my database...)

      Gliffy Diagrams

        Attachments

          Issue Links

            Activity

              People

                raff Rafal Korytkowski
                darius Darius Jazayeri
                Votes:
                1 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: