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) {