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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]