Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
Operating System: other
Platform: Other
-
37187
Description
I get an error whenever I include an <fd:selection-list src="cocoon:/XYZ"> where
both the form and the XYZ pipeline use JavaFlow. The error is:
No continuation is running
cause: java.lang.IllegalStateException: No continuation is running
java.lang.IllegalStateException: No continuation is running
at
org.apache.cocoon.components.flow.java.Continuation.suspend(Continuation.java:79)
at
org.apache.cocoon.components.flow.java.AbstractContinuable.sendPageAndWait(AbstractContinuable.java:75)
at org.apache.cocoon.forms.flow.java.FormInstance.show(FormInstance.java:181)
The reason is that when cocoon:/XYZ runs, a continuation is created for the same
thread as the form continuation. The continuationsmap in Continuation class gets
overwritten. When cocoon:/XYZ returns, the map is cleared for the thread,
leaving no continuation for the form.
Here's a bit of code from the app to help explain.
The form contains a selection list defined as:
<fd:field id="user">
<fd:datatype base="string"/>
<fd:selection-list src="cocoon:/UserSelectList" dynamic="true"/>
</fd:field>
The sitemap contains:
<map:match pattern="UserSelectList">
<map:call function="generateUserList"/>
</map:match>
Then I have the following JavaFlow
public void doGenerateUserList() throws Exception {
Collection userList = databaseManager.getUserList();
sendPage("user_list", new VarMap().add("list", userList) );
}