cziegeler    2004/03/18 07:08:13

  Modified:    src/java/org/apache/cocoon/environment/wrapper
                        MutableEnvironmentFacade.java
                        EnvironmentWrapper.java
               src/java/org/apache/cocoon/environment
                        AbstractEnvironment.java Environment.java
               src/java/org/apache/cocoon/components/treeprocessor
                        TreeProcessor.java
               src/test/org/apache/cocoon/environment/mock
                        MockEnvironment.java
               src/java/org/apache/cocoon/components/treeprocessor/sitemap
                        PipelineNode.java
  Log:
  Better solution for the new internal redirect handling
  
  Revision  Changes    Path
  1.7       +8 -1      
cocoon-2.1/src/java/org/apache/cocoon/environment/wrapper/MutableEnvironmentFacade.java
  
  Index: MutableEnvironmentFacade.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/environment/wrapper/MutableEnvironmentFacade.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MutableEnvironmentFacade.java     5 Mar 2004 13:02:55 -0000       1.6
  +++ MutableEnvironmentFacade.java     18 Mar 2004 15:08:12 -0000      1.7
  @@ -286,6 +286,13 @@
       }
   
       /* (non-Javadoc)
  +     * @see org.apache.cocoon.environment.Environment#isInternRedirect()
  +     */
  +    public boolean isInternalRedirect() {
  +        return env.isInternalRedirect();
  +    }
  +
  +    /* (non-Javadoc)
        * @see 
org.apache.cocoon.environment.SourceResolver#resolve(java.lang.String)
        */
       public Source resolve(String systemID) throws ProcessingException, 
SAXException, IOException {
  
  
  
  1.15      +12 -5     
cocoon-2.1/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java
  
  Index: EnvironmentWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- EnvironmentWrapper.java   11 Mar 2004 14:21:56 -0000      1.14
  +++ EnvironmentWrapper.java   18 Mar 2004 15:08:12 -0000      1.15
  @@ -71,7 +71,7 @@
       
       protected String contentType;
   
  -    protected boolean external = false;
  +    protected boolean internalRedirect = false;
       
       /**
        * Constructs an EnvironmentWrapper object from a Request
  @@ -454,13 +454,20 @@
        * Always return <code>false</code>.
        */
       public boolean isExternal() {
  -        return this.external;
  +        return false;
       }
   
  -    public void setExternal(boolean flag) {
  -        this.external = flag;
  +    public void setInternalRedirect(boolean flag) {
  +        this.internalRedirect = flag;
           if ( flag ) {
               
((RequestWrapper)this.request).setRequestURI(this.prefix.toString(), this.uris);
           }
  +    }
  +
  +    /* (non-Javadoc)
  +     * @see org.apache.cocoon.environment.Environment#isInternRedirect()
  +     */
  +    public boolean isInternalRedirect() {
  +        return this.internalRedirect;
       }
   }
  
  
  
  1.19      +8 -1      
cocoon-2.1/src/java/org/apache/cocoon/environment/AbstractEnvironment.java
  
  Index: AbstractEnvironment.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/environment/AbstractEnvironment.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- AbstractEnvironment.java  5 Mar 2004 13:02:54 -0000       1.18
  +++ AbstractEnvironment.java  18 Mar 2004 15:08:12 -0000      1.19
  @@ -589,4 +589,11 @@
           }
           this.initializedComponents = false;
       }
  +    
  +    /* (non-Javadoc)
  +     * @see org.apache.cocoon.environment.Environment#isInternRedirect()
  +     */
  +    public boolean isInternalRedirect() {
  +        return false;
  +    }
   }
  
  
  
  1.7       +12 -5     
cocoon-2.1/src/java/org/apache/cocoon/environment/Environment.java
  
  Index: Environment.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/environment/Environment.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Environment.java  5 Mar 2004 13:02:54 -0000       1.6
  +++ Environment.java  18 Mar 2004 15:08:12 -0000      1.7
  @@ -199,12 +199,19 @@
       void finishingProcessing();
       
       /**
  -     * Is this environment external ? An external environment is one that is 
created in response
  -     * to an external request (http, commandline, etc.). Environments 
created by the "cocoon:"
  -     * protocol aren't external.
  +     * Is this environment external ? An external environment is one that 
  +     * is created in response to an external request (http, commandline, 
etc.). 
  +     * Environments created by the "cocoon:" protocol aren't external.
        * 
  -     * @return true is this environment is external
  +     * @return true if this environment is external
        */
       boolean isExternal();
  +    
  +    /**
  +     * Is this an internal redirect?
  +     * An environment is on internal redirect if it is an internal request
  +     * (via the cocoon: protocol) and used for a redirect.
  +     */
  +    boolean isInternalRedirect();
   }
   
  
  
  
  1.24      +2 -2      
cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java
  
  Index: TreeProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/TreeProcessor.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- TreeProcessor.java        17 Mar 2004 20:47:16 -0000      1.23
  +++ TreeProcessor.java        18 Mar 2004 15:08:12 -0000      1.24
  @@ -360,7 +360,7 @@
           }
           
           Environment newEnv = new ForwardEnvironmentWrapper(environment, 
this.manager, uri, getLogger());
  -        //((ForwardEnvironmentWrapper)newEnv).setExternal(true);
  +        ((ForwardEnvironmentWrapper)newEnv).setInternalRedirect(true);
           
           if (facade != null) {
               // Change the facade delegate
  
  
  
  1.7       +6 -0      
cocoon-2.1/src/test/org/apache/cocoon/environment/mock/MockEnvironment.java
  
  Index: MockEnvironment.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/test/org/apache/cocoon/environment/mock/MockEnvironment.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MockEnvironment.java      5 Mar 2004 13:03:03 -0000       1.6
  +++ MockEnvironment.java      18 Mar 2004 15:08:13 -0000      1.7
  @@ -222,5 +222,11 @@
           return true;
       }
   
  +    /* (non-Javadoc)
  +     * @see org.apache.cocoon.environment.Environment#isInternRedirect()
  +     */
  +    public boolean isInternalRedirect() {
  +        return false;
  +    }
   }
   
  
  
  
  1.15      +2 -2      
cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java
  
  Index: PipelineNode.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/treeprocessor/sitemap/PipelineNode.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- PipelineNode.java 11 Mar 2004 01:31:59 -0000      1.14
  +++ PipelineNode.java 18 Mar 2004 15:08:13 -0000      1.15
  @@ -136,7 +136,7 @@
               // Will be reported by CocoonServlet, rethrowing
               throw cre;
           } catch (Exception ex) {
  -            if (!externalRequest) {
  +            if (!externalRequest && !env.isInternalRedirect()) {
                   // Propagate exception on internal requests
                   throw ex;
               } else if (error404 != null && ex instanceof 
ResourceNotFoundException) {
  
  
  

Reply via email to