You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by re...@apache.org on 2008/04/01 15:42:16 UTC

svn commit: r643396 - in /cocoon/whiteboard/corona/trunk: corona-core/src/main/java/org/apache/cocoon/corona/pipeline/ corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/ corona-core/src/main/java/org/apache/cocoon/corona/pipeline/compo...

Author: reinhard
Date: Tue Apr  1 06:42:01 2008
New Revision: 643396

URL: http://svn.apache.org/viewvc?rev=643396&view=rev
Log:
refactor Sitemap-specific Invocation so that the pipeline API doesn't need it (source resolving still needs to be moved to JNet)

Modified:
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/AbstractPipeline.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/CachingPipeline.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/Pipeline.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/Action.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/ErrorThrowingAction.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/CachingPipelineComponent.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileGenerator.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileReaderComponent.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RedirectorComponent.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RequestParametersGenerator.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/Starter.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/XMLSerializer.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/Invocation.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/node/SerializeNode.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/resource/ClassPathResourceResolver.java
    cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/HttpContextHelper.java
    cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java
    cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
    cocoon/whiteboard/corona/trunk/corona-servlet/src/test/java/org/apache/cocoon/corona/sitemap/SitemapBuilderTest.java

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/AbstractPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/AbstractPipeline.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/AbstractPipeline.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/AbstractPipeline.java Tue Apr  1 06:42:01 2008
@@ -18,9 +18,11 @@
  */
 package org.apache.cocoon.corona.pipeline;
 
+import java.io.OutputStream;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.Map;
 
 import org.apache.cocoon.corona.pipeline.action.Action;
 import org.apache.cocoon.corona.pipeline.component.Consumer;
@@ -28,7 +30,6 @@
 import org.apache.cocoon.corona.pipeline.component.PipelineComponent;
 import org.apache.cocoon.corona.pipeline.component.Producer;
 import org.apache.cocoon.corona.pipeline.component.Starter;
