Author: unico Date: Mon Oct 18 10:24:18 2004 New Revision: 55023 Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java Log: add a flag to the wrapper environment telling it whether to wrap the response or not because forwarding redirects from the treeprocessor must not be handled with a wrapped response
Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Mon Oct 18 10:24:18 2004 @@ -361,7 +361,7 @@ public ForwardEnvironmentWrapper(Environment env, ComponentManager manager, String uri, Logger logger) throws MalformedURLException { - super(env, manager, uri, logger); + super(env, manager, uri, logger, false); } public void setStatus(int statusCode) { Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java Mon Oct 18 10:24:18 2004 @@ -110,7 +110,7 @@ ComponentManager manager, boolean rawMode) throws MalformedURLException { - this(env, requestURI, queryString, logger, null, rawMode,env.getView()); + this(env, requestURI, queryString, logger, null, rawMode,env.getView(), true); } /** @@ -125,17 +125,34 @@ boolean rawMode, String view) throws MalformedURLException { - super(env.getURI(), view, env.getContext(), env.getAction()); - init(env, requestURI, queryString, logger, manager, rawMode, view); + this(env, requestURI, queryString, logger, manager, rawMode, view, true); } - private void init(Environment env, + /** + * Constructs an EnvironmentWrapper object from a Request + * and Response objects + */ + public EnvironmentWrapper(Environment env, String requestURI, String queryString, Logger logger, ComponentManager manager, boolean rawMode, - String view) + String view, + boolean wrapResponse) + throws MalformedURLException { + super(env.getURI(), view, env.getContext(), env.getAction()); + init(env, requestURI, queryString, logger, manager, rawMode, view, wrapResponse); + } + + private void init(Environment env, + String requestURI, + String queryString, + Logger logger, + ComponentManager manager, + boolean rawMode, + String view, + boolean wrapResponse) throws MalformedURLException { // super(env.getURI(), view, env.getContext(), env.getAction()); this.rootContext = env.getRootContext(); @@ -164,13 +181,14 @@ queryString, this, rawMode); - Response response = new ResponseWrapper(ObjectModelHelper.getResponse(oldObjectModel)); this.objectModel.put(ObjectModelHelper.REQUEST_OBJECT, this.request); - this.objectModel.put(ObjectModelHelper.RESPONSE_OBJECT, response); - + if (wrapResponse) { + Response response = new ResponseWrapper(ObjectModelHelper.getResponse(oldObjectModel)); + this.objectModel.put(ObjectModelHelper.RESPONSE_OBJECT, response); + } } - public EnvironmentWrapper(Environment env, ComponentManager manager, String uri, Logger logger) throws MalformedURLException { + public EnvironmentWrapper(Environment env, ComponentManager manager, String uri, Logger logger, boolean wrapResponse) throws MalformedURLException { super(env.getURI(), env.getView(), env.getContext(), env.getAction()); // FIXME(SW): code stolen from SitemapSource. Factorize somewhere... @@ -249,7 +267,7 @@ // this.protocol + "://" + requestURI : // this.protocol + "://" + requestURI + "?" + queryString; - this.init(env, requestURI, queryString, logger, manager, rawMode, view); + this.init(env, requestURI, queryString, logger, manager, rawMode, view, wrapResponse); this.setURI(prefix, uri); }