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 2005/10/12 23:32:48 UTC
svn commit: r315053 - in /jakarta/httpclient/trunk/http-common/src:
java/org/apache/http/ java/org/apache/http/entity/
java/org/apache/http/impl/ java/org/apache/http/impl/io/
java/org/apache/http/util/ test/org/apache/http/util/
Author: olegk
Date: Wed Oct 12 14:32:29 2005
New Revision: 315053
URL: http://svn.apache.org/viewcvs?rev=315053&view=rev
Log:
* Added non-synchronized CharArrayBuffer class
* Changed existing classes to use CharArrayBuffer instead of StringBuffer
* Added test cases for ByteArrayBuffer and CharArrayBuffer classes
Added:
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java (with props)
jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java (with props)
jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java (with props)
Modified:
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/Header.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpHost.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpVersion.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/NameValuePair.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/RequestLine.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/StatusLine.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/EntityConsumer.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/HeaderGroup.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/AbstractHttpDataReceiver.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/ByteArrayBuffer.java
jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/HeadersParser.java
jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestAllUtil.java
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/Header.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/Header.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/Header.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/Header.java Wed Oct 12 14:32:29 2005
@@ -29,6 +29,7 @@
package org.apache.http;
+import org.apache.http.util.CharArrayBuffer;
import org.apache.http.util.LangUtils;
/**
@@ -115,7 +116,7 @@
* @return a string
*/
public String toString() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(128);
buffer.append(this.name);
buffer.append(": ");
buffer.append(this.value);
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java Wed Oct 12 14:32:29 2005
@@ -32,6 +32,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.http.util.CharArrayBuffer;
import org.apache.http.util.LangUtils;
import org.apache.http.util.ParameterParser;
@@ -296,7 +297,7 @@
}
public String toString() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(64);
buffer.append(this.name);
if (this.value != null) {
buffer.append(" = ");
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpHost.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpHost.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpHost.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpHost.java Wed Oct 12 14:32:29 2005
@@ -29,6 +29,7 @@
package org.apache.http;
+import org.apache.http.util.CharArrayBuffer;
import org.apache.http.util.LangUtils;
/**
@@ -147,23 +148,23 @@
* @return The host uri.
*/
public String toURI() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(32);
buffer.append(this.protocol.getScheme());
buffer.append("://");
buffer.append(this.hostname);
if (this.port != this.protocol.getDefaultPort()) {
buffer.append(':');
- buffer.append(this.port);
+ buffer.append(Integer.toString(this.port));
}
return buffer.toString();
}
public String toHostString() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(32);
buffer.append(this.hostname);
if (this.port != this.protocol.getDefaultPort()) {
buffer.append(':');
- buffer.append(this.port);
+ buffer.append(Integer.toString(this.port));
}
return buffer.toString();
}
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpVersion.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpVersion.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpVersion.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HttpVersion.java Wed Oct 12 14:32:29 2005
@@ -29,6 +29,8 @@
package org.apache.http;
+import org.apache.http.util.CharArrayBuffer;
+
/**
* <p>HTTP version, as specified in RFC 2616.</p>
* <p>
@@ -201,11 +203,11 @@
* @see java.lang.Object#toString()
*/
public String toString() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(16);
buffer.append("HTTP/");
- buffer.append(this.major);
+ buffer.append(Integer.toString(this.major));
buffer.append('.');
- buffer.append(this.minor);
+ buffer.append(Integer.toString(this.minor));
return buffer.toString();
}
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/NameValuePair.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/NameValuePair.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/NameValuePair.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/NameValuePair.java Wed Oct 12 14:32:29 2005
@@ -31,6 +31,7 @@
import java.io.Serializable;
+import org.apache.http.util.CharArrayBuffer;
import org.apache.http.util.LangUtils;
/**
@@ -89,7 +90,7 @@
* @return A string representation.
*/
public String toString() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(32);
buffer.append(this.name);
buffer.append(" = ");
buffer.append(this.value);
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/RequestLine.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/RequestLine.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/RequestLine.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/RequestLine.java Wed Oct 12 14:32:29 2005
@@ -32,6 +32,8 @@
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
+import org.apache.http.util.CharArrayBuffer;
+
/**
* <p>
* </p>
@@ -76,13 +78,13 @@
}
public String toString() {
- StringBuffer sb = new StringBuffer();
- sb.append(this.method);
- sb.append(" ");
- sb.append(this.uri);
- sb.append(" ");
- sb.append(this.httpversion);
- return sb.toString();
+ CharArrayBuffer buffer = new CharArrayBuffer(64);
+ buffer.append(this.method);
+ buffer.append(' ');
+ buffer.append(this.uri);
+ buffer.append(' ');
+ buffer.append(this.httpversion);
+ return buffer.toString();
}
public static RequestLine parse(final String requestLine)
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/StatusLine.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/StatusLine.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/StatusLine.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/StatusLine.java Wed Oct 12 14:32:29 2005
@@ -29,6 +29,8 @@
package org.apache.http;
+import org.apache.http.util.CharArrayBuffer;
+
/**
* Represents a Status-Line as returned from a HTTP server.
*
@@ -179,10 +181,10 @@
}
public final String toString() {
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(64);
buffer.append(this.httpVersion);
buffer.append(' ');
- buffer.append(this.statusCode);
+ buffer.append(Integer.toString(this.statusCode));
if (this.reasonPhrase != null && !this.reasonPhrase.equals("")) {
buffer.append(' ');
buffer.append(this.reasonPhrase);
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/EntityConsumer.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/EntityConsumer.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/EntityConsumer.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/entity/EntityConsumer.java Wed Oct 12 14:32:29 2005
@@ -42,6 +42,7 @@
import org.apache.http.NameValuePair;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.util.ByteArrayBuffer;
+import org.apache.http.util.CharArrayBuffer;
/**
* <p>
@@ -96,7 +97,7 @@
while((l = instream.read(tmp)) != -1) {
buffer.append(tmp, 0, l);
}
- return buffer.getBytes();
+ return buffer.toByteArray();
}
public static String getContentCharSet(final HttpEntity entity) {
@@ -127,6 +128,10 @@
if (entity.getContentLength() > Integer.MAX_VALUE) {
throw new IllegalStateException("HTTP entity too large to be buffered in memory");
}
+ int i = (int)entity.getContentLength();
+ if (i < 0) {
+ i = 4096;
+ }
String charset = getContentCharSet(entity);
if (charset == null) {
charset = defaultCharset;
@@ -135,7 +140,7 @@
charset = "ISO-8859-1";
}
Reader reader = new InputStreamReader(entity.getContent(), charset);
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(i);
char[] tmp = new char[1024];
int l;
while((l = reader.read(tmp)) != -1) {
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/HeaderGroup.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/HeaderGroup.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/HeaderGroup.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/HeaderGroup.java Wed Oct 12 14:32:29 2005
@@ -34,6 +34,7 @@
import java.util.List;
import org.apache.http.Header;
+import org.apache.http.util.CharArrayBuffer;
/**
* A class for combining a set of headers. This class allows for multiple
@@ -116,8 +117,8 @@
} else if (headers.length == 1) {
return headers[0];
} else {
- StringBuffer valueBuffer = new StringBuffer(headers[0].getValue());
-
+ CharArrayBuffer valueBuffer = new CharArrayBuffer(128);
+ valueBuffer.append(headers[0].getValue());
for (int i = 1; i < headers.length; i++) {
valueBuffer.append(", ");
valueBuffer.append(headers[i].getValue());
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/AbstractHttpDataReceiver.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/AbstractHttpDataReceiver.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/AbstractHttpDataReceiver.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/AbstractHttpDataReceiver.java Wed Oct 12 14:32:29 2005
@@ -212,7 +212,7 @@
}
}
return EncodingUtil.getString(
- this.linebuffer.getBytes(), 0, this.linebuffer.length(), this.charset);
+ this.linebuffer.getBuffer(), 0, this.linebuffer.length(), this.charset);
}
private String lineFromReadBuffer(int pos) {
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/impl/io/NIOHttpDataReceiver.java Wed Oct 12 14:32:29 2005
@@ -40,6 +40,7 @@
import org.apache.http.io.HttpDataReceiver;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
+import org.apache.http.util.CharArrayBuffer;
/**
* <p>
@@ -149,7 +150,7 @@
int noRead = 0;
this.chbuffer.clear();
this.chardecoder.reset();
- StringBuffer line = new StringBuffer();
+ CharArrayBuffer line = new CharArrayBuffer(128);
boolean retry = true;
while (retry) {
// attempt to find end of line (LF)
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/ByteArrayBuffer.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/ByteArrayBuffer.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/ByteArrayBuffer.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/ByteArrayBuffer.java Wed Oct 12 14:32:29 2005
@@ -49,6 +49,12 @@
this.buffer = new byte[capacity];
}
+ private void expand(int newlen) {
+ byte newbuffer[] = new byte[Math.max(this.buffer.length << 1, newlen)];
+ System.arraycopy(this.buffer, 0, newbuffer, 0, this.len);
+ this.buffer = newbuffer;
+ }
+
public void append(final byte[] b, int off, int len) {
if (b == null) {
return;
@@ -62,9 +68,7 @@
}
int newlen = this.len + len;
if (newlen > this.buffer.length) {
- byte newbuffer[] = new byte[Math.max(this.buffer.length << 1, newlen)];
- System.arraycopy(this.buffer, 0, newbuffer, 0, this.len);
- this.buffer = newbuffer;
+ expand(newlen);
}
System.arraycopy(b, off, this.buffer, this.len, len);
this.len = newlen;
@@ -74,8 +78,16 @@
this.len = 0;
}
- public byte[] getBytes() {
+ public byte[] getBuffer() {
return this.buffer;
+ }
+
+ public byte[] toByteArray() {
+ byte[] b = new byte[this.len];
+ if (this.len > 0) {
+ System.arraycopy(this.buffer, 0, b, 0, this.len);
+ }
+ return b;
}
public int byteAt(int i) {
Added: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java?rev=315053&view=auto
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java (added)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java Wed Oct 12 14:32:29 2005
@@ -0,0 +1,146 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed 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.util;
+
+/**
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ *
+ * @version $Revision$
+ *
+ * @since 4.0
+ */
+public class CharArrayBuffer {
+
+ private char[] buffer;
+ private int len;
+
+ public CharArrayBuffer(int capacity) {
+ super();
+ if (capacity < 0) {
+ throw new IllegalArgumentException("Buffer capacity may not be negative");
+ }
+ this.buffer = new char[capacity];
+ }
+
+ private void expand(int newlen) {
+ char newbuffer[] = new char[Math.max(this.buffer.length << 1, newlen)];
+ System.arraycopy(this.buffer, 0, newbuffer, 0, this.len);
+ this.buffer = newbuffer;
+ }
+
+ public void append(final char[] b, int off, int len) {
+ if (b == null) {
+ return;
+ }
+ if ((off < 0) || (off > b.length) || (len < 0) ||
+ ((off + len) < 0) || ((off + len) > b.length)) {
+ throw new IndexOutOfBoundsException();
+ }
+ if (len == 0) {
+ return;
+ }
+ int newlen = this.len + len;
+ if (newlen > this.buffer.length) {
+ expand(newlen);
+ }
+ System.arraycopy(b, off, this.buffer, this.len, len);
+ this.len = newlen;
+ }
+
+ public void append(String str) {
+ if (str == null) {
+ str = "null";
+ }
+ int strlen = str.length();
+ int newlen = this.len + strlen;
+ if (newlen > this.buffer.length) {
+ expand(newlen);
+ }
+ str.getChars(0, strlen, this.buffer, this.len);
+ this.len = newlen;
+ }
+
+ public void append(char ch) {
+ int newlen = this.len + 1;
+ if (newlen > this.buffer.length) {
+ expand(newlen);
+ }
+ this.buffer[this.len] = ch;
+ this.len = newlen;
+ }
+
+ public void append(final Object obj) {
+ append(String.valueOf(obj));
+ }
+
+ public void clear() {
+ this.len = 0;
+ }
+
+ public char[] getBuffer() {
+ return this.buffer;
+ }
+
+ public char[] toCharArray() {
+ char[] b = new char[this.len];
+ if (this.len > 0) {
+ System.arraycopy(this.buffer, 0, b, 0, this.len);
+ }
+ return b;
+ }
+
+ public char charAt(int i) {
+ return this.buffer[i];
+ }
+
+ public int capacity() {
+ return this.buffer.length;
+ }
+
+ public int length() {
+ return this.len;
+ }
+
+ public void setLength(int len) {
+ if (len < 0 || len > this.buffer.length) {
+ throw new IndexOutOfBoundsException();
+ }
+ this.len = len;
+ }
+
+ public boolean isEmpty() {
+ return this.len == 0;
+ }
+
+ public String toString() {
+ return new String(this.buffer, 0, this.len);
+ }
+
+}
Propchange: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/CharArrayBuffer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/HeadersParser.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/HeadersParser.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/HeadersParser.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/util/HeadersParser.java Wed Oct 12 14:32:29 2005
@@ -69,7 +69,7 @@
// we have continuation folded header
// so append value
String previousLine = (String) headerLines.remove(headerLines.size() - 1);
- StringBuffer buffer = new StringBuffer();
+ CharArrayBuffer buffer = new CharArrayBuffer(128);
buffer.append(previousLine);
buffer.append(' ');
buffer.append(line.trim());
Modified: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestAllUtil.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestAllUtil.java?rev=315053&r1=315052&r2=315053&view=diff
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestAllUtil.java (original)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestAllUtil.java Wed Oct 12 14:32:29 2005
@@ -44,6 +44,8 @@
suite.addTest(TestParameterParser.suite());
suite.addTest(TestParameterFormatter.suite());
suite.addTest(TestHeadersParser.suite());
+ suite.addTest(TestByteArrayBuffer.suite());
+ suite.addTest(TestCharArrayBuffer.suite());
return suite;
}
Added: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java?rev=315053&view=auto
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java (added)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java Wed Oct 12 14:32:29 2005
@@ -0,0 +1,174 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed 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.util;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit tests for {@link ByteArrayBuffer}.
+ *
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ */
+public class TestByteArrayBuffer extends TestCase {
+
+ public TestByteArrayBuffer(String testName) {
+ super(testName);
+ }
+
+ public static void main(String args[]) {
+ String[] testCaseName = { TestByteArrayBuffer.class.getName() };
+ junit.textui.TestRunner.main(testCaseName);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestByteArrayBuffer.class);
+ }
+
+ public void testConstructor() throws Exception {
+ ByteArrayBuffer buffer = new ByteArrayBuffer(16);
+ assertEquals(16, buffer.capacity());
+ assertEquals(0, buffer.length());
+ assertEquals(16, buffer.getBuffer().length);
+ try {
+ new ByteArrayBuffer(-1);
+ fail("IllegalArgumentException should have been thrown");
+ } catch (IllegalArgumentException ex) {
+ // expected
+ }
+ }
+
+ public void testSimpleAppend() throws Exception {
+ ByteArrayBuffer buffer = new ByteArrayBuffer(16);
+ assertEquals(16, buffer.capacity());
+ assertEquals(0, buffer.length());
+ byte[] b1 = buffer.toByteArray();
+ assertNotNull(b1);
+ assertEquals(0, b1.length);
+ assertTrue(buffer.isEmpty());
+
+ byte[] tmp = new byte[] { 1, 2, 3, 4};
+ buffer.append(tmp, 0, tmp.length);
+ assertEquals(16, buffer.capacity());
+ assertEquals(4, buffer.length());
+ assertFalse(buffer.isEmpty());
+
+ byte[] b2 = buffer.toByteArray();
+ assertNotNull(b2);
+ assertEquals(4, b2.length);
+ for (int i = 0; i < tmp.length; i++) {
+ assertEquals(tmp[i], b2[i]);
+ assertEquals(tmp[i], buffer.byteAt(i));
+ }
+ buffer.clear();
+ assertEquals(16, buffer.capacity());
+ assertEquals(0, buffer.length());
+ assertTrue(buffer.isEmpty());
+ }
+
+ public void testExpandAppend() throws Exception {
+ ByteArrayBuffer buffer = new ByteArrayBuffer(4);
+ assertEquals(4, buffer.capacity());
+
+ byte[] tmp = new byte[] { 1, 2, 3, 4};
+ buffer.append(tmp, 0, 2);
+ buffer.append(tmp, 0, 4);
+ buffer.append(tmp, 0, 0);
+
+ assertEquals(8, buffer.capacity());
+ assertEquals(6, buffer.length());
+
+ buffer.append(tmp, 0, 4);
+
+ assertEquals(16, buffer.capacity());
+ assertEquals(10, buffer.length());
+ }
+
+ public void testInvalidAppend() throws Exception {
+ ByteArrayBuffer buffer = new ByteArrayBuffer(4);
+ buffer.append(null, 0, 0);
+
+ byte[] tmp = new byte[] { 1, 2, 3, 4};
+ try {
+ buffer.append(tmp, -1, 0);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 0, -1);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 0, 8);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 10, Integer.MAX_VALUE);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 2, 4);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ }
+
+ public void testSetLength() throws Exception {
+ ByteArrayBuffer buffer = new ByteArrayBuffer(4);
+ buffer.setLength(2);
+ assertEquals(2, buffer.length());
+ }
+
+ public void testSetInvalidLength() throws Exception {
+ ByteArrayBuffer buffer = new ByteArrayBuffer(4);
+ try {
+ buffer.setLength(-2);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.setLength(200);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ }
+
+}
Propchange: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestByteArrayBuffer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java?rev=315053&view=auto
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java (added)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java Wed Oct 12 14:32:29 2005
@@ -0,0 +1,174 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed 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.util;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit tests for {@link CharArrayBuffer}.
+ *
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ */
+public class TestCharArrayBuffer extends TestCase {
+
+ public TestCharArrayBuffer(String testName) {
+ super(testName);
+ }
+
+ public static void main(String args[]) {
+ String[] testCaseName = { TestCharArrayBuffer.class.getName() };
+ junit.textui.TestRunner.main(testCaseName);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestCharArrayBuffer.class);
+ }
+
+ public void testConstructor() throws Exception {
+ CharArrayBuffer buffer = new CharArrayBuffer(16);
+ assertEquals(16, buffer.capacity());
+ assertEquals(0, buffer.length());
+ assertEquals(16, buffer.getBuffer().length);
+ try {
+ new CharArrayBuffer(-1);
+ fail("IllegalArgumentException should have been thrown");
+ } catch (IllegalArgumentException ex) {
+ // expected
+ }
+ }
+
+ public void testSimpleAppend() throws Exception {
+ CharArrayBuffer buffer = new CharArrayBuffer(16);
+ assertEquals(16, buffer.capacity());
+ assertEquals(0, buffer.length());
+ char[] b1 = buffer.toCharArray();
+ assertNotNull(b1);
+ assertEquals(0, b1.length);
+ assertTrue(buffer.isEmpty());
+
+ char[] tmp = new char[] { '1', '2', '3', '4'};
+ buffer.append(tmp, 0, tmp.length);
+ assertEquals(16, buffer.capacity());
+ assertEquals(4, buffer.length());
+ assertFalse(buffer.isEmpty());
+
+ char[] b2 = buffer.toCharArray();
+ assertNotNull(b2);
+ assertEquals(4, b2.length);
+ for (int i = 0; i < tmp.length; i++) {
+ assertEquals(tmp[i], b2[i]);
+ assertEquals(tmp[i], buffer.charAt(i));
+ }
+ buffer.clear();
+ assertEquals(16, buffer.capacity());
+ assertEquals(0, buffer.length());
+ assertTrue(buffer.isEmpty());
+ }
+
+ public void testExpandAppend() throws Exception {
+ CharArrayBuffer buffer = new CharArrayBuffer(4);
+ assertEquals(4, buffer.capacity());
+
+ char[] tmp = new char[] { '1', '2', '3', '4'};
+ buffer.append(tmp, 0, 2);
+ buffer.append(tmp, 0, 4);
+ buffer.append(tmp, 0, 0);
+
+ assertEquals(8, buffer.capacity());
+ assertEquals(6, buffer.length());
+
+ buffer.append(tmp, 0, 4);
+
+ assertEquals(16, buffer.capacity());
+ assertEquals(10, buffer.length());
+ }
+
+ public void testInvalidAppend() throws Exception {
+ CharArrayBuffer buffer = new CharArrayBuffer(4);
+ buffer.append(null, 0, 0);
+
+ char[] tmp = new char[] { '1', '2', '3', '4'};
+ try {
+ buffer.append(tmp, -1, 0);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 0, -1);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 0, 8);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 10, Integer.MAX_VALUE);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.append(tmp, 2, 4);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ }
+
+ public void testSetLength() throws Exception {
+ CharArrayBuffer buffer = new CharArrayBuffer(4);
+ buffer.setLength(2);
+ assertEquals(2, buffer.length());
+ }
+
+ public void testSetInvalidLength() throws Exception {
+ CharArrayBuffer buffer = new CharArrayBuffer(4);
+ try {
+ buffer.setLength(-2);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ try {
+ buffer.setLength(200);
+ fail("IndexOutOfBoundsException should have been thrown");
+ } catch (IndexOutOfBoundsException ex) {
+ // expected
+ }
+ }
+
+}
Propchange: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/util/TestCharArrayBuffer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain