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 2012/10/16 15:30:54 UTC
svn commit: r1398785 - in /httpcomponents/httpcore/trunk/httpcore/src:
main/java/org/apache/http/ main/java/org/apache/http/impl/
main/java/org/apache/http/message/ test/java/org/apache/http/message/
Author: olegk
Date: Tue Oct 16 13:30:54 2012
New Revision: 1398785
URL: http://svn.apache.org/viewvc?rev=1398785&view=rev
Log:
Cleaned up BasicHttpResponse API
Added:
httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java (with props)
Modified:
httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/HttpResponse.java
httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpResponseFactory.java
httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/AbstractHttpMessage.java
httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicHttpResponse.java
httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestAbstractMessage.java
httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicMessages.java
Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/HttpResponse.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/HttpResponse.java?rev=1398785&r1=1398784&r2=1398785&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/HttpResponse.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/HttpResponse.java Tue Oct 16 13:30:54 2012
@@ -29,6 +29,8 @@ package org.apache.http;
import java.util.Locale;
+import org.apache.http.impl.DefaultHttpRequestFactory;
+
/**
* After receiving and interpreting a request message, a server responds
* with an HTTP response message.
@@ -150,7 +152,10 @@ public interface HttpResponse extends Ht
* It can be changed using {@link #setLocale setLocale}.
*
* @return the locale of this response, never <code>null</code>
+ *
+ * @deprecated (4.3) use {@link DefaultHttpRequestFactory}
*/
+ @Deprecated
Locale getLocale();
/**
@@ -160,8 +165,9 @@ public interface HttpResponse extends Ht
*
* @param loc the new locale
*
- * @see #getLocale getLocale
- * @see #setStatusCode setStatusCode
+ * @deprecated (4.3) use {@link DefaultHttpRequestFactory}
*/
+ @Deprecated
void setLocale(Locale loc);
+
}
Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpResponseFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpResponseFactory.java?rev=1398785&r1=1398784&r2=1398785&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpResponseFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/impl/DefaultHttpResponseFactory.java Tue Oct 16 13:30:54 2012
@@ -73,26 +73,26 @@ public class DefaultHttpResponseFactory
// non-javadoc, see interface HttpResponseFactory
- public HttpResponse newHttpResponse(final ProtocolVersion ver,
- final int status,
- HttpContext context) {
+ public HttpResponse newHttpResponse(
+ final ProtocolVersion ver,
+ final int status,
+ final HttpContext context) {
Args.notNull(ver, "HTTP version");
Locale loc = determineLocale(context);
String reason = reasonCatalog.getReason(status, loc);
StatusLine statusline = new BasicStatusLine(ver, status, reason);
- return new BasicHttpResponse(statusline, reasonCatalog, loc);
+ return new BasicHttpResponse(statusline);
}
// non-javadoc, see interface HttpResponseFactory
- public HttpResponse newHttpResponse(final StatusLine statusline,
- HttpContext context) {
+ public HttpResponse newHttpResponse(
+ final StatusLine statusline,
+ final HttpContext context) {
Args.notNull(statusline, "Status line");
- final Locale loc = determineLocale(context);
- return new BasicHttpResponse(statusline, reasonCatalog, loc);
+ return new BasicHttpResponse(statusline);
}
-
/**
* Determines the locale of the response.
* The implementation in this class always returns the default locale.
@@ -105,4 +105,5 @@ public class DefaultHttpResponseFactory
protected Locale determineLocale(HttpContext context) {
return Locale.getDefault();
}
+
}
Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/AbstractHttpMessage.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/AbstractHttpMessage.java?rev=1398785&r1=1398784&r2=1398785&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/AbstractHttpMessage.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/AbstractHttpMessage.java Tue Oct 16 13:30:54 2012
@@ -137,7 +137,10 @@ public abstract class AbstractHttpMessag
return this.headergroup.iterator(name);
}
- // non-javadoc, see interface HttpMessage
+ /**
+ * @deprecated (4.3) use constructor parameters of configuration API provided by HttpClient
+ */
+ @Deprecated
public HttpParams getParams() {
if (this.params == null) {
this.params = new BasicHttpParams();
@@ -145,7 +148,10 @@ public abstract class AbstractHttpMessag
return this.params;
}
- // non-javadoc, see interface HttpMessage
+ /**
+ * @deprecated (4.3) use constructor parameters of configuration API provided by HttpClient
+ */
+ @Deprecated
public void setParams(final HttpParams params) {
this.params = Args.notNull(params, "HTTP parameters");
}
Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicHttpResponse.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicHttpResponse.java?rev=1398785&r1=1398784&r2=1398785&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicHttpResponse.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/message/BasicHttpResponse.java Tue Oct 16 13:30:54 2012
@@ -31,27 +31,33 @@ import java.util.Locale;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
+import org.apache.http.HttpVersion;
import org.apache.http.ProtocolVersion;
import org.apache.http.ReasonPhraseCatalog;
import org.apache.http.StatusLine;
import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.impl.DefaultHttpRequestFactory;
+import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.util.Args;
/**
* Basic implementation of {@link HttpResponse}.
*
+ * @see DefaultHttpResponseFactory
+ *
* @since 4.0
*/
@NotThreadSafe
-public class BasicHttpResponse extends AbstractHttpMessage
- implements HttpResponse {
+public class BasicHttpResponse extends AbstractHttpMessage implements HttpResponse {
private StatusLine statusline;
+ private ProtocolVersion ver;
+ private int code;
+ private String reasonPhrase;
private HttpEntity entity;
private ReasonPhraseCatalog reasonCatalog;
private Locale locale;
-
/**
* Creates a new response.
* This is the constructor to which all others map.
@@ -62,14 +68,20 @@ public class BasicHttpResponse extends A
* reason phrase lookup
* @param locale the locale for looking up reason phrases, or
* <code>null</code> for the system locale
+ *
+ * @deprecated (4.3) use {@link DefaultHttpRequestFactory}
*/
+ @Deprecated
public BasicHttpResponse(final StatusLine statusline,
final ReasonPhraseCatalog catalog,
final Locale locale) {
super();
this.statusline = Args.notNull(statusline, "Status line");
+ this.ver = statusline.getProtocolVersion();
+ this.code = statusline.getStatusCode();
+ this.reasonPhrase = statusline.getReasonPhrase();
this.reasonCatalog = catalog;
- this.locale = (locale != null) ? locale : Locale.getDefault();
+ this.locale = locale;
}
/**
@@ -96,17 +108,30 @@ public class BasicHttpResponse extends A
public BasicHttpResponse(final ProtocolVersion ver,
final int code,
final String reason) {
- this(new BasicStatusLine(ver, code, reason), null, null);
+ super();
+ Args.notNegative(code, "Status code");
+ this.statusline = null;
+ this.ver = ver;
+ this.code = code;
+ this.reasonPhrase = reason;
+ this.reasonCatalog = null;
+ this.locale = null;
}
// non-javadoc, see interface HttpMessage
public ProtocolVersion getProtocolVersion() {
- return this.statusline.getProtocolVersion();
+ return this.ver;
}
// non-javadoc, see interface HttpResponse
public StatusLine getStatusLine() {
+ if (this.statusline == null) {
+ this.statusline = new BasicStatusLine(
+ this.ver != null ? this.ver : HttpVersion.HTTP_1_1,
+ this.code,
+ this.reasonPhrase != null ? this.reasonPhrase : getReason(this.code));
+ }
return this.statusline;
}
@@ -115,7 +140,10 @@ public class BasicHttpResponse extends A
return this.entity;
}
- // non-javadoc, see interface HttpResponse
+ /**
+ * @deprecated (4.3) use {@link DefaultHttpRequestFactory}
+ */
+ @Deprecated
public Locale getLocale() {
return this.locale;
}
@@ -123,35 +151,41 @@ public class BasicHttpResponse extends A
// non-javadoc, see interface HttpResponse
public void setStatusLine(final StatusLine statusline) {
this.statusline = Args.notNull(statusline, "Status line");
+ this.ver = statusline.getProtocolVersion();
+ this.code = statusline.getStatusCode();
+ this.reasonPhrase = statusline.getReasonPhrase();
}
// non-javadoc, see interface HttpResponse
public void setStatusLine(final ProtocolVersion ver, final int code) {
- // arguments checked in BasicStatusLine constructor
- this.statusline = new BasicStatusLine(ver, code, getReason(code));
+ Args.notNegative(code, "Status code");
+ this.statusline = null;
+ this.ver = ver;
+ this.code = code;
+ this.reasonPhrase = null;
}
// non-javadoc, see interface HttpResponse
- public void setStatusLine(final ProtocolVersion ver, final int code,
- final String reason) {
- // arguments checked in BasicStatusLine constructor
- this.statusline = new BasicStatusLine(ver, code, reason);
+ public void setStatusLine(
+ final ProtocolVersion ver, final int code, final String reason) {
+ Args.notNegative(code, "Status code");
+ this.statusline = null;
+ this.ver = ver;
+ this.code = code;
+ this.reasonPhrase = reason;
}
// non-javadoc, see interface HttpResponse
public void setStatusCode(int code) {
- // argument checked in BasicStatusLine constructor
- ProtocolVersion ver = this.statusline.getProtocolVersion();
- this.statusline = new BasicStatusLine(ver, code, getReason(code));
+ Args.notNegative(code, "Status code");
+ this.statusline = null;
+ this.code = code;
}
// non-javadoc, see interface HttpResponse
public void setReasonPhrase(String reason) {
- Args.check(reason == null || (reason.indexOf('\n') == 0 && reason.indexOf('\r') == 0),
- "Line break in reason phrase.");
- this.statusline = new BasicStatusLine(this.statusline.getProtocolVersion(),
- this.statusline.getStatusCode(),
- reason);
+ this.statusline = null;
+ this.reasonPhrase = reason;
}
// non-javadoc, see interface HttpResponse
@@ -159,12 +193,13 @@ public class BasicHttpResponse extends A
this.entity = entity;
}
- // non-javadoc, see interface HttpResponse
+ /**
+ * @deprecated (4.3) use {@link DefaultHttpRequestFactory}
+ */
+ @Deprecated
public void setLocale(Locale locale) {
this.locale = Args.notNull(locale, "Locale");
- final int code = this.statusline.getStatusCode();
- this.statusline = new BasicStatusLine
- (this.statusline.getProtocolVersion(), code, getReason(code));
+ this.statusline = null;
}
/**
@@ -175,15 +210,19 @@ public class BasicHttpResponse extends A
* @param code the status code for which to look up the reason
*
* @return the reason phrase, or <code>null</code> if there is none
+ *
+ * @deprecated (4.3) use {@link DefaultHttpRequestFactory}
*/
+ @Deprecated
protected String getReason(int code) {
- return (this.reasonCatalog == null) ?
- null : this.reasonCatalog.getReason(code, this.locale);
+ return this.reasonCatalog != null ? this.reasonCatalog.getReason(code,
+ this.locale != null ? this.locale : Locale.getDefault()) : null;
}
@Override
public String toString() {
- return this.statusline + " " + this.headergroup;
+ StatusLine statusline = getStatusLine();
+ return statusline + " " + this.headergroup;
}
}
Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestAbstractMessage.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestAbstractMessage.java?rev=1398785&r1=1398784&r2=1398785&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestAbstractMessage.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestAbstractMessage.java Tue Oct 16 13:30:54 2012
@@ -37,7 +37,7 @@ import org.junit.Assert;
import org.junit.Test;
/**
- * Unit tests for {@link Header}.
+ * Unit tests for {@link AbstractHttpMessage}.
*
*/
public class TestAbstractMessage {
Added: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java?rev=1398785&view=auto
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java (added)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java Tue Oct 16 13:30:54 2012
@@ -0,0 +1,101 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.message;
+
+import org.apache.http.HttpVersion;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link BasicHttpResponse}.
+ */
+public class TestBasicHttpResponse {
+
+ @Test
+ public void testBasics() {
+ BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ Assert.assertEquals(HttpVersion.HTTP_1_1, response.getProtocolVersion());
+ Assert.assertEquals(HttpVersion.HTTP_1_1, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(200, response.getStatusLine().getStatusCode());
+ Assert.assertEquals("OK", response.getStatusLine().getReasonPhrase());
+ }
+
+ @Test
+ public void testStatusLineMutation() {
+ BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ Assert.assertEquals(HttpVersion.HTTP_1_1, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(200, response.getStatusLine().getStatusCode());
+ Assert.assertEquals("OK", response.getStatusLine().getReasonPhrase());
+ response.setReasonPhrase("Kind of OK");
+ Assert.assertEquals(HttpVersion.HTTP_1_1, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(200, response.getStatusLine().getStatusCode());
+ Assert.assertEquals("Kind of OK", response.getStatusLine().getReasonPhrase());
+ response.setStatusCode(299);
+ Assert.assertEquals(HttpVersion.HTTP_1_1, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(299, response.getStatusLine().getStatusCode());
+ Assert.assertEquals("Kind of OK", response.getStatusLine().getReasonPhrase());
+ response.setStatusLine(HttpVersion.HTTP_1_0, 298);
+ Assert.assertEquals(HttpVersion.HTTP_1_0, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(298, response.getStatusLine().getStatusCode());
+ Assert.assertEquals(null, response.getStatusLine().getReasonPhrase());
+ response.setStatusLine(HttpVersion.HTTP_1_1, 200, "OK");
+ Assert.assertEquals(HttpVersion.HTTP_1_1, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(200, response.getStatusLine().getStatusCode());
+ Assert.assertEquals("OK", response.getStatusLine().getReasonPhrase());
+ response.setStatusLine(new BasicStatusLine(HttpVersion.HTTP_1_0, 500, "Boom"));
+ Assert.assertEquals(HttpVersion.HTTP_1_0, response.getStatusLine().getProtocolVersion());
+ Assert.assertEquals(500, response.getStatusLine().getStatusCode());
+ Assert.assertEquals("Boom", response.getStatusLine().getReasonPhrase());
+ }
+
+ @Test
+ public void testInvalidStatusCode() {
+ try {
+ new BasicHttpResponse(HttpVersion.HTTP_1_1, -200, "OK");
+ Assert.fail("IllegalArgumentException expected");
+ } catch (IllegalArgumentException expected) {
+ }
+ BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ try {
+ response.setStatusCode(-1);
+ Assert.fail("IllegalArgumentException expected");
+ } catch (IllegalArgumentException expected) {
+ }
+ try {
+ response.setStatusLine(HttpVersion.HTTP_1_1, -1);
+ Assert.fail("IllegalArgumentException expected");
+ } catch (IllegalArgumentException expected) {
+ }
+ try {
+ response.setStatusLine(HttpVersion.HTTP_1_1, -1, "not ok");
+ Assert.fail("IllegalArgumentException expected");
+ } catch (IllegalArgumentException expected) {
+ }
+ }
+
+}
Propchange: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicHttpResponse.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicMessages.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicMessages.java?rev=1398785&r1=1398784&r2=1398785&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicMessages.java (original)
+++ httpcomponents/httpcore/trunk/httpcore/src/test/java/org/apache/http/message/TestBasicMessages.java Tue Oct 16 13:30:54 2012
@@ -86,13 +86,6 @@ public class TestBasicMessages {
}
response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK");
try {
- response.setStatusLine(null, 200);
- Assert.fail("IllegalArgumentException should have been thrown");
- } catch (IllegalArgumentException ex) {
- // expected
- }
- response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK");
- try {
response.setStatusLine(null);
Assert.fail("IllegalArgumentException should have been thrown");
} catch (IllegalArgumentException ex) {