[seam-issues] [JBoss JIRA] (SEAMSECURITY-91) cannot delete user/role/group in idmconsole example on glassfish3.1.1

Richard Barabe (JIRA) jira-events at lists.jboss.org
Mon Apr 23 13:51:18 EDT 2012


    [ https://issues.jboss.org/browse/SEAMSECURITY-91?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12686769#comment-12686769 ] 

Richard Barabe commented on SEAMSECURITY-91:
--------------------------------------------

I just tried it with the 3.2.0-SNAPSHOT (containing the fix) and got the dreadful "Only a single ExpressionBuilder should be used for a query" again.

My use case is simple : deleting a user.

In the removeRelationships method that is called, there is two queries that are executed for the same entity class (relationshipClass) using JPA Criteria API.  The exception occurs when executing the second one, as if the first one had not finished yet (but it has).

Strangely, if I put a breakpoint between the two queries, and then proceed with execution, the exception is not raised.
Removing the breakpoint to have normal execution brings back the exception.

I tried, by curiosity, to put a Thread.sleep(200) after the execution of the first query.  With that, no problem, the two queries are executed ...

That seems to be some sort of timing in eclipselink making it think the first query haven't finished ...
I replaced my Thread.sleep with a em.flush and still no exception, but I'm sure the flush itself is not what correct the problem.

I'm using glassfish 3.1.2.

Anyone can confirm the problem ?  If so maybe that issue should be re-opened.
                
> cannot delete user/role/group in idmconsole example on glassfish3.1.1
> ---------------------------------------------------------------------
>
>                 Key: SEAMSECURITY-91
>                 URL: https://issues.jboss.org/browse/SEAMSECURITY-91
>             Project: Seam Security
>          Issue Type: Bug
>    Affects Versions: 3.1.0.Beta1, 3.1.0.Final
>         Environment: glassfish3.1.1, seam-security-3.1.0.Beta2
>            Reporter: Tomas Remes
>            Assignee: Shane Bryzak
>             Fix For: Future
>
>         Attachments: idmconsole.log
>
>
> deletion fails:
> Exception [EclipseLink-6089] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.QueryException
> Exception Description: The expression has not been initialized correctly.  Only a single ExpressionBuilder should be used for a query. 
> For parallel expressions, the query class must be provided to the ExpressionBuilder constructor, and the query's ExpressionBuilder must 
> always be on the left side of the expression. 
> Expression: [
> Base org.jboss.seam.security.examples.idmconsole.model.IdentityObjectRelationship]
> Query: ReadAllQuery(referenceClass=IdentityObjectRelationship )
> 	at org.eclipse.persistence.exceptions.QueryException.noExpressionBuilderFound(QueryException.java:877)
> 	at org.eclipse.persistence.expressions.ExpressionBuilder.getDescriptor(ExpressionBuilder.java:195)
> 	at org.eclipse.persistence.internal.expressions.DataExpression.getMapping(DataExpression.java:214)
> 	at org.eclipse.persistence.internal.expressions.QueryKeyExpression.getMapping(QueryKeyExpression.java:388)
> 	at org.eclipse.persistence.internal.expressions.RelationExpression.isObjectComparison(RelationExpression.java:452)
> 	at org.eclipse.persistence.internal.expressions.RelationExpression.normalize(RelationExpression.java:517)
> 	at org.eclipse.persistence.internal.expressions.SQLSelectStatement.normalize(SQLSelectStatement.java:1300)
> 	at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.buildNormalSelectStatement(ExpressionQueryMechanism.java:516)
> 	at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.prepareSelectAllRows(ExpressionQueryMechanism.java:1602)
> 	at org.eclipse.persistence.queries.ReadAllQuery.prepareSelectAllRows(ReadAllQuery.java:705)
> 	at org.eclipse.persistence.queries.ReadAllQuery.prepare(ReadAllQuery.java:642)
> 	at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:598)
> 	at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:839)
> 	at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:560)
> 	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:797)
> 	at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1056)
> 	at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:390)
> 	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1144)
> 	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2863)
> 	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1501)
> 	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1483)
> 	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1457)
> 	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:485)
> 	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:742)
> 	at org.jboss.seam.security.management.picketlink.JpaIdentityStore.removeRelationships(JpaIdentityStore.java:1404)
> 	at org.jboss.seam.security.management.picketlink.JpaIdentityStore.removeIdentityObject(JpaIdentityStore.java:1243)
> 	at org.picketlink.idm.impl.repository.WrapperIdentityStoreRepository.removeIdentityObject(WrapperIdentityStoreRepository.java:158)
> 	at org.picketlink.idm.impl.api.session.managers.PersistenceManagerImpl.removeUser(PersistenceManagerImpl.java:231)
> 	at org.jboss.seam.security.management.action.UserAction.deleteUser(UserAction.java:116)
> 	at org.jboss.seam.security.management.action.org$jboss$weld$bean-WEB-INF$lib$seam-security-3$1$0$Beta2-ManagedBean-org$jboss$seam$security$management$action$UserAction$@javax$enterprise$context$ConversationScoped()@javax$inject$Named(value=)${org$jboss$seam$security$management$action$UserAction$conversation$@javax$inject$Inject()$$org$jboss$seam$security$management$action$UserAction$identitySession$@javax$inject$Inject()$$org$jboss$seam$security$management$action$UserAction$deleteUser$@org$jboss$seam$transaction$Transactional(value=REQUIRED)@org$jboss$seam$transaction$TransactionalInterceptorBinding()$(java$lang$String)$org$jboss$seam$security$management$action$UserAction$save$@org$jboss$seam$transaction$Transactional(value=REQUIRED)@org$jboss$seam$transaction$TransactionalInterceptorBinding()$()$}_$$_WeldClientProxy.deleteUser(org$jboss$weld$bean-WEB-INF$lib$seam-security-3$1$0$Beta2-ManagedBean-org$jboss$seam$security$management$action$UserAction$@javax$enterprise$context$ConversationScoped()@javax$inject$Named(value=)${org$jboss$seam$security$management$action$UserAction$conversation$@javax$inject$Inject()$$org$jboss$seam$security$management$action$UserAction$identitySession$@javax$inject$Inject()$$org$jboss$seam$security$management$action$UserAction$deleteUser$@org$jboss$seam$transaction$Transactional(value=REQUIRED)@org$jboss$seam$transaction$TransactionalInterceptorBinding()$(java$lang$String)$org$jboss$seam$security$management$action$UserAction$save$@org$jboss$seam$transaction$Transactional(value=REQUIRED)@org$jboss$seam$transaction$TransactionalInterceptorBinding()$()$}_$$_WeldClientProxy.java)
> 	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 javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:737)
> 	at javax.el.BeanELResolver.invoke(BeanELResolver.java:467)
> 	at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:254)
> 	at com.sun.el.parser.AstValue.invoke(AstValue.java:228)
> 	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
> 	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:43)
> 	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:56)
> 	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
> 	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
> 	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
> 	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
> 	at javax.faces.component.UIData.broadcast(UIData.java:1093)
> 	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
> 	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
> 	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
> 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
> 	at org.jboss.seam.servlet.exception.CatchExceptionFilter.doFilter(CatchExceptionFilter.java:62)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
> 	at org.jboss.seam.servlet.event.ServletEventBridgeFilter.doFilter(ServletEventBridgeFilter.java:72)
> 	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 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
> 	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
> 	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
> 	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
> 	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
> 	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
> 	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)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the seam-issues mailing list