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 {
  
  
  

Reply via email to