Class clazz = loader.loadClass("org.apache.cocoon.components.flow.java.test.SimpleFlow");
Continuable flow = (Continuable) clazz.newInstance();
Method method = clazz.getMethod("testDelegate", new Class[0]);
Continuation c = new Continuation(method.getName(), context);
assertTrue(!c.isRestoring());
assertTrue(!c.isCapturing());
System.out.println("*** start flow");
c.registerThread();
method.invoke(flow, new Object[0]);
if (c.isCapturing())
c.getStack().popReference();
c.deregisterThread();
System.out.println("*** return from flow");
System.out.println();
assertTrue(!c.isRestoring());
assertTrue(c.isCapturing());
assertEquals(redirector.getRedirect(), "cocoon:/page/getNumberA");
request.addParameter("a", "2");
redirector.reset();
c = new Continuation(c, context);
assertTrue(c.isRestoring());
assertTrue(!c.isCapturing());
System.out.println();
System.out.println("*** resume flow");
c.registerThread();
method.invoke(flow, new Object[0]);
if (c.isCapturing())
c.getStack().popReference();
c.deregisterThread();
System.out.println("*** return from flow");
System.out.println();
assertTrue(!c.isRestoring());
assertTrue(c.isCapturing());
assertEquals(redirector.getRedirect(), "cocoon:/page/getNumberB");
request.addParameter("b", "2");
redirector.reset();
c = new Continuation(c, context);
assertTrue(c.isRestoring());
assertTrue(!c.isCapturing());
System.out.println();
System.out.println("*** resume flow");
c.registerThread();
method.invoke(flow, new Object[0]);
if (c.isCapturing())
c.getStack().popReference();
c.deregisterThread();
System.out.println("*** return from flow");
System.out.println();
assertTrue(!c.isRestoring());
assertTrue(c.isCapturing());
assertEquals(redirector.getRedirect(), "cocoon:/page/getOperator");
request.addParameter("operator", "plus");
redirector.reset();
c = new Continuation(c, context);
assertTrue(c.isRestoring());
assertTrue(!c.isCapturing());
System.out.println();
System.out.println("*** resume flow");
c.registerThread();
method.invoke(flow, new Object[0]);
if (c.isCapturing())
c.getStack().popReference();
c.deregisterThread();
System.out.println("*** return from flow");
System.out.println();
assertTrue(!c.isRestoring());
assertTrue(!c.isCapturing());
assertEquals(redirector.getRedirect(), "cocoon:/page/displayResult");
}