-import org.apache.cocoon.corona.sitemap.Invocation;
 
 public abstract class AbstractPipeline implements Pipeline {
 
@@ -38,7 +39,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.Pipeline#addAction(org.apache.cocoon.corona.pipeline.action.Action)
      */
     public void addAction(Action action) {
@@ -47,7 +48,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.Pipeline#addComponent(org.apache.cocoon.corona.pipeline.component.PipelineComponent)
      */
     public void addComponent(PipelineComponent pipelineComponent) {
@@ -56,31 +57,28 @@
 
     /**
      * {@inheritDoc}
-     * 
-     * @see org.apache.cocoon.corona.pipeline.Pipeline#execute(org.apache.cocoon.corona.sitemap.InvocationImpl)
+     *
+     * @see org.apache.cocoon.corona.pipeline.Pipeline#execute(OutputStream)
      */
-    public void execute(Invocation invocation) throws Exception {
-        System.out.println("AbstractPipeline.execute(" + invocation.getRequestURI() + ")");
-
+    public void execute(Map<String, Object> parameters, OutputStream outputStream) throws Exception {
         // execute the actions first
         for (Action action : this.actions) {
-            System.out.println(action + ".execute(" + invocation.getRequestURI() + ")");
-            action.execute(invocation);
+            action.execute(parameters);
         }
 
         // now setup the components
-        this.setupComponents(invocation);
+        this.setupComponents(outputStream);
 
         // and execute the Starter
         Starter starter = (Starter) this.components.getFirst();
-        starter.execute(invocation);
+        starter.execute(parameters);
     }
 
     protected LinkedList<PipelineComponent> getComponents() {
         return this.components;
     }
 
-    protected void setupComponents(Invocation invocation) {
+    protected void setupComponents(OutputStream outputStream) {
         PipelineComponent first = this.components.getFirst();
 
         // first component must be a Starter
@@ -107,7 +105,7 @@
         }
 
         // configure the finisher
-        ((Finisher) last).setOutputStream(invocation.getOutputStream());
+        ((Finisher) last).setOutputStream(outputStream);
     }
 
     private void linkComponents(PipelineComponent firstComponent, PipelineComponent secondComponent) {

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/CachingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/CachingPipeline.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/CachingPipeline.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/CachingPipeline.java Tue Apr  1 06:42:01 2008
@@ -18,12 +18,15 @@
  */
 package org.apache.cocoon.corona.pipeline;
 
+import java.io.OutputStream;
+import java.util.Map;
+
+import org.apache.cocoon.corona.pipeline.caching.CacheKey;
+import org.apache.cocoon.corona.pipeline.caching.CacheValue;
 import org.apache.cocoon.corona.pipeline.caching.CachingOutputStream;
 import org.apache.cocoon.corona.pipeline.caching.CompleteCacheValue;
 import org.apache.cocoon.corona.pipeline.caching.CompoundCacheKey;
 import org.apache.cocoon.corona.pipeline.caching.PipelineCache;
-import org.apache.cocoon.corona.pipeline.caching.CacheKey;
-import org.apache.cocoon.corona.pipeline.caching.CacheValue;
 import org.apache.cocoon.corona.pipeline.component.CachingPipelineComponent;
 import org.apache.cocoon.corona.pipeline.component.PipelineComponent;
 import org.apache.cocoon.corona.sitemap.Invocation;
@@ -33,25 +36,22 @@
     private PipelineCache pipelineCache;
 
     @Override
-    public void execute(Invocation invocation) throws Exception {
+    public void execute(Map<String, Object> parameters, OutputStream outputStream) throws Exception {
         // construct the current cache key
-        CacheKey cacheKey = this.constructCacheKey(invocation);
+        CacheKey cacheKey = this.constructCacheKey(parameters);
 
         // checked for a cached value first
         CacheValue cachedValue = this.getCachedValue(cacheKey);
         if (cachedValue != null) {
             // cached value found
-            cachedValue.writeTo(invocation.getOutputStream());
+            cachedValue.writeTo(outputStream);
             return;
         }
 
         // create a caching output stream to intercept the result
-        CachingOutputStream cachingOutputStream = new CachingOutputStream(invocation.getOutputStream());
-        invocation.setOutputStream(cachingOutputStream);
+        CachingOutputStream cachingOutputStream = new CachingOutputStream(outputStream);
         // execute the pipeline
-        super.execute(invocation);
-        // reset the output stream
-        invocation.setOutputStream(cachingOutputStream.getOutputStream());
+        super.execute(parameters, cachingOutputStream);
 
         this.pipelineCache.put(cacheKey, new CompleteCacheValue(cachingOutputStream.getContent()));
     }
@@ -60,14 +60,14 @@
         this.pipelineCache = pipelineCache;
     }
 
-    private CacheKey constructCacheKey(Invocation invocation) {
+    private CacheKey constructCacheKey(Map<String, Object> parameters) {
         CompoundCacheKey result = new CompoundCacheKey();
 
         for (PipelineComponent pipelineComponent : this.getComponents()) {
             if (pipelineComponent instanceof CachingPipelineComponent) {
                 CachingPipelineComponent cachablePipelineComponent = (CachingPipelineComponent) pipelineComponent;
 
-                result.addCacheKey(cachablePipelineComponent.constructCacheKey(invocation));
+                result.addCacheKey(cachablePipelineComponent.constructCacheKey(parameters));
                 continue;
             }
 

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/Pipeline.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/Pipeline.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/Pipeline.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/Pipeline.java Tue Apr  1 06:42:01 2008
@@ -18,9 +18,11 @@
  */
 package org.apache.cocoon.corona.pipeline;
 
+import java.io.OutputStream;
+import java.util.Map;
+
 import org.apache.cocoon.corona.pipeline.action.Action;
 import org.apache.cocoon.corona.pipeline.component.PipelineComponent;
-import org.apache.cocoon.corona.sitemap.Invocation;
 
 public interface Pipeline {
 
@@ -28,6 +30,6 @@
 
     void addComponent(PipelineComponent pipelineComponent);
 
-    void execute(Invocation invocation) throws Exception;
+    void execute(Map<String, Object> parameters, OutputStream outputStream) throws Exception;
 
 }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/Action.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/Action.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/Action.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/Action.java Tue Apr  1 06:42:01 2008
@@ -18,9 +18,10 @@
  */
 package org.apache.cocoon.corona.pipeline.action;
 
-import org.apache.cocoon.corona.sitemap.Invocation;
+import java.util.Map;
+
 
 public interface Action {
 
-    void execute(Invocation invocation) throws Exception;
+    void execute(Map<String, Object> parameters) throws Exception;
 }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/ErrorThrowingAction.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/ErrorThrowingAction.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/ErrorThrowingAction.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/action/ErrorThrowingAction.java Tue Apr  1 06:42:01 2008
@@ -18,17 +18,18 @@
  */
 package org.apache.cocoon.corona.pipeline.action;
 
+import java.util.Map;
+
 import org.apache.cocoon.corona.sitemap.CustomException;
-import org.apache.cocoon.corona.sitemap.Invocation;
 
 public class ErrorThrowingAction implements Action {
 
     /**
      * {@inheritDoc}
      * 
-     * @see org.apache.cocoon.corona.pipeline.action.Action#execute(org.apache.cocoon.corona.sitemap.Invocation)
+     * @see org.apache.cocoon.corona.pipeline.action.Action#execute(Map)
      */
-    public void execute(Invocation invocation) throws Exception {
+    public void execute(Map<String, Object> parameters) throws Exception {
         throw new CustomException();
     }
 

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/CachingPipelineComponent.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/CachingPipelineComponent.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/CachingPipelineComponent.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/CachingPipelineComponent.java Tue Apr  1 06:42:01 2008
@@ -18,10 +18,11 @@
  */
 package org.apache.cocoon.corona.pipeline.component;
 
+import java.util.Map;
+
 import org.apache.cocoon.corona.pipeline.caching.CacheKey;
-import org.apache.cocoon.corona.sitemap.Invocation;
 
 public interface CachingPipelineComponent {
 
-    CacheKey constructCacheKey(Invocation invocation);
+    CacheKey constructCacheKey(Map<String, ? extends Object> parameters);
 }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileGenerator.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileGenerator.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileGenerator.java Tue Apr  1 06:42:01 2008
@@ -26,7 +26,7 @@
 
 import org.apache.cocoon.corona.pipeline.caching.CacheKey;
 import org.apache.cocoon.corona.pipeline.caching.TimestampCacheKey;
-import org.apache.cocoon.corona.sitemap.Invocation;
+import org.apache.cocoon.corona.sitemap.resource.ClassPathResourceResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
@@ -37,11 +37,11 @@
 
     /**
      * {@inheritDoc}
-     * 
-     * @see org.apache.cocoon.corona.pipeline.component.CachingPipelineComponent#constructCacheKey(org.apache.cocoon.corona.sitemap.Invocation)
+     *
+     * @see org.apache.cocoon.corona.pipeline.component.CachingPipelineComponent#constructCacheKey(Map)
      */
-    public CacheKey constructCacheKey(Invocation invocation) {
-        URL url = invocation.resolve(this.src);
+    public CacheKey constructCacheKey(Map<String, ? extends Object> parameters) {
+        URL url = ClassPathResourceResolver.getInstance().resolve(this.src);
         try {
             return new TimestampCacheKey(url, url.openConnection().getLastModified());
         } catch (IOException e) {
@@ -54,12 +54,12 @@
 
     /**
      * {@inheritDoc}
-     * 
-     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(org.apache.cocoon.corona.sitemap.Invocation)
+     *
+     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(Map)
      */
-    public void execute(final Invocation invocation) {
+    public void execute(Map<String, ? extends Object> parameters) {
         // resolve the "src" parameter before using it
-        URL url = invocation.resolve(this.src);
+        URL url = ClassPathResourceResolver.getInstance().resolve(this.src);
         if (url == null) {
             // failed to resolve
             throw new IllegalArgumentException("FileGenerator cannot resolve source '" + this.src + "'");
@@ -81,7 +81,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.component.AbstractXMLProducer#setParameters(java.util.Map)
      */
     @Override

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileReaderComponent.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileReaderComponent.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileReaderComponent.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/FileReaderComponent.java Tue Apr  1 06:42:01 2008
@@ -26,15 +26,15 @@
 
 import org.apache.cocoon.corona.pipeline.caching.CacheKey;
 import org.apache.cocoon.corona.pipeline.caching.TimestampCacheKey;
-import org.apache.cocoon.corona.sitemap.Invocation;
+import org.apache.cocoon.corona.sitemap.resource.ClassPathResourceResolver;
 
 public class FileReaderComponent implements Starter, Finisher, CachingPipelineComponent {
 
     private OutputStream outputStream;
     private String src;
 
-    public CacheKey constructCacheKey(Invocation invocation) {
-        URL url = invocation.resolve(this.src);
+    public CacheKey constructCacheKey(Map<String, ? extends Object> parameters) {
+        URL url = ClassPathResourceResolver.getInstance().resolve(this.src);
         try {
             return new TimestampCacheKey(url, url.openConnection().getLastModified());
         } catch (IOException e) {
@@ -47,12 +47,12 @@
 
     /**
      * {@inheritDoc}
-     * 
-     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(org.apache.cocoon.corona.sitemap.Invocation)
+     *
+     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(Map)
      */
-    public void execute(Invocation invocation) {
+    public void execute(Map<String, ? extends Object> parameters) {
         try {
-            URL url = invocation.resolve(this.src);
+            URL url = ClassPathResourceResolver.getInstance().resolve(this.src);
             if (url == null) {
                 throw new IllegalArgumentException("FileReaderComponent could not resolve '" + this.src + "'");
             }
@@ -77,7 +77,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.component.Finisher#setOutputStream(java.io.OutputStream)
      */
     public void setOutputStream(OutputStream outputStream) {
@@ -86,7 +86,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.component.PipelineComponent#setParameters(java.util.Map)
      */
     public void setParameters(Map<String, ? extends Object> parameters) {
@@ -95,7 +95,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see java.lang.Object#toString()
      */
     @Override

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RedirectorComponent.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RedirectorComponent.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RedirectorComponent.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RedirectorComponent.java Tue Apr  1 06:42:01 2008
@@ -24,7 +24,6 @@
 
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.cocoon.corona.sitemap.Invocation;
 import org.apache.cocoon.corona.sitemap.util.HttpContextHelper;
 
 public class RedirectorComponent implements Starter, Finisher {
@@ -33,11 +32,11 @@
 
     /**
      * {@inheritDoc}
-     * 
-     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(org.apache.cocoon.corona.sitemap.Invocation)
+     *
+     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(Map)
      */
-    public void execute(final Invocation invocation) {
-        HttpServletResponse response = HttpContextHelper.getResponse(invocation);
+    public void execute(Map<String, ? extends Object> parameters) {
+        HttpServletResponse response = HttpContextHelper.getResponse(parameters);
 
         try {
             String location = response.encodeRedirectURL(this.uri);
@@ -49,7 +48,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.component.Finisher#setOutputStream(java.io.OutputStream)
      */
     public void setOutputStream(OutputStream outputStream) {
@@ -57,7 +56,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.pipeline.component.PipelineComponent#setParameters(java.util.Map)
      */
     public void setParameters(Map<String, ? extends Object> parameters) {
@@ -66,7 +65,7 @@
 
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see java.lang.Object#toString()
      */
     @Override

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RequestParametersGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RequestParametersGenerator.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RequestParametersGenerator.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/RequestParametersGenerator.java Tue Apr  1 06:42:01 2008
@@ -19,10 +19,10 @@
 package org.apache.cocoon.corona.pipeline.component;
 
 import java.util.Enumeration;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.cocoon.corona.sitemap.Invocation;
 import org.apache.cocoon.corona.sitemap.InvocationException;
 import org.apache.cocoon.corona.sitemap.util.HttpContextHelper;
 import org.xml.sax.SAXException;
@@ -32,12 +32,12 @@
 
     /**
      * {@inheritDoc}
-     * 
-     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(org.apache.cocoon.corona.sitemap.Invocation)
+     *
+     * @see org.apache.cocoon.corona.pipeline.component.Starter#execute(Map)
      */
     @SuppressWarnings("unchecked")
-    public void execute(Invocation invocation) {
-        HttpServletRequest request = HttpContextHelper.getRequest(invocation);
+    public void execute(Map<String, ? extends Object> parameters) {
+        HttpServletRequest request = HttpContextHelper.getRequest(parameters);
         Enumeration<String> parameterNames = request.getParameterNames();
 
         try {

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/Starter.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/Starter.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/Starter.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/Starter.java Tue Apr  1 06:42:01 2008
@@ -18,9 +18,10 @@
  */
 package org.apache.cocoon.corona.pipeline.component;
 
-import org.apache.cocoon.corona.sitemap.Invocation;
+import java.util.Map;
+
 
 public interface Starter extends PipelineComponent {
 
-    void execute(Invocation invocation);
+    void execute(Map<String, ? extends Object> parameters);
 }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/XMLSerializer.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/XMLSerializer.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/XMLSerializer.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/pipeline/component/XMLSerializer.java Tue Apr  1 06:42:01 2008
@@ -31,7 +31,6 @@
 
 import org.apache.cocoon.corona.pipeline.caching.CacheKey;
 import org.apache.cocoon.corona.pipeline.caching.SimpleCacheKey;
-import org.apache.cocoon.corona.sitemap.Invocation;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -52,7 +51,7 @@
         this.transformerHandler.comment(ch, start, length);
     }
 
-    public CacheKey constructCacheKey(Invocation invocation) {
+    public CacheKey constructCacheKey(Map<String, ? extends Object> parameters) {
         return new SimpleCacheKey();
     }
 

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/Invocation.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/Invocation.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/Invocation.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/Invocation.java Tue Apr  1 06:42:01 2008
@@ -24,8 +24,6 @@
 
 public interface Invocation {
 
-    void addParameter(String key, Object value);
-
     void execute() throws Exception;
 
     OutputStream getOutputStream();

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/InvocationImpl.java Tue Apr  1 06:42:01 2008
@@ -38,7 +38,7 @@
 
     private OutputStream outputStream;
 
-    private Map<String, Object> parameters;
+    private Map<String, Object> parameters = new HashMap<String, Object>();
 
     private Pipeline pipeline;
 
@@ -87,20 +87,6 @@
     /**
      * {@inheritDoc}
      *
-     * @see org.apache.cocoon.corona.sitemap.Invocation#addParameter(java.lang.String,
-     *      java.lang.Object)
-     */
-    public void addParameter(String key, Object value) {
-        if (this.parameters == null) {
-            this.parameters = new HashMap<String, Object>();
-        }
-
-        this.parameters.put(key, value);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
      * @see org.apache.cocoon.corona.sitemap.Invocation#execute()
      */
     public void execute() throws Exception {
@@ -108,7 +94,7 @@
             throw new IllegalStateException("InvocationImpl has been executed without having a pipeline.");
         }
 
-        this.pipeline.execute(this);
+        this.pipeline.execute(this.parameters, this.outputStream);
     }
 
     /**

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/node/SerializeNode.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/node/SerializeNode.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/node/SerializeNode.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/node/SerializeNode.java Tue Apr  1 06:42:01 2008
@@ -45,7 +45,7 @@
         invocation.installComponent(SERIALIZER_CATEGORY + this.type, this.getParameters());
 
         if (this.statusCode != null) {
-            HttpServletResponse response = HttpContextHelper.getResponse(invocation);
+            HttpServletResponse response = HttpContextHelper.getResponse(invocation.getParameters());
             if (response != null) {
                 response.setStatus(Integer.parseInt(this.statusCode));
             }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/resource/ClassPathResourceResolver.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/resource/ClassPathResourceResolver.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/resource/ClassPathResourceResolver.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/resource/ClassPathResourceResolver.java Tue Apr  1 06:42:01 2008
@@ -22,9 +22,11 @@
 
 public class ClassPathResourceResolver implements ResourceResolver {
 
+    private static final ClassPathResourceResolver INSTANCE = new ClassPathResourceResolver();
+
     /**
      * {@inheritDoc}
-     * 
+     *
      * @see org.apache.cocoon.corona.sitemap.resource.ResourceResolver#resolve(java.lang.String)
      */
     public URL resolve(String resource) {
@@ -35,5 +37,9 @@
         }
 
         return url;
+    }
+
+    public static ResourceResolver getInstance() {
+        return INSTANCE;
     }
 }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/HttpContextHelper.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/HttpContextHelper.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/HttpContextHelper.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/main/java/org/apache/cocoon/corona/sitemap/util/HttpContextHelper.java Tue Apr  1 06:42:01 2008
@@ -18,10 +18,11 @@
  */
 package org.apache.cocoon.corona.sitemap.util;
 
+import java.util.Map;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.cocoon.corona.sitemap.Invocation;
 
 public class HttpContextHelper {
 
@@ -29,8 +30,8 @@
 
     private static final String HTTP_SERVLET_RESPONSE_KEY = HttpServletResponse.class.getName();
 
-    public static HttpServletRequest getRequest(Invocation invocation) {
-        Object parameter = invocation.getParameter(HTTP_SERVLET_REQUEST_KEY);
+    public static HttpServletRequest getRequest(Map<String, ? extends Object> parameters) {
+        Object parameter = parameters.get(HTTP_SERVLET_REQUEST_KEY);
         if (parameter instanceof HttpServletRequest) {
             return (HttpServletRequest) parameter;
         }
@@ -39,8 +40,8 @@
                 "A HttpServletRequest is not available. This might indicate an invocation outside a servlet.");
     }
 
-    public static HttpServletResponse getResponse(Invocation invocation) {
-        Object parameter = invocation.getParameter(HTTP_SERVLET_RESPONSE_KEY);
+    public static HttpServletResponse getResponse(Map<String, ? extends Object> parameters) {
+        Object parameter = parameters.get(HTTP_SERVLET_RESPONSE_KEY);
         if (parameter instanceof HttpServletResponse) {
             return (HttpServletResponse) parameter;
         }
@@ -49,11 +50,11 @@
                 "A HttpServletResponse is not available. This might indicate an invocation outside a servlet.");
     }
 
-    public static void storeRequest(HttpServletRequest httpServletRequest, Invocation invocation) {
-        invocation.addParameter(HTTP_SERVLET_REQUEST_KEY, httpServletRequest);
+    public static void storeRequest(HttpServletRequest httpServletRequest, Map<String, Object> parameters) {
+        parameters.put(HTTP_SERVLET_REQUEST_KEY, httpServletRequest);
     }
 
-    public static void storeResponse(HttpServletResponse httpServletResponse, Invocation invocation) {
-        invocation.addParameter(HTTP_SERVLET_RESPONSE_KEY, httpServletResponse);
+    public static void storeResponse(HttpServletResponse httpServletResponse, Map<String, Object> parameters) {
+        parameters.put(HTTP_SERVLET_RESPONSE_KEY, httpServletResponse);
     }
 }

Modified: cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-core/src/test/java/org/apache/cocoon/corona/pipeline/PipelineTest.java Tue Apr  1 06:42:01 2008
@@ -24,9 +24,6 @@
 import junit.framework.TestCase;
 
 import org.apache.cocoon.corona.pipeline.component.FileReaderComponent;
-import org.apache.cocoon.corona.sitemap.SpringComponentProvider;
-import org.apache.cocoon.corona.sitemap.InvocationImpl;
-import org.apache.cocoon.corona.sitemap.resource.ClassPathResourceResolver;
 
 public class PipelineTest extends TestCase {
 
@@ -43,13 +40,6 @@
         fileReaderComponent.setParameters(parameters);
         pipeline.addComponent(fileReaderComponent);
 
-        InvocationImpl invocationImpl = new InvocationImpl(System.out);
-
-        SpringComponentProvider componentProviderImpl = new SpringComponentProvider();
-        componentProviderImpl.setResourceResolver(new ClassPathResourceResolver());
-        invocationImpl.setComponentProvider(componentProviderImpl);
-
-        pipeline.execute(invocationImpl);
+        pipeline.execute(null, System.out);
     }
-
 }

Modified: cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/main/java/org/apache/cocoon/corona/servlet/SitemapServlet.java Tue Apr  1 06:42:01 2008
@@ -67,8 +67,8 @@
             InvocationImpl invocation = (InvocationImpl) this.beanFactory.getBean(Invocation.class.getName());
             // parameters
             invocation.setParameters(this.getInvocationParameters(request));
-            HttpContextHelper.storeRequest(request, invocation);
-            HttpContextHelper.storeResponse(response, invocation);
+            HttpContextHelper.storeRequest(request, invocation.getParameters());
+            HttpContextHelper.storeResponse(response, invocation.getParameters());
 
             // request
             invocation.setRequestURI(request.getRequestURI());

Modified: cocoon/whiteboard/corona/trunk/corona-servlet/src/test/java/org/apache/cocoon/corona/sitemap/SitemapBuilderTest.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/corona/trunk/corona-servlet/src/test/java/org/apache/cocoon/corona/sitemap/SitemapBuilderTest.java?rev=643396&r1=643395&r2=643396&view=diff
==============================================================================
--- cocoon/whiteboard/corona/trunk/corona-servlet/src/test/java/org/apache/cocoon/corona/sitemap/SitemapBuilderTest.java (original)
+++ cocoon/whiteboard/corona/trunk/corona-servlet/src/test/java/org/apache/cocoon/corona/sitemap/SitemapBuilderTest.java Tue Apr  1 06:42:01 2008
@@ -59,7 +59,7 @@
     public void testErrorHandlingPipeline() {
         Invocation invocation = this.buildInvocation("error-handling/custom-error-per-pipeline-error-handling");
         MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
-        HttpContextHelper.storeResponse(mockHttpServletResponse, invocation);
+        HttpContextHelper.storeResponse(mockHttpServletResponse, invocation.getParameters());
 
         this.sitemap.invoke(invocation);
         // invocation should be marked as error-invocation
@@ -74,7 +74,7 @@
     public void testGenerator() {
         Invocation invocation = this.buildInvocation("sax-pipeline/unauthorized");
         MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
-        HttpContextHelper.storeResponse(mockHttpServletResponse, invocation);
+        HttpContextHelper.storeResponse(mockHttpServletResponse, invocation.getParameters());
 
         InvocationResult invocationResult = this.sitemap.invoke(invocation);
         assertNotNull(invocationResult);
@@ -100,7 +100,7 @@
         requestParameters.put("a", "1");
         requestParameters.put("b", "2");
         requestParameters.put("c", "3");
-        HttpContextHelper.storeRequest(new MockHttpServletRequest(requestParameters), invocation);
+        HttpContextHelper.storeRequest(new MockHttpServletRequest(requestParameters), invocation.getParameters());
         this.sitemap.invoke(invocation);
         // invocation not should be marked as error-invocation
         assertFalse(invocation.isErrorInvocation());