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/02/06 17:12:05 UTC

svn commit: r619047 - in /cocoon/whiteboard/micro/core: cocoon-core/src/main/resources/META-INF/cocoon/avalon/ cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/...

Author: reinhard
Date: Wed Feb  6 08:11:45 2008
New Revision: 619047

URL: http://svn.apache.org/viewvc?rev=619047&view=rev
Log:
remove SitemapSource and cocoon:/ redirects

Removed:
    cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/apache/cocoon/components/source/impl/SitemapSource.java
    cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-components/src/main/java/org/apache/cocoon/components/source/impl/SitemapSourceFactory.java
    cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/environment/internal/ForwardEnvironmentWrapper.java
    cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java
    cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/environment/wrapper/MutableEnvironmentFacade.java
Modified:
    cocoon/whiteboard/micro/core/cocoon-core/src/main/resources/META-INF/cocoon/avalon/cocoon-core-source-factories.xconf
    cocoon/whiteboard/micro/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ForwardRedirector.java
    cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java

Modified: cocoon/whiteboard/micro/core/cocoon-core/src/main/resources/META-INF/cocoon/avalon/cocoon-core-source-factories.xconf
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/micro/core/cocoon-core/src/main/resources/META-INF/cocoon/avalon/cocoon-core-source-factories.xconf?rev=619047&r1=619046&r2=619047&view=diff
==============================================================================
--- cocoon/whiteboard/micro/core/cocoon-core/src/main/resources/META-INF/cocoon/avalon/cocoon-core-source-factories.xconf (original)
+++ cocoon/whiteboard/micro/core/cocoon-core/src/main/resources/META-INF/cocoon/avalon/cocoon-core-source-factories.xconf Wed Feb  6 08:11:45 2008
@@ -33,8 +33,6 @@
                         class="org.apache.excalibur.source.impl.ResourceSourceFactory"/>
     <component-instance name="context"
                         class="org.apache.cocoon.components.source.impl.ContextSourceFactory"/>
-    <component-instance name="cocoon"
-                        class="org.apache.cocoon.components.source.impl.SitemapSourceFactory"/>
     <component-instance name="blockcontext"
                         class="org.apache.cocoon.components.source.impl.BlockContextSourceFactory"/>
     <!--

Modified: cocoon/whiteboard/micro/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ForwardRedirector.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/micro/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ForwardRedirector.java?rev=619047&r1=619046&r2=619047&view=diff
==============================================================================
--- cocoon/whiteboard/micro/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ForwardRedirector.java (original)
+++ cocoon/whiteboard/micro/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/environment/ForwardRedirector.java Wed Feb  6 08:11:45 2008
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -23,21 +23,20 @@
 import org.apache.cocoon.util.AbstractLogEnabled;
 
 /**
- * A base class for <code>Redirector</code>s that handle forward redirects, i.e. internal
- * redirects using the "cocoon:" pseudo-protocol.
  * <p>
- * Concrete subclasses have to define the <code>cocoonRedirect()</code> method.
+ * A base class for <code>Redirector</code>s that handle forward redirects.
+ * </p>
  *
  * @version $Id$
  */
-public abstract class ForwardRedirector extends AbstractLogEnabled
+public class ForwardRedirector extends AbstractLogEnabled
                                         implements Redirector, PermanentRedirector {
 
     /**
      * Was there a call to <code>redirect()</code> ?
      */
     private boolean hasRedirected = false;
-    
+
     /** The <code>Environment to use for redirection (either internal or external) */
     protected Environment env;
 
@@ -49,21 +48,14 @@
     }
 
     /**
-     * Redirects to a given URL. If this URL starts with "cocoon:", then an internal
-     * redirect is performed. Otherwise, an external redirect is send to the
-     * environment.
+     * Redirects to a given URL.
      */
     public void redirect(boolean sessionMode, String url) throws IOException, ProcessingException {
         if (getLogger().isInfoEnabled()) {
             getLogger().info("Redirecting to '" + url + "'");
         }
 
-        if (url.startsWith("cocoon:")) {
-            cocoonRedirect(url);
-        } else {
-            this.doRedirect(sessionMode, url, false, false);
-        }
-
+        this.doRedirect(sessionMode, url, false, false);
         this.hasRedirected = true;
     }
 
