stephan 2004/06/23 02:16:32
Modified: src/test/org/apache/cocoon SitemapComponentTestCase.java
src/blocks/javaflow/java/org/apache/cocoon/components/flow/java
AbstractContinuable.java ContinuationContext.java
JavaInterpreter.java
src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test
JavaFlowTestCase.java SimpleFlow.java
Log:
Add support for parameters within JavaFlow.
Revision Changes Path
1.7 +27 -9
cocoon-2.1/src/test/org/apache/cocoon/SitemapComponentTestCase.java
Index: SitemapComponentTestCase.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/test/org/apache/cocoon/SitemapComponentTestCase.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SitemapComponentTestCase.java 14 Jun 2004 14:49:25 -0000 1.6
+++ SitemapComponentTestCase.java 23 Jun 2004 09:16:31 -0000 1.7
@@ -17,10 +17,11 @@
package org.apache.cocoon;
import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
import java.io.IOException;
-import java.util.*;
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import javax.xml.transform.TransformerException;
@@ -36,7 +37,8 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.acting.Action;
import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.components.flow.*;
+import org.apache.cocoon.components.flow.AbstractInterpreter;
+import org.apache.cocoon.components.flow.FlowHelper;
import org.apache.cocoon.components.flow.Interpreter;
import org.apache.cocoon.components.source.SourceResolverAdapter;
import org.apache.cocoon.environment.ObjectModelHelper;
@@ -46,9 +48,9 @@
import org.apache.cocoon.environment.mock.MockResponse;
import org.apache.cocoon.generation.Generator;
import org.apache.cocoon.matching.Matcher;
-import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.serialization.Serializer;
import org.apache.cocoon.sitemap.PatternException;
+import org.apache.cocoon.transformation.Transformer;
import org.apache.cocoon.xml.WhitespaceFilter;
import org.apache.cocoon.xml.dom.DOMBuilder;
import org.apache.cocoon.xml.dom.DOMStreamer;
@@ -406,7 +408,7 @@
return document.toByteArray();
}
- public String callFunction(String type, String source, String function,
List params) throws Exception {
+ public String callFunction(String type, String source, String function,
Map params) throws Exception {
ComponentSelector selector = null;
Interpreter interpreter = null;
@@ -424,7 +426,15 @@
assertNotNull("Test lookup of interpreter", interpreter);
((AbstractInterpreter)interpreter).register(source);
- interpreter.callFunction(function, params, getRedirector());
+
+ ArrayList parameters = new ArrayList();
+ for (Iterator i = params.keySet().iterator(); i.hasNext();) {
+ String name = (String)i.next();
+ String value = (String)params.get(name);
+ parameters.add(new Interpreter.Argument(name, value));
+ }
+
+ interpreter.callFunction(function, parameters, getRedirector());
} catch (ComponentException ce) {
getLogger().error("Could not retrieve interpeter", ce);
@@ -439,7 +449,7 @@
return FlowHelper.getWebContinuation(getObjectModel()).getId();
}
- public String callContinuation(String type, String source, String id,
List params) throws Exception {
+ public String callContinuation(String type, String source, String id,
Map params) throws Exception {
ComponentSelector selector = null;
Interpreter interpreter = null;
@@ -457,7 +467,15 @@
assertNotNull("Test lookup of interpreter", interpreter);
((AbstractInterpreter)interpreter).register(source);
- interpreter.handleContinuation(id, params, getRedirector());
+
+ ArrayList parameters = new ArrayList();
+ for (Iterator i = params.keySet().iterator(); i.hasNext();) {
+ String name = (String)i.next();
+ String value = (String)params.get(name);
+ parameters.add(new Interpreter.Argument(name, value));
+ }
+
+ interpreter.handleContinuation(id, parameters, getRedirector());
} catch (ComponentException ce) {
getLogger().error("Could not retrieve interpreter", ce);
1.5 +6 -1
cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/AbstractContinuable.java
Index: AbstractContinuable.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/AbstractContinuable.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AbstractContinuable.java 4 May 2004 11:54:35 -0000 1.4
+++ AbstractContinuable.java 23 Jun 2004 09:16:31 -0000 1.5
@@ -17,6 +17,7 @@
import org.apache.avalon.framework.CascadingRuntimeException;
import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.components.flow.FlowHelper;
import org.apache.cocoon.components.flow.util.PipelineUtil;
@@ -109,6 +110,10 @@
public Map getObjectModel() {
return ContextHelper.getObjectModel(getContext().getAvalonContext());
+ }
+
+ public Parameters getParameters() {
+ return getContext().getParameters();
}
public void processPipelineTo(String uri, Object bizdata, OutputStream
out) {
1.2 +12 -1
cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/ContinuationContext.java
Index: ContinuationContext.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/java/org/apache/cocoon/components/flow/java/ContinuationContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ContinuationContext.java 29 Mar 2004 17:47:21 -0000 1.1
+++ ContinuationContext.java 23 Jun 2004 09:16:31 -0000 1.2
@@ -19,6 +19,7 @@
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.environment.Redirector;
@@ -38,6 +39,8 @@
private Context avalonContext;
private ServiceManager manager;
private Redirector redirector;
+
+ private Parameters parameters;
public ContinuationContext() {
}
@@ -89,4 +92,12 @@
public Redirector getRedirector() {
return redirector;
}
+
+ public Parameters getParameters() {
+ return parameters;
+ }
+
+ public void setParameters(Parameters parameters) {
+ this.parameters = parameters;
+ }
}
1.9 +15 -1
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.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JavaInterpreter.java 14 Jun 2004 14:53:56 -0000 1.8
+++ JavaInterpreter.java 23 Jun 2004 09:16:32 -0000 1.9
@@ -24,6 +24,7 @@
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.ContextHelper;
@@ -175,6 +176,12 @@
context.setLogger(getLogger());
context.setServiceManager(manager);
context.setRedirector(redirector);
+ Parameters parameters = new Parameters();
+ for(Iterator i=params.iterator(); i.hasNext();) {
+ Argument argument = (Argument)i.next();
+ parameters.setParameter(argument.name, argument.value);
+ }
+ context.setParameters(parameters);
Continuation continuation = new Continuation(context);
@@ -239,6 +246,13 @@
context.setLogger(getLogger());
context.setServiceManager(manager);
context.setRedirector(redirector);
+ Parameters parameters = new Parameters();
+ for(Iterator i=params.iterator(); i.hasNext();) {
+ Argument argument = (Argument)i.next();
+ parameters.setParameter(argument.name, argument.value);
+ }
+ context.setParameters(parameters);
+
Continuation continuation = new Continuation(parentContinuation,
context);
Request request = ContextHelper.getRequest(this.avalonContext);
1.2 +32 -21
cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/JavaFlowTestCase.java
Index: JavaFlowTestCase.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/JavaFlowTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JavaFlowTestCase.java 14 Jun 2004 14:53:56 -0000 1.1
+++ JavaFlowTestCase.java 23 Jun 2004 09:16:32 -0000 1.2
@@ -16,7 +16,7 @@
package org.apache.cocoon.components.flow.java.test;
-import java.util.ArrayList;
+import java.util.HashMap;
import org.apache.cocoon.SitemapComponentTestCase;
import org.apache.cocoon.components.flow.java.VarMap;
@@ -36,12 +36,12 @@
public void testSimple() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
- String id = callFunction("java", source, "simpleTest", new
ArrayList());
+ String id = callFunction("java", source, "simpleTest", new
HashMap());
getRequest().addParameter("a", "2.3");
getRedirector().reset();
- callContinuation("java", source, id, new ArrayList());
+ callContinuation("java", source, id, new HashMap());
VarMap map = (VarMap)getFlowContextObject();
@@ -55,26 +55,26 @@
public void testNew() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
- String id = callFunction("java", source, "newTest", new ArrayList());
+ String id = callFunction("java", source, "newTest", new HashMap());
}
public void testCatch() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
- String id = callFunction("java", source, "catchTest", new
ArrayList());
+ String id = callFunction("java", source, "catchTest", new HashMap());
assertEquals(getRedirector().getRedirect(), "cocoon:/getNumberA");
getRequest().addParameter("a", "bla");
getRedirector().reset();
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
assertEquals(getRedirector().getRedirect(), "cocoon:/error");
getRedirector().reset();
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
assertEquals(getRedirector().getRedirect(), "cocoon:/result");
@@ -83,7 +83,7 @@
public void testAbstract() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
- String id = callFunction("java", source, "abstractTest", new
ArrayList());
+ String id = callFunction("java", source, "abstractTest", new
HashMap());
assertEquals(getRedirector().getRedirect(), "cocoon:/parent");
}
@@ -91,62 +91,73 @@
public void testDelegate() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
- String id = callFunction("java", source, "delegateTest", new
ArrayList());
+ String id = callFunction("java", source, "delegateTest", new
HashMap());
assertEquals(getRedirector().getRedirect(),
"cocoon:/page/getNumberA");
getRequest().addParameter("a", "2");
getRedirector().reset();
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
assertEquals(getRedirector().getRedirect(),
"cocoon:/page/getNumberB");
getRequest().addParameter("b", "2");
getRedirector().reset();
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
assertEquals(getRedirector().getRedirect(),
"cocoon:/page/getOperator");
getRequest().addParameter("operator", "plus");
getRedirector().reset();
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
assertEquals(getRedirector().getRedirect(),
"cocoon:/page/displayResult");
}
public void testException() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
- String id = callFunction("java", source, "exceptionTest", new
ArrayList());
+ String id = callFunction("java", source, "exceptionTest", new
HashMap());
assertEquals(getRedirector().getRedirect(), "cocoon:/test.jxt");
try {
- callContinuation("java", source, id, new ArrayList());
+ callContinuation("java", source, id, new HashMap());
fail("Excepting a FooException");
} catch (FooException e) {}
}
public void testSimpleContinuable() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.SimpleContinuable";
- String id = callFunction("java", source, "suspendTest", new
ArrayList());
+ String id = callFunction("java", source, "suspendTest", new
HashMap());
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
}
public void testWrapperContinuable() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.WrapperContinuable";
- String id = callFunction("java", source, "wrapperTest", new
ArrayList());
+ String id = callFunction("java", source, "wrapperTest", new
HashMap());
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
}
public void testExtendedContinuable() throws Exception {
String source =
"org.apache.cocoon.components.flow.java.test.ExtendedContinuable";
- String id = callFunction("java", source, "extendedTest", new
ArrayList());
+ String id = callFunction("java", source, "extendedTest", new
HashMap());
- id = callContinuation("java", source, id, new ArrayList());
+ id = callContinuation("java", source, id, new HashMap());
+ }
+
+ public void testParameters() throws Exception {
+ String source =
"org.apache.cocoon.components.flow.java.test.SimpleFlow";
+
+ HashMap parameters = new HashMap();
+ parameters.put("p1", "abc");
+ parameters.put("p2", "def");
+ parameters.put("p3", "2.3");
+
+ String id = callFunction("java", source, "parameterTest",
parameters);
}
}
1.6 +8 -0
cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/SimpleFlow.java
Index: SimpleFlow.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/javaflow/test/org/apache/cocoon/components/flow/java/test/SimpleFlow.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SimpleFlow.java 14 Jun 2004 14:53:56 -0000 1.5
+++ SimpleFlow.java 23 Jun 2004 09:16:32 -0000 1.6
@@ -17,6 +17,8 @@
import java.util.Locale;
+import junit.framework.Assert;
+
import org.apache.cocoon.components.flow.java.*;
import org.apache.cocoon.forms.FormContext;
/*import org.apache.lucene.analysis.standard.StandardAnalyzer;
@@ -123,6 +125,12 @@
throw new FooException("test", 123);
}
}
+
+ public void doParameterTest() throws Exception {
+ Assert.assertEquals("abc", getParameters().getParameter("p1"));
+ Assert.assertEquals("def", getParameters().getParameter("p2"));
+ Assert.assertEquals(2.3f, getParameters().getParameterAsFloat("p3"),
0.1f);
+ }
}
class FooInner {