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 {