@@ -72,43 +64,32 @@
             getLogger().info("Redirecting to '" + url + "'");
         }
 
-        if (url.startsWith("cocoon:")) {
-            cocoonRedirect(url);
-        } else {
-            this.doRedirect(sessionMode, url, true, false);
-        }
-
+        this.doRedirect(sessionMode, url, true, false);
         this.hasRedirected = true;
     }
 
     /**
-     * Unconditionally redirects to a given URL, even it this redirector is part of a
-     * subpipeline.
+     * Unconditionally redirects to a given URL
      */
     public void globalRedirect(boolean sessionMode, String url) throws IOException, ProcessingException {
         if (getLogger().isInfoEnabled()) {
             getLogger().info("Redirecting to '" + url + "'");
         }
 
-        // FIXME : how to handle global redirect to cocoon: ?
-        if (url.startsWith("cocoon:")) {
-            cocoonRedirect(url);
-        } else {
-            this.doRedirect(sessionMode, url, false, true);
-        }
+        this.doRedirect(sessionMode, url, false, true);
         this.hasRedirected = true;
     }
 
-    protected abstract void cocoonRedirect(String uri) throws IOException, ProcessingException;
-
-    /* (non-Javadoc)
+    /**
+     * {@inheritDoc}
      * @see org.apache.cocoon.environment.Redirector#hasRedirected()
      */
     public boolean hasRedirected() {
         return this.hasRedirected;
     }
-    
-    /* (non-Javadoc)
+
+    /**
+     * {@inheritDoc}
      * @see org.apache.cocoon.environment.Redirector#sendStatus(int)
      */
     public void sendStatus(int sc) {
@@ -120,13 +101,13 @@
     /**
      * Redirect the client to new URL with session mode
      */
-    protected void doRedirect(boolean sessionmode, 
+    protected void doRedirect(boolean sessionmode,
                               String newURL,
                               boolean permanent,
                               boolean global)
     throws IOException {
         final Request request = ObjectModelHelper.getRequest(this.env.getObjectModel());
-        
+
         // check if session mode shall be activated
         if (sessionmode) {
             // The session

Modified: cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
URL: http://svn.apache.org/viewvc/cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java?rev=619047&r1=619046&r2=619047&view=diff
==============================================================================
--- cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java (original)
+++ cocoon/whiteboard/micro/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Wed Feb  6 08:11:45 2008
@@ -16,7 +16,6 @@
  */
 package org.apache.cocoon.components.treeprocessor;
 
-import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -25,21 +24,13 @@
 
 import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.service.ServiceManager;
-import org.springframework.beans.factory.config.ConfigurableBeanFactory;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.web.context.WebApplicationContext;
-
-import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.Processor;
-import org.apache.cocoon.components.source.impl.SitemapSourceInfo;
 import org.apache.cocoon.core.container.spring.avalon.AvalonUtils;
 import org.apache.cocoon.environment.Environment;
 import org.apache.cocoon.environment.ForwardRedirector;
 import org.apache.cocoon.environment.Redirector;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.environment.internal.EnvironmentHelper;
-import org.apache.cocoon.environment.internal.ForwardEnvironmentWrapper;
-import org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade;
 import org.apache.cocoon.sitemap.EnterSitemapEvent;
 import org.apache.cocoon.sitemap.EnterSitemapEventListener;
 import org.apache.cocoon.sitemap.ExecutionContext;
@@ -50,6 +41,9 @@
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.cocoon.util.location.Location;
 import org.apache.cocoon.util.location.LocationImpl;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.web.context.WebApplicationContext;
 
 /**
  * The concrete implementation of {@link Processor}, containing the evaluation tree and associated
@@ -231,8 +225,7 @@
             final Redirector oldRedirector = context.getRedirector();
             try {
                 // Build a redirector
-                TreeProcessorRedirector redirector = new TreeProcessorRedirector(environment, context);
-                context.setRedirector(redirector);
+                context.setRedirector(new ForwardRedirector(environment));
                 context.service(this.manager);
                 context.setLastProcessor(this);
 
@@ -242,7 +235,6 @@
                 // Restore old redirector
                 context.setRedirector(oldRedirector);
             }
-
         } finally {
             if (handle != null) {
                 this.sitemapExecutor.leaveSitemap(this, environment.getObjectModel());
@@ -272,57 +264,6 @@
         }
     }
 
-    protected boolean handleCocoonRedirect(String uri, Environment env, InvokeContext context)
-    throws Exception {
-        Environment environment = env;
-        // Build an environment wrapper
-        // If the current env is a facade, change the delegate and continue processing the facade, since
-        // we may have other redirects that will in turn also change the facade delegate
-
-        MutableEnvironmentFacade facade = environment instanceof MutableEnvironmentFacade ?
-            ((MutableEnvironmentFacade)environment) : null;
-
-        if (facade != null) {
-            // Consider the facade delegate (the real environment)
-            environment = facade.getDelegate();
-        }
-
-        // test if this is a call from flow
-        boolean isRedirect = (environment.getObjectModel().remove("cocoon:forward") == null);
-        final SitemapSourceInfo info = SitemapSourceInfo.parseURI(environment, uri);
-        Environment newEnv = new ForwardEnvironmentWrapper(environment, info);
-        if (isRedirect) {
-            ((ForwardEnvironmentWrapper) newEnv).setInternalRedirect(true);
-        }
-
-        if (facade != null) {
-            // Change the facade delegate
-            facade.setDelegate((ForwardEnvironmentWrapper)newEnv);
-            newEnv = facade;
-        }
-
-        // Get the processor that should process this request
-        ConcreteTreeProcessor processor;
-        if (newEnv.getURIPrefix().equals("")) {
-            processor = ((TreeProcessor)getRootProcessor()).concreteProcessor;
-        } else {
-            processor = this;
-        }
-
-        // Process the redirect
-        // No more reset since with TreeProcessorRedirector, we need to pop values from the redirect location
-        // context.reset();
-        // The following is a fix for bug #26854 and #26571
-        final boolean result = processor.process(newEnv, context);
-        if (facade != null) {
-            newEnv = facade.getDelegate();
-        }
-        if (((ForwardEnvironmentWrapper) newEnv).getRedirectURL() != null) {
-            environment.redirect(((ForwardEnvironmentWrapper) newEnv).getRedirectURL(), false, false);
-        }
-        return result;
-    }
-
     /**
      * @see org.apache.avalon.framework.activity.Disposable#dispose()
      */
@@ -350,29 +291,6 @@
                 ((ConfigurableBeanFactory)webAppContext).destroySingletons();
             }
             this.webAppContext = null;
-        }
-    }
-
-    private class TreeProcessorRedirector extends ForwardRedirector {
-        private InvokeContext context;
-
-        public TreeProcessorRedirector(Environment env, InvokeContext context) {
-            super(env);
-            this.context = context;
-        }
-
-        protected void cocoonRedirect(String uri) throws IOException, ProcessingException {
-            try {
-                ConcreteTreeProcessor.this.handleCocoonRedirect(uri, this.env, this.context);
-            } catch (IOException e) {
-                throw e;
-            } catch (ProcessingException e) {
-                throw e;
-            } catch (RuntimeException e) {
-                throw e;
-            } catch (Exception e) {
-                throw new ProcessingException(e);
-            }
         }
     }