Infinite Loop (bug?) in JBPM integration
genman May 22, 2009 6:58 AMI've been running some unit tests and get a StackOverflowError (infinite loop) of the following calls:
at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:154) at org.jboss.seam.Component.callComponentMethod(Component.java:2211) at org.jboss.seam.Component.unwrap(Component.java:2237) at org.jboss.seam.Component.getInstance(Component.java:2004) at org.jboss.seam.Component.getInstance(Component.java:1967) at org.jboss.seam.Component.getInstance(Component.java:1961) at org.jboss.seam.Component.getInstance(Component.java:1934) at org.jboss.seam.Component.getInstance(Component.java:1929) at org.jboss.seam.bpm.ProcessInstance.instance(ProcessInstance.java:65) at org.jboss.seam.contexts.BusinessProcessContext.getProcessInstance(BusinessProcessContext.java:229) at org.jboss.seam.contexts.BusinessProcessContext.getContextInstance(BusinessProcessContext.java:217) at org.jboss.seam.contexts.BusinessProcessContext.get(BusinessProcessContext.java:68) at org.jboss.seam.contexts.Contexts.lookupInStatefulContexts(Contexts.java:209) at org.jboss.seam.Component.getInstance(Component.java:1949) at org.jboss.seam.Component.getInstance(Component.java:1944) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50) at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166) at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44) at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:112) at org.jboss.seam.transaction.EntityTransaction.initEntityManager(EntityTransaction.java:67) at org.jboss.seam.transaction.EntityTransaction.begin(EntityTransaction.java:79) at org.jboss.seam.util.Work.workInTransaction(Work.java:42) at org.jboss.seam.bpm.ProcessInstance.getProcessInstance(ProcessInstance.java:39) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
Here's how to reproduce the issue:
From a SeamTest. Invoke the following code directly:
JbpmContext context = config.createJbpmContext(); try { GraphSession graphSession = context.getGraphSession(); ProcessInstance processInstance = graphSession.getProcessInstance(processDefinition, user.getNumber()); Token token = processInstance.getRootToken(); log.debug("before signal"); token.signal(); log.debug("after signal"); context.save(processInstance); } finally { context.close(); }
Within the signal
method, have the transition call an EL expression, e.g.
<decision name="check msg"> <transition to="foo" name="foo"> <action expression="#{user.send(messages['foo'])}"/> </transition> </decision>
Any help with this bug? Should I file a JIRA and maybe fix it myself ? :-)
This is Seam 2.2.1.GA.