stephan 2004/03/31 02:20:01
Modified: src/blocks/javaflow/java/org/apache/cocoon/components/flow/java JavaInterpreter.java src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java PersistenceFlow.java Log: Make continuation context also available for the constructor. Note: the contructor cannot supend the continuation. Revision Changes Path 1.3 +8 -9 cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java Index: JavaInterpreter.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/JavaInterpreter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JavaInterpreter.java 30 Mar 2004 11:10:53 -0000 1.2 +++ JavaInterpreter.java 31 Mar 2004 10:20:00 -0000 1.3 @@ -135,14 +135,6 @@ Continuable flow = (Continuable) userScopes.get(method.getDeclaringClass()); - if (flow == null) { - if (getLogger().isDebugEnabled()) - getLogger().debug("create new instance of \""+method.getDeclaringClass()+"\""); - - flow = (Continuable) method.getDeclaringClass().newInstance(); - userScopes.put(method.getDeclaringClass(), flow); - } - ContinuationContext context = new ContinuationContext(); context.setObject(flow); context.setMethod(method); @@ -159,6 +151,13 @@ continuation.registerThread(); try { + if (flow == null) { + if (getLogger().isDebugEnabled()) + getLogger().debug("create new instance of \""+method.getDeclaringClass()+"\""); + + flow = (Continuable) method.getDeclaringClass().newInstance(); + context.setObject(flow); + } method.invoke(flow, new Object[0]); 1.5 +8 -12 cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/PersistenceFlow.java Index: PersistenceFlow.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/samples/flow/java/PersistenceFlow.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PersistenceFlow.java 30 Mar 2004 11:10:53 -0000 1.4 +++ PersistenceFlow.java 31 Mar 2004 10:20:00 -0000 1.5 @@ -31,9 +31,15 @@ public class PersistenceFlow extends AbstractFormFlow { - public void doInsertEmployee() throws BindingException { + private transient PersistenceBroker broker = null; + + public PersistenceFlow() { + PBFactory factory = (PBFactory)getComponent(PBFactory.ROLE); + broker = factory.defaultPersistenceBroker(); + releaseComponent(factory); + } - PersistenceBroker broker = getPersistenceBroker(); + public void doInsertEmployee() throws BindingException { // Create a empty Bean Employee employee = new Employee(); @@ -64,8 +70,6 @@ else throw new IllegalStateException("No parameter 'id'"); - PersistenceBroker broker = getPersistenceBroker(); - // Create a empty Bean Employee employee = new Employee(); // Fill some initial data to the bean @@ -99,8 +103,6 @@ else throw new IllegalStateException("No parameter 'id'"); - PersistenceBroker broker = getPersistenceBroker(); - // Create a empty Bean Employee employee = new Employee(); // Fill some initial data to the bean @@ -115,8 +117,6 @@ public void doShowEmployee() { - PersistenceBroker broker = getPersistenceBroker(); - // Query all objects ArrayList results = new ArrayList(); QueryByCriteria query = new QueryByCriteria(Employee.class, new Criteria()); @@ -127,10 +127,6 @@ Collections.sort(results, new EmployeeComparator()); // Send response to the user sendPage("page/employee-result", new VarMap().add("employee", results)); - } - - public PersistenceBroker getPersistenceBroker() { - return ((PBFactory)getComponent(PBFactory.ROLE)).defaultPersistenceBroker(); } public class EmployeeComparator implements Comparator, Continuable {