You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2006/08/13 22:00:53 UTC

svn commit: r431222 - in /jakarta/httpcomponents/httpcore/trunk/module-main/src: main/java/org/apache/http/message/ main/java/org/apache/http/protocol/ test/java/org/apache/http/message/ test/java/org/apache/http/protocol/

Author: olegk
Date: Sun Aug 13 13:00:52 2006
New Revision: 431222

URL: http://svn.apache.org/viewvc?rev=431222&view=rev
Log:
Bug fix. HTTP version must *always* be explicitly set when creating an HTTP response object

Modified:
    jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpResponse.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicMessages.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestStandardInterceptors.java

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpResponse.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpResponse.java?rev=431222&r1=431221&r2=431222&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpResponse.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHttpResponse.java Sun Aug 13 13:00:52 2006
@@ -31,10 +31,8 @@
 
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
 import org.apache.http.HttpVersion;
 import org.apache.http.StatusLine;
-import org.apache.http.params.HttpProtocolParams;
 
 /**
  * Basic implementation of an HTTP response that can be modified.
@@ -50,19 +48,17 @@
     private StatusLine statusline = null;
     private HttpEntity entity = null;
     
-    public BasicHttpResponse() {
-        super();
-        setStatusCode(HttpStatus.SC_OK);
-    }
-
     public BasicHttpResponse(final StatusLine statusline) {
         super();
-        setStatusLine(statusline);
+        if (statusline == null) {
+            throw new IllegalArgumentException("Status line may not be null");
+        }
+        this.statusline = statusline;
     }
 
     public BasicHttpResponse(final HttpVersion ver, final int code) {
         super();
-        setStatusLine(ver, code);
+        this.statusline = new BasicStatusLine(ver, code);
     }
 
     public HttpVersion getHttpVersion() {
@@ -95,9 +91,8 @@
         if (code < 0) {
             throw new IllegalArgumentException("Status line may not be null");
         }
-        this.statusline = new BasicStatusLine(
-                HttpProtocolParams.getVersion(getParams()), 
-                code, HttpStatus.getStatusText(code));
+        HttpVersion ver = this.statusline.getHttpVersion();
+        this.statusline = new BasicStatusLine(ver, code);
     }
     
     public void setEntity(final HttpEntity entity) {

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java?rev=431222&r1=431221&r2=431222&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/protocol/HttpService.java Sun Aug 13 13:00:52 2006
@@ -47,7 +47,6 @@
 import org.apache.http.UnsupportedHttpVersionException;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.DefaultHttpResponseFactory;
-import org.apache.http.message.BasicHttpResponse;
 import org.apache.http.params.HttpParams;
 
 /**
@@ -140,9 +139,8 @@
 
                     logMessage("Expected 100 (Continue)");
                     
-                    BasicHttpResponse ack = new BasicHttpResponse();
+                    HttpResponse ack = this.responseFactory.newHttpResponse(ver, HttpStatus.SC_CONTINUE);
                     ack.getParams().setDefaults(this.params);
-                    ack.setStatusCode(HttpStatus.SC_CONTINUE);
                     this.conn.sendResponseHeader(ack);
                     this.conn.flush();
                 }

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicMessages.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicMessages.java?rev=431222&r1=431221&r2=431222&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicMessages.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicMessages.java Sun Aug 13 13:00:52 2006
@@ -64,12 +64,7 @@
     }
 
     public void testDefaultResponseConstructors() {
-        HttpResponse response = new BasicHttpResponse();
-        assertNotNull(response.getHttpVersion());
-        assertNotNull(response.getStatusLine());
-        assertEquals(200, response.getStatusLine().getStatusCode());
-        
-        response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST);
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST);
         assertNotNull(response.getHttpVersion());
         assertEquals(HttpVersion.HTTP_1_0, response.getHttpVersion());
         assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusLine().getStatusCode());
@@ -83,41 +78,38 @@
     }
 
     public void testSetResponseStatus() {
-        HttpResponse response = new BasicHttpResponse();
-        response.setStatusCode(200);
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200);
         assertNotNull(response.getHttpVersion());
         assertNotNull(response.getStatusLine());
         assertEquals(200, response.getStatusLine().getStatusCode());
         
-        response = new BasicHttpResponse();
-        response.setStatusLine(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST);
+        response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_BAD_REQUEST);
         assertNotNull(response.getHttpVersion());
         assertEquals(HttpVersion.HTTP_1_0, response.getHttpVersion());
         assertEquals(HttpStatus.SC_BAD_REQUEST, response.getStatusLine().getStatusCode());
         
-        response = new BasicHttpResponse();
-        response.setStatusLine(new BasicStatusLine(
+        response = new BasicHttpResponse(new BasicStatusLine(
                 HttpVersion.HTTP_1_1, HttpStatus.SC_INTERNAL_SERVER_ERROR, "whatever"));
         assertNotNull(response.getHttpVersion());
         assertEquals(HttpVersion.HTTP_1_1, response.getHttpVersion());
         assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, response.getStatusLine().getStatusCode());
         assertEquals("whatever", response.getStatusLine().getReasonPhrase());
         
-        response = new BasicHttpResponse();
+        response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         try {
             response.setStatusCode(-23);
             fail("IllegalArgumentException should have been thrown");
         } catch (IllegalArgumentException ex) {
             // expected
         }
-        response = new BasicHttpResponse();
+        response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         try {
             response.setStatusLine(null, 200);
             fail("IllegalArgumentException should have been thrown");
         } catch (IllegalArgumentException ex) {
             // expected
         }
-        response = new BasicHttpResponse();
+        response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         try {
             response.setStatusLine(null);
             fail("IllegalArgumentException should have been thrown");
@@ -127,7 +119,7 @@
     }
     
     public void testSetResponseEntity() {
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         assertNull(response.getEntity());
         
         HttpEntity entity = new BasicHttpEntity();

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestStandardInterceptors.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestStandardInterceptors.java?rev=431222&r1=431221&r2=431222&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestStandardInterceptors.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/protocol/TestStandardInterceptors.java Sun Aug 13 13:00:52 2006
@@ -35,6 +35,7 @@
 
 import org.apache.http.Header;
 import org.apache.http.HttpHost;
+import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.HttpVersion;
 import org.apache.http.ProtocolException;
@@ -459,7 +460,7 @@
 
     public void testResponseConnControlNoEntity() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         ResponseConnControl interceptor = new ResponseConnControl();
         interceptor.process(response, context);
         Header header = response.getFirstHeader(HTTP.CONN_DIRECTIVE);
@@ -468,7 +469,7 @@
     
     public void testResponseConnControlEntityContentLength() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         StringEntity entity = new StringEntity("whatever");
         response.setEntity(entity);
         ResponseConnControl interceptor = new ResponseConnControl();
@@ -482,7 +483,7 @@
         BasicHttpRequest request = new BasicHttpRequest("GET", "/");
         request.addHeader(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE));
         context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         response.setEntity(entity);
         ResponseConnControl interceptor = new ResponseConnControl();
@@ -494,7 +495,7 @@
     
     public void testResponseConnControlEntityChunked() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         entity.setChunked(true);
         response.setEntity(entity);
@@ -527,7 +528,7 @@
         request.addHeader(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE));
         context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
 
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         StringEntity entity = new StringEntity("whatever");
         response.setEntity(entity);
         ResponseConnControl interceptor = new ResponseConnControl();
@@ -542,7 +543,7 @@
         BasicHttpRequest request = new BasicHttpRequest("GET", "/");
         context.setAttribute(HttpExecutionContext.HTTP_REQUEST, request);
 
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         StringEntity entity = new StringEntity("whatever");
         response.setEntity(entity);
         ResponseConnControl interceptor = new ResponseConnControl();
@@ -589,7 +590,8 @@
             // expected
         }
         try {
-            interceptor.process(new BasicHttpResponse(), null);
+            HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
+            interceptor.process(response, null);
             fail("IllegalArgumentException should have been thrown");
         } catch (IllegalArgumentException ex) {
             // expected
@@ -598,7 +600,7 @@
 
     public void testResponseContentNoEntity() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         ResponseContent interceptor = new ResponseContent();
         interceptor.process(response, context);
         Header header = response.getFirstHeader(HTTP.CONTENT_LEN);
@@ -608,7 +610,7 @@
     
     public void testResponseContentStatusNoContent() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         response.setStatusCode(HttpStatus.SC_NO_CONTENT);
         ResponseContent interceptor = new ResponseContent();
         interceptor.process(response, context);
@@ -618,7 +620,7 @@
     
     public void testResponseContentStatusResetContent() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         response.setStatusCode(HttpStatus.SC_RESET_CONTENT);
         ResponseContent interceptor = new ResponseContent();
         interceptor.process(response, context);
@@ -628,7 +630,7 @@
 
     public void testResponseContentStatusNotModified() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         response.setStatusCode(HttpStatus.SC_NOT_MODIFIED);
         ResponseContent interceptor = new ResponseContent();
         interceptor.process(response, context);
@@ -638,7 +640,7 @@
 
     public void testResponseContentEntityChunked() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         entity.setChunked(true);
         response.setEntity(entity);
@@ -653,7 +655,7 @@
     
     public void testResponseContentEntityContentLenghtDelimited() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         entity.setContentLength (10);
         response.setEntity(entity);
@@ -668,7 +670,7 @@
     
     public void testResponseContentEntityUnknownContentLength() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         response.setEntity(entity);
         ResponseContent interceptor = new ResponseContent();
@@ -695,7 +697,7 @@
 
     public void testResponseContentEntityNoContentTypeAndEncoding() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         response.setEntity(entity);
         ResponseContent interceptor = new ResponseContent();
@@ -708,7 +710,7 @@
         
     public void testResponseContentEntityContentTypeAndEncoding() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         BasicHttpEntity entity = new BasicHttpEntity();
         entity.setContentEncoding("whatever");
         entity.setContentType("whatever");
@@ -737,7 +739,7 @@
         ResponseContent interceptor = new ResponseContent();
         HttpContext context = new HttpExecutionContext(null);
         try {
-            BasicHttpResponse response = new BasicHttpResponse();
+            HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
             response.addHeader(new BasicHeader(HTTP.CONTENT_LEN, "10"));
             interceptor.process(response, context);
             fail("ProtocolException should have been thrown");
@@ -745,7 +747,7 @@
             // expected
         }
         try {
-            BasicHttpResponse response = new BasicHttpResponse();
+            HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
             response.addHeader(new BasicHeader(HTTP.TRANSFER_ENCODING, "stuff"));
             interceptor.process(response, context);
             fail("ProtocolException should have been thrown");
@@ -756,7 +758,7 @@
 
     public void testResponseDateGenerated() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         ResponseDate interceptor = new ResponseDate();
         interceptor.process(response, context);
         Header h1 = response.getFirstHeader(HTTP.DATE_DIRECTIVE);
@@ -768,7 +770,7 @@
         
     public void testResponseDateNotGenerated() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         response.setStatusCode(199);
         ResponseDate interceptor = new ResponseDate();
         interceptor.process(response, context);
@@ -788,7 +790,7 @@
             
     public void testResponseServerGenerated() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         response.getParams().setParameter(HttpProtocolParams.ORIGIN_SERVER, "some server");
         ResponseServer interceptor = new ResponseServer();
         interceptor.process(response, context);
@@ -799,7 +801,7 @@
         
     public void testResponseServerNotGenerated() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         response.getParams().setParameter(HttpProtocolParams.ORIGIN_SERVER, "some server");
         response.addHeader(new BasicHeader(HTTP.SERVER_DIRECTIVE, "whatever"));
         ResponseServer interceptor = new ResponseServer();
@@ -811,7 +813,7 @@
         
     public void testResponseServerMissing() throws Exception {
         HttpContext context = new HttpExecutionContext(null);
-        BasicHttpResponse response = new BasicHttpResponse();
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK);
         ResponseServer interceptor = new ResponseServer();
         interceptor.process(response, context);
         Header h1 = response.getFirstHeader(HTTP.SERVER_DIRECTIVE);