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 2007/12/16 15:11:13 UTC
svn commit: r604625 - in /jakarta/httpcomponents/httpcore/trunk: ./
module-main/src/main/java/org/apache/http/entity/
module-main/src/main/java/org/apache/http/message/
module-main/src/main/java/org/apache/http/params/
module-main/src/test/java/org/apa...
Author: olegk
Date: Sun Dec 16 06:11:11 2007
New Revision: 604625
URL: http://svn.apache.org/viewvc?rev=604625&view=rev
Log:
HTTPCORE-133: Clone support for basic HTTP message elements and non-streaming entities
Modified:
jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeader.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElement.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicNameValuePair.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicRequestLine.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicStatusLine.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BufferedHeader.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderGroup.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/BasicHttpParams.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeader.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderElement.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderGroup.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestNameValuePair.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestRequestLine.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestStatusLine.java
Modified: jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original)
+++ jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Sun Dec 16 06:11:11 2007
@@ -1,5 +1,9 @@
Changes since 4.0 Alpha 6
+* [HTTPCORE-133] Clone support for basic HTTP message elements and
+ non-streaming entities.
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
+
* [HTTPCORE-127] Improved API for lifecycle management of listening I/O
reactors. One can now suspend and resume listener endpoints.
Contributed by Asankha C. Perera <asankha at wso2.com>
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/ByteArrayEntity.java Sun Dec 16 06:11:11 2007
@@ -45,7 +45,7 @@
*
* @since 4.0
*/
-public class ByteArrayEntity extends AbstractHttpEntity {
+public class ByteArrayEntity extends AbstractHttpEntity implements Cloneable {
protected final byte[] content;
@@ -87,5 +87,8 @@
return false;
}
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
} // class ByteArrayEntity
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/FileEntity.java Sun Dec 16 06:11:11 2007
@@ -46,7 +46,7 @@
*
* @since 4.0
*/
-public class FileEntity extends AbstractHttpEntity {
+public class FileEntity extends AbstractHttpEntity implements Cloneable {
protected final File file;
@@ -95,6 +95,12 @@
*/
public boolean isStreaming() {
return false;
+ }
+
+ public Object clone() throws CloneNotSupportedException {
+ // File instance is considered immutable
+ // No need to make a copy of it
+ return super.clone();
}
} // class FileEntity
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/entity/StringEntity.java Sun Dec 16 06:11:11 2007
@@ -48,7 +48,7 @@
*
* @since 4.0
*/
-public class StringEntity extends AbstractHttpEntity {
+public class StringEntity extends AbstractHttpEntity implements Cloneable {
protected final byte[] content;
@@ -97,6 +97,10 @@
*/
public boolean isStreaming() {
return false;
+ }
+
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
}
} // class StringEntity
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeader.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeader.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeader.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeader.java Sun Dec 16 06:11:11 2007
@@ -63,7 +63,7 @@
*
* @since 4.0
*/
-public class BasicHeader implements Header {
+public class BasicHeader implements Header, Cloneable {
/**
* Header name.
@@ -136,4 +136,8 @@
}
}
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElement.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElement.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElement.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicHeaderElement.java Sun Dec 16 06:11:11 2007
@@ -80,7 +80,7 @@
*
* @since 4.0
*/
-public class BasicHeaderElement implements HeaderElement {
+public class BasicHeaderElement implements HeaderElement, Cloneable {
private final String name;
private final String value;
@@ -233,5 +233,11 @@
return buffer.toString();
}
+ public Object clone() throws CloneNotSupportedException {
+ // parameters array is considered immutable
+ // no need to make a copy of it
+ return super.clone();
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicNameValuePair.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicNameValuePair.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicNameValuePair.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicNameValuePair.java Sun Dec 16 06:11:11 2007
@@ -103,7 +103,7 @@
* @author <a href="mailto:oleg at ural.com">Oleg Kalnichevski</a>
*
*/
-public class BasicNameValuePair implements NameValuePair {
+public class BasicNameValuePair implements NameValuePair, Cloneable {
private final String name;
private final String value;
@@ -182,4 +182,8 @@
return hash;
}
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicRequestLine.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicRequestLine.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicRequestLine.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicRequestLine.java Sun Dec 16 06:11:11 2007
@@ -47,7 +47,7 @@
*
* @since 4.0
*/
-public class BasicRequestLine implements RequestLine {
+public class BasicRequestLine implements RequestLine, Cloneable {
private final ProtocolVersion protoversion;
private final String method;
@@ -91,4 +91,9 @@
return BasicLineFormatter.DEFAULT
.formatRequestLine(null, this).toString();
}
+
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicStatusLine.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicStatusLine.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicStatusLine.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BasicStatusLine.java Sun Dec 16 06:11:11 2007
@@ -50,7 +50,7 @@
*
* @since 4.0
*/
-public class BasicStatusLine implements StatusLine {
+public class BasicStatusLine implements StatusLine, Cloneable {
// ----------------------------------------------------- Instance Variables
@@ -116,4 +116,9 @@
return BasicLineFormatter.DEFAULT
.formatStatusLine(null, this).toString();
}
+
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BufferedHeader.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BufferedHeader.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BufferedHeader.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/BufferedHeader.java Sun Dec 16 06:11:11 2007
@@ -46,7 +46,7 @@
* <!-- empty lines above to avoid 'svn diff' context problems -->
* @version $Revision$ $Date$
*/
-public class BufferedHeader implements FormattedHeader {
+public class BufferedHeader implements FormattedHeader, Cloneable {
/**
* Header name.
@@ -124,4 +124,10 @@
return this.buffer.toString();
}
+ public Object clone() throws CloneNotSupportedException {
+ // buffer is considered immutable
+ // no need to make a copy of it
+ return super.clone();
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderGroup.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderGroup.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderGroup.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/message/HeaderGroup.java Sun Dec 16 06:11:11 2007
@@ -47,7 +47,7 @@
*
* @since 4.0
*/
-public class HeaderGroup {
+public class HeaderGroup implements Cloneable {
/** The list of headers for this group, in the order in which they were added */
private List headers;
@@ -272,6 +272,12 @@
*/
public HeaderIterator iterator(final String name) {
return new BasicListHeaderIterator(this.headers, name);
+ }
+
+ public Object clone() throws CloneNotSupportedException {
+ HeaderGroup clone = (HeaderGroup) super.clone();
+ clone.headers = new ArrayList(this.headers);
+ return clone;
}
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/BasicHttpParams.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/BasicHttpParams.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/BasicHttpParams.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/params/BasicHttpParams.java Sun Dec 16 06:11:11 2007
@@ -52,7 +52,7 @@
public final class BasicHttpParams extends AbstractHttpParams
implements HttpLinkedParams, Serializable, Cloneable {
- static final long serialVersionUID = 4571099216197814749L;
+ private static final long serialVersionUID = 4571099216197814749L;
/**
* The optional set of default values to defer to.
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeader.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeader.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeader.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeader.java Sun Dec 16 06:11:11 2007
@@ -105,5 +105,12 @@
assertEquals(0, elements.length);
}
+ public void testCloning() throws Exception {
+ BasicHeader orig = new BasicHeader("name1", "value1");
+ BasicHeader clone = (BasicHeader) orig.clone();
+ assertEquals(orig.getName(), clone.getName());
+ assertEquals(orig.getValue(), clone.getValue());
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderElement.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderElement.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderElement.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderElement.java Sun Dec 16 06:11:11 2007
@@ -172,4 +172,15 @@
element = BasicHeaderValueParser.parseHeaderElement(s, null);
assertEquals(s, element.toString());
}
+
+ public void testCloning() throws Exception {
+ BasicHeaderElement orig = new BasicHeaderElement("name", "value",
+ new NameValuePair[] {
+ new BasicNameValuePair("param1", "value1"),
+ new BasicNameValuePair("param2", "value2")
+ } );
+ BasicHeaderElement clone = (BasicHeaderElement) orig.clone();
+ assertEquals(orig, clone);
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderGroup.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderGroup.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderGroup.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestHeaderGroup.java Sun Dec 16 06:11:11 2007
@@ -154,4 +154,22 @@
assertNotNull(i);
assertFalse(i.hasNext());
}
+
+ public void testCloning() throws Exception {
+ HeaderGroup orig = new HeaderGroup();
+ Header header1 = new BasicHeader("name", "value1");
+ Header header2 = new BasicHeader("name", "value2");
+ Header header3 = new BasicHeader("name", "value3");
+ orig.setHeaders(new Header[] { header1, header2, header3 });
+ HeaderGroup clone = (HeaderGroup) orig.clone();
+ Header[] headers1 = orig.getAllHeaders();
+ Header[] headers2 = clone.getAllHeaders();
+ assertNotNull(headers1);
+ assertNotNull(headers2);
+ assertEquals(headers1.length, headers2.length);
+ for (int i = 0; i < headers1.length; i++) {
+ assertEquals(headers1[i], headers2[i]);
+ }
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestNameValuePair.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestNameValuePair.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestNameValuePair.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestNameValuePair.java Sun Dec 16 06:11:11 2007
@@ -98,4 +98,11 @@
NameValuePair param2 = new BasicNameValuePair("name1", null);
assertEquals("name1", param2.toString());
}
+
+ public void testCloning() throws Exception {
+ BasicNameValuePair orig = new BasicNameValuePair("name1", "value1");
+ BasicNameValuePair clone = (BasicNameValuePair) orig.clone();
+ assertEquals(orig, clone);
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestRequestLine.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestRequestLine.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestRequestLine.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestRequestLine.java Sun Dec 16 06:11:11 2007
@@ -84,4 +84,13 @@
fail("IllegalArgumentException should have been thrown");
} catch (IllegalArgumentException e) { /* expected */ }
}
+
+ public void testCloning() throws Exception {
+ BasicRequestLine orig = new BasicRequestLine("GET", "/stuff", HttpVersion.HTTP_1_1);
+ BasicRequestLine clone = (BasicRequestLine) orig.clone();
+ assertEquals(orig.getMethod(), clone.getMethod());
+ assertEquals(orig.getUri(), clone.getUri());
+ assertEquals(orig.getProtocolVersion(), clone.getProtocolVersion());
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestStatusLine.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestStatusLine.java?rev=604625&r1=604624&r2=604625&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestStatusLine.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestStatusLine.java Sun Dec 16 06:11:11 2007
@@ -94,4 +94,13 @@
// toString uses default formatting, hence the trailing space
assertEquals("HTTP/1.1 200 ", statusline.toString());
}
+
+ public void testCloning() throws Exception {
+ BasicStatusLine orig = new BasicStatusLine(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK");
+ BasicStatusLine clone = (BasicStatusLine) orig.clone();
+ assertEquals(orig.getReasonPhrase(), clone.getReasonPhrase());
+ assertEquals(orig.getStatusCode(), clone.getStatusCode());
+ assertEquals(orig.getProtocolVersion(), clone.getProtocolVersion());
+ }
+
}