This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push: new 418328a412 Refactor to enforce 1-2-1 mapping between response and Coyote response 418328a412 is described below commit 418328a412008e51b0f1dd954ada6f011b5cc6f0 Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Aug 9 19:41:18 2023 +0100 Refactor to enforce 1-2-1 mapping between response and Coyote response --- java/org/apache/catalina/connector/Connector.java | 12 ++-- .../apache/catalina/connector/CoyoteAdapter.java | 6 +- java/org/apache/catalina/connector/Response.java | 70 ++++++++++------------ .../apache/catalina/connector/TestResponse.java | 46 +++++++------- .../connector/TestResponsePerformance.java | 2 +- .../apache/catalina/core/TestAsyncContextImpl.java | 2 +- .../catalina/valves/TestRequestFilterValve.java | 5 ++ .../org/apache/tomcat/unittest/TesterResponse.java | 13 ++-- 8 files changed, 72 insertions(+), 84 deletions(-) diff --git a/java/org/apache/catalina/connector/Connector.java b/java/org/apache/catalina/connector/Connector.java index 190c3aa3fa..25b3df6874 100644 --- a/java/org/apache/catalina/connector/Connector.java +++ b/java/org/apache/catalina/connector/Connector.java @@ -902,17 +902,19 @@ public class Connector extends LifecycleMBeanBase { /** - * Create (or allocate) and return a Response object suitable for receiving the contents of a Response from the - * responsible Container. + * Create and return a Response object suitable for receiving the contents of a Response from the responsible + * Container. + * + * @param coyoteResponse The associated Coyote response. * * @return a new Servlet response object */ - public Response createResponse() { + public Response createResponse(org.apache.coyote.Response coyoteResponse) { int size = protocolHandler.getDesiredBufferSize(); if (size > 0) { - return new Response(size); + return new Response(coyoteResponse, size); } else { - return new Response(); + return new Response(coyoteResponse); } } diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 5ae62570a3..da8d63a66c 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -306,8 +306,7 @@ public class CoyoteAdapter implements Adapter { // Create objects request = connector.createRequest(); request.setCoyoteRequest(req); - response = connector.createResponse(); - response.setCoyoteResponse(res); + response = connector.createResponse(res); // Link objects request.setResponse(response); @@ -453,8 +452,7 @@ public class CoyoteAdapter implements Adapter { // Create objects request = connector.createRequest(); request.setCoyoteRequest(req); - response = connector.createResponse(); - response.setCoyoteResponse(res); + response = connector.createResponse(res); // Link objects request.setResponse(response); diff --git a/java/org/apache/catalina/connector/Response.java b/java/org/apache/catalina/connector/Response.java index 124a5d67bc..db77a6971b 100644 --- a/java/org/apache/catalina/connector/Response.java +++ b/java/org/apache/catalina/connector/Response.java @@ -73,49 +73,10 @@ public class Response implements HttpServletResponse { private static final MediaTypeCache MEDIA_TYPE_CACHE = new MediaTypeCache(100); - // ----------------------------------------------------- Instance Variables - - public Response() { - this(OutputBuffer.DEFAULT_BUFFER_SIZE); - } - - - public Response(int outputBufferSize) { - outputBuffer = new OutputBuffer(outputBufferSize); - } - - - // ------------------------------------------------------------- Properties - /** * Coyote response. */ - protected org.apache.coyote.Response coyoteResponse; - - /** - * Set the Coyote response. - * - * @param coyoteResponse The Coyote response - */ - public void setCoyoteResponse(org.apache.coyote.Response coyoteResponse) { - this.coyoteResponse = coyoteResponse; - outputBuffer.setResponse(coyoteResponse); - } - - /** - * @return the Coyote response. - */ - public org.apache.coyote.Response getCoyoteResponse() { - return this.coyoteResponse; - } - - - /** - * @return the Context within which this Request is being processed. - */ - public Context getContext() { - return request.getContext(); - } + protected final org.apache.coyote.Response coyoteResponse; /** @@ -187,8 +148,37 @@ public class Response implements HttpServletResponse { private HttpServletResponse applicationResponse = null; + public Response(org.apache.coyote.Response coyoteResponse) { + this(coyoteResponse, OutputBuffer.DEFAULT_BUFFER_SIZE); + } + + + public Response(org.apache.coyote.Response coyoteResponse, int outputBufferSize) { + this.coyoteResponse = coyoteResponse; + outputBuffer = new OutputBuffer(outputBufferSize); + outputBuffer.setResponse(coyoteResponse); + } + + + // --------------------------------------------------------- Public Methods + /** + * @return the Coyote response. + */ + public org.apache.coyote.Response getCoyoteResponse() { + return this.coyoteResponse; + } + + + /** + * @return the Context within which this Request is being processed. + */ + public Context getContext() { + return request.getContext(); + } + + /** * Release all object references, and initialize instance variables, in preparation for reuse of this object. */ diff --git a/test/org/apache/catalina/connector/TestResponse.java b/test/org/apache/catalina/connector/TestResponse.java index 56ab01bb26..13f56b6a32 100644 --- a/test/org/apache/catalina/connector/TestResponse.java +++ b/test/org/apache/catalina/connector/TestResponse.java @@ -163,7 +163,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062a() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./bar.html"); @@ -176,7 +176,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062b() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("."); @@ -188,7 +188,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062c() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute(".."); @@ -200,7 +200,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062d() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute(".././.."); @@ -212,7 +212,7 @@ public class TestResponse extends TomcatBaseTest { @Test(expected=IllegalArgumentException.class) public void testBug53062e() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); resp.toAbsolute("../../.."); @@ -222,7 +222,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062f() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("bar.html"); @@ -235,7 +235,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062g() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("bar.html?x=/../"); @@ -248,7 +248,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062h() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("bar.html?x=/../../"); @@ -262,7 +262,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062i() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./.?x=/../../"); @@ -275,7 +275,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062j() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./..?x=/../../"); @@ -287,7 +287,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062k() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./..?x=/../.."); @@ -301,7 +301,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062l() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("bar.html#/../"); @@ -314,7 +314,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062m() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("bar.html#/../../"); @@ -327,7 +327,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062n() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./.#/../../"); @@ -340,7 +340,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062o() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./..#/../../"); @@ -352,7 +352,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53062p() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.toAbsolute("./..#/../.."); @@ -365,7 +365,7 @@ public class TestResponse extends TomcatBaseTest { Request req = new TesterRequest(true); req.setRequestedSessionId("1234"); req.setRequestedSessionURL(true); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.encodeURL(location); @@ -472,7 +472,7 @@ public class TestResponse extends TomcatBaseTest { Request req = new TesterRequest(true); req.setRequestedSessionId("1234"); req.setRequestedSessionURL(true); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.encodeRedirectURL(location); @@ -599,8 +599,7 @@ public class TestResponse extends TomcatBaseTest { // Note: Not sufficient for testing relative -> absolute Connector connector = new Connector(); org.apache.coyote.Response cResponse = new org.apache.coyote.Response(); - Response response = new Response(); - response.setCoyoteResponse(cResponse); + Response response = new Response(cResponse); Request request = new Request(connector); org.apache.coyote.Request cRequest = new org.apache.coyote.Request(); request.setCoyoteRequest(cRequest); @@ -617,7 +616,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53469a() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.encodeURL("../bar.html"); @@ -629,7 +628,7 @@ public class TestResponse extends TomcatBaseTest { @Test public void testBug53469b() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); String result = resp.encodeURL("../../../../bar.html"); @@ -963,8 +962,7 @@ public class TestResponse extends TomcatBaseTest { private Response setupResponse() { Connector connector = new Connector(); org.apache.coyote.Response cResponse = new org.apache.coyote.Response(); - Response response = new Response(); - response.setCoyoteResponse(cResponse); + Response response = new Response(cResponse); Request request = new Request(connector); org.apache.coyote.Request cRequest = new org.apache.coyote.Request(); request.setCoyoteRequest(cRequest); diff --git a/test/org/apache/catalina/connector/TestResponsePerformance.java b/test/org/apache/catalina/connector/TestResponsePerformance.java index 044fcfd3da..100a20b38f 100644 --- a/test/org/apache/catalina/connector/TestResponsePerformance.java +++ b/test/org/apache/catalina/connector/TestResponsePerformance.java @@ -31,7 +31,7 @@ public class TestResponsePerformance extends LoggingBaseTest { @Test public void testToAbsolutePerformance() throws Exception { Request req = new TesterRequest(); - Response resp = new Response(); + Response resp = new Response(null); resp.setRequest(req); // Warm up diff --git a/test/org/apache/catalina/core/TestAsyncContextImpl.java b/test/org/apache/catalina/core/TestAsyncContextImpl.java index 23f36dfb60..ae24190742 100644 --- a/test/org/apache/catalina/core/TestAsyncContextImpl.java +++ b/test/org/apache/catalina/core/TestAsyncContextImpl.java @@ -2551,7 +2551,7 @@ public class TestAsyncContextImpl extends TomcatBaseTest { } }; final Context context = new TesterContext(); - final Response response = new Response(); + final Response response = new Response(null); final Request request = new Request(null); request.setCoyoteRequest(new org.apache.coyote.Request()); request.getMappingData().context = context; diff --git a/test/org/apache/catalina/valves/TestRequestFilterValve.java b/test/org/apache/catalina/valves/TestRequestFilterValve.java index 2deb7db5a4..eb83ed1d9c 100644 --- a/test/org/apache/catalina/valves/TestRequestFilterValve.java +++ b/test/org/apache/catalina/valves/TestRequestFilterValve.java @@ -79,6 +79,11 @@ public class TestRequestFilterValve { } public static class MockResponse extends Response { + + public MockResponse() { + super(null); + } + private int status = OK; @Override diff --git a/test/org/apache/tomcat/unittest/TesterResponse.java b/test/org/apache/tomcat/unittest/TesterResponse.java index 59f79ee315..68b862d14e 100644 --- a/test/org/apache/tomcat/unittest/TesterResponse.java +++ b/test/org/apache/tomcat/unittest/TesterResponse.java @@ -26,6 +26,10 @@ import org.apache.catalina.connector.Response; */ public class TesterResponse extends Response { + public TesterResponse() { + super(new org.apache.coyote.Response()); + } + @Override public boolean isCommitted() { return false; @@ -47,15 +51,6 @@ public class TesterResponse extends Response { // on one being present or on this method resetting it. } - @Override - public org.apache.coyote.Response getCoyoteResponse() { - // Lazy init - if (super.getCoyoteResponse() == null) { - this.coyoteResponse = new org.apache.coyote.Response(); - } - return super.getCoyoteResponse(); - } - @Override public void setSuspended(boolean suspended) { // NO-OP by default. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org