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/11/30 13:52:41 UTC
svn commit: r599808 - in /jakarta/httpcomponents/httpcore/trunk: ./
module-nio/ module-nio/src/main/java/org/apache/http/impl/nio/codecs/
module-nio/src/main/java/org/apache/http/impl/nio/reactor/
module-nio/src/test/java/org/apache/http/mockup/ module...
Author: olegk
Date: Fri Nov 30 04:52:38 2007
New Revision: 599808
URL: http://svn.apache.org/viewvc?rev=599808&view=rev
Log:
Initial port of HttpCore NIO to Java 1.5: use of generics
Added:
jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java (with props)
jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java (with props)
Removed:
jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/SimpleThreadPoolExecutor.java
Modified:
jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
jakarta/httpcomponents/httpcore/trunk/module-nio/pom.xml
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/ChunkDecoder.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractIOReactor.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/BaseIOReactor.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ChannelQueue.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/IOSessionImpl.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ListenerEndpointQueue.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionQueue.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionRequestQueue.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionSet.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java
Modified: jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original)
+++ jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Fri Nov 30 04:52:38 2007
@@ -1,5 +1,8 @@
Changes since 4.0 Alpha 6
+* HttpCore NIO ported to Java 1.5.
+ Contributed by Oleg Kalnichevski <olegk at apache.org>
+
* [HTTPCORE-130] Fixed over-synchronization bug leading to a thread deadlock
condition in SSL IOEventDispatch implementations.
Contributed by Oleg Kalnichevski <olegk at apache.org>
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/pom.xml
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/pom.xml?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/pom.xml (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/pom.xml Fri Nov 30 04:52:38 2007
@@ -74,8 +74,8 @@
</dependencies>
<properties>
- <maven.compile.source>1.4</maven.compile.source>
- <maven.compile.target>1.4</maven.compile.target>
+ <maven.compile.source>1.5</maven.compile.source>
+ <maven.compile.target>1.5</maven.compile.target>
<maven.compile.optimize>true</maven.compile.optimize>
<maven.compile.deprecation>true</maven.compile.deprecation>
</properties>
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java Fri Nov 30 04:52:38 2007
@@ -61,7 +61,7 @@
private HttpMessage message;
private CharArrayBuffer lineBuf;
- private final List headerBufs;
+ private final List<CharArrayBuffer> headerBufs;
private int maxLineLen = -1;
private int maxHeaderCount = -1;
@@ -78,7 +78,7 @@
this.sessionBuffer = buffer;
this.state = READ_HEAD_LINE;
this.endOfStream = false;
- this.headerBufs = new ArrayList();
+ this.headerBufs = new ArrayList<CharArrayBuffer>();
this.maxLineLen = params.getIntParameter(
CoreConnectionPNames.MAX_LINE_LENGTH, -1);
this.maxHeaderCount = params.getIntParameter(
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageWriter.java Fri Nov 30 04:52:38 2007
@@ -75,7 +75,7 @@
throw new IllegalArgumentException("HTTP message may not be null");
}
writeHeadLine(message);
- for (Iterator it = message.headerIterator(); it.hasNext(); ) {
+ for (Iterator<?> it = message.headerIterator(); it.hasNext(); ) {
Header header = (Header) it.next();
this.sessionBuffer.writeLine
(lineFormatter.formatHeader(this.lineBuf, header));
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/ChunkDecoder.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/ChunkDecoder.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/ChunkDecoder.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/codecs/ChunkDecoder.java Fri Nov 30 04:52:38 2007
@@ -60,7 +60,7 @@
private int chunkSize;
private int pos;
- private final List trailerBufs;
+ private final List<CharArrayBuffer> trailerBufs;
private Header[] footers;
@@ -74,7 +74,7 @@
this.pos = 0;
this.endOfChunk = false;
this.endOfStream = false;
- this.trailerBufs = new ArrayList();
+ this.trailerBufs = new ArrayList<CharArrayBuffer>();
}
private void readChunkHead() throws IOException {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractIOReactor.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractIOReactor.java Fri Nov 30 04:52:38 2007
@@ -85,7 +85,7 @@
protected abstract void timeoutCheck(SelectionKey key, long now);
- protected abstract void validate(Set keys);
+ protected abstract void validate(Set<SelectionKey> keys);
protected abstract void keyCreated(SelectionKey key, IOSession session);
@@ -167,10 +167,10 @@
}
}
- private void processEvents(final Set selectedKeys) {
- for (Iterator it = selectedKeys.iterator(); it.hasNext(); ) {
+ private void processEvents(final Set<SelectionKey> selectedKeys) {
+ for (Iterator<SelectionKey> it = selectedKeys.iterator(); it.hasNext(); ) {
- SelectionKey key = (SelectionKey) it.next();
+ SelectionKey key = it.next();
processEvent(key);
}
@@ -261,8 +261,8 @@
protected void closeSessions() {
synchronized (this.sessions) {
- for (Iterator it = this.sessions.iterator(); it.hasNext(); ) {
- IOSession session = (IOSession) it.next();
+ for (Iterator<IOSession> it = this.sessions.iterator(); it.hasNext(); ) {
+ IOSession session = it.next();
session.close();
}
}
@@ -284,10 +284,10 @@
}
protected void closeActiveChannels() throws IOReactorException {
- Set keys = this.selector.keys();
- for (Iterator it = keys.iterator(); it.hasNext(); ) {
+ Set<SelectionKey> keys = this.selector.keys();
+ for (Iterator<SelectionKey> it = keys.iterator(); it.hasNext(); ) {
try {
- SelectionKey key = (SelectionKey) it.next();
+ SelectionKey key = it.next();
Channel channel = key.channel();
if (channel != null) {
channel.close();
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.java Fri Nov 30 04:52:38 2007
@@ -194,10 +194,10 @@
this.selector.wakeup();
// Close out all channels
- Set keys = this.selector.keys();
- for (Iterator it = keys.iterator(); it.hasNext(); ) {
+ Set<SelectionKey> keys = this.selector.keys();
+ for (Iterator<SelectionKey> it = keys.iterator(); it.hasNext(); ) {
try {
- SelectionKey key = (SelectionKey) it.next();
+ SelectionKey key = it.next();
Channel channel = key.channel();
if (channel != null) {
channel.close();
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/BaseIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/BaseIOReactor.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/BaseIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/BaseIOReactor.java Fri Nov 30 04:52:38 2007
@@ -112,20 +112,20 @@
}
}
- protected void validate(final Set keys) {
+ protected void validate(final Set<SelectionKey> keys) {
long currentTime = System.currentTimeMillis();
if( (currentTime - this.lastTimeoutCheck) >= this.timeoutCheckInterval) {
this.lastTimeoutCheck = currentTime;
if (keys != null) {
- for (Iterator it = keys.iterator(); it.hasNext();) {
- SelectionKey key = (SelectionKey) it.next();
+ for (Iterator<SelectionKey> it = keys.iterator(); it.hasNext();) {
+ SelectionKey key = it.next();
timeoutCheck(key, currentTime);
}
}
}
if (!this.bufferingSessions.isEmpty()) {
- for (Iterator it = this.bufferingSessions.iterator(); it.hasNext(); ) {
- IOSession session = (IOSession) it.next();
+ for (Iterator<IOSession> it = this.bufferingSessions.iterator(); it.hasNext(); ) {
+ IOSession session = it.next();
if (!session.hasBufferedInput()) {
it.remove();
continue;
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ChannelQueue.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ChannelQueue.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ChannelQueue.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ChannelQueue.java Fri Nov 30 04:52:38 2007
@@ -35,11 +35,11 @@
public class ChannelQueue {
- private final LinkedList list;
+ private final LinkedList<ChannelEntry> list;
public ChannelQueue() {
super();
- this.list = new LinkedList();
+ this.list = new LinkedList<ChannelEntry>();
}
public synchronized void push(final ChannelEntry entry) {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultConnectingIOReactor.java Fri Nov 30 04:52:38 2007
@@ -75,10 +75,10 @@
processSessionRequests();
if (readyCount > 0) {
- Set selectedKeys = this.selector.selectedKeys();
- for (Iterator it = selectedKeys.iterator(); it.hasNext(); ) {
+ Set<SelectionKey> selectedKeys = this.selector.selectedKeys();
+ for (Iterator<SelectionKey> it = selectedKeys.iterator(); it.hasNext(); ) {
- SelectionKey key = (SelectionKey) it.next();
+ SelectionKey key = it.next();
processEvent(key);
}
@@ -88,7 +88,7 @@
long currentTime = System.currentTimeMillis();
if ((currentTime - this.lastTimeoutCheck) >= this.selectTimeout) {
this.lastTimeoutCheck = currentTime;
- Set keys = this.selector.keys();
+ Set<SelectionKey> keys = this.selector.keys();
if (keys != null) {
processTimeouts(keys);
}
@@ -134,10 +134,10 @@
}
}
- private void processTimeouts(final Set keys) {
+ private void processTimeouts(final Set<SelectionKey> keys) {
long now = System.currentTimeMillis();
- for (Iterator it = keys.iterator(); it.hasNext();) {
- SelectionKey key = (SelectionKey) it.next();
+ for (Iterator<SelectionKey> it = keys.iterator(); it.hasNext();) {
+ SelectionKey key = it.next();
Object attachment = key.attachment();
if (attachment instanceof SessionRequestHandle) {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/DefaultListeningIOReactor.java Fri Nov 30 04:52:38 2007
@@ -69,10 +69,10 @@
processSessionRequests();
if (readyCount > 0) {
- Set selectedKeys = this.selector.selectedKeys();
- for (Iterator it = selectedKeys.iterator(); it.hasNext(); ) {
+ Set<SelectionKey> selectedKeys = this.selector.selectedKeys();
+ for (Iterator<SelectionKey> it = selectedKeys.iterator(); it.hasNext(); ) {
- SelectionKey key = (SelectionKey) it.next();
+ SelectionKey key = it.next();
processEvent(key);
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/IOSessionImpl.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/IOSessionImpl.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/IOSessionImpl.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/IOSessionImpl.java Fri Nov 30 04:52:38 2007
@@ -51,7 +51,7 @@
private final SelectionKey key;
private final ByteChannel channel;
private final SessionClosedCallback callback;
- private final Map attributes;
+ private final Map<String, Object> attributes;
private SessionBufferStatus bufferStatus;
private int socketTimeout;
@@ -64,7 +64,7 @@
this.key = key;
this.channel = (ByteChannel) this.key.channel();
this.callback = callback;
- this.attributes = Collections.synchronizedMap(new HashMap());
+ this.attributes = Collections.synchronizedMap(new HashMap<String, Object>());
this.socketTimeout = 0;
this.status = ACTIVE;
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ListenerEndpointQueue.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ListenerEndpointQueue.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ListenerEndpointQueue.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/ListenerEndpointQueue.java Fri Nov 30 04:52:38 2007
@@ -35,11 +35,11 @@
public class ListenerEndpointQueue {
- private final LinkedList list;
+ private final LinkedList<ListenerEndpointImpl> list;
public ListenerEndpointQueue() {
super();
- this.list = new LinkedList();
+ this.list = new LinkedList<ListenerEndpointImpl>();
}
public synchronized void push(final ListenerEndpointImpl entry) {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionQueue.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionQueue.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionQueue.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionQueue.java Fri Nov 30 04:52:38 2007
@@ -37,11 +37,11 @@
public class SessionQueue {
- private final LinkedList list;
+ private final LinkedList<IOSession> list;
public SessionQueue() {
super();
- this.list = new LinkedList();
+ this.list = new LinkedList<IOSession>();
}
public synchronized void push(final IOSession session) {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionRequestQueue.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionRequestQueue.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionRequestQueue.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionRequestQueue.java Fri Nov 30 04:52:38 2007
@@ -35,11 +35,11 @@
public class SessionRequestQueue {
- private final LinkedList list;
+ private final LinkedList<SessionRequestImpl> list;
public SessionRequestQueue() {
super();
- this.list = new LinkedList();
+ this.list = new LinkedList<SessionRequestImpl>();
}
public synchronized void push(final SessionRequestImpl entry) {
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionSet.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionSet.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionSet.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/reactor/SessionSet.java Fri Nov 30 04:52:38 2007
@@ -39,11 +39,11 @@
public class SessionSet {
- private final Set set;
+ private final Set<IOSession> set;
public SessionSet() {
super();
- this.set = new HashSet();
+ this.set = new HashSet<IOSession>();
}
public synchronized void add(final IOSession session) {
@@ -68,7 +68,7 @@
return this.set.isEmpty();
}
- public Iterator iterator() {
+ public Iterator<IOSession> iterator() {
return this.set.iterator();
}
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java?rev=599808&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java Fri Nov 30 04:52:38 2007
@@ -0,0 +1,69 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ *
+ * ====================================================================
+ * 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.mockup;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class ByteSequence {
+
+ private final List<byte []> data;
+
+ public ByteSequence() {
+ super();
+ this.data = new ArrayList<byte []>();
+ }
+
+ public void addBytes(byte[] bytes) {
+ this.data.add(bytes);
+ }
+
+ public int size() {
+ return this.data.size();
+ }
+
+ public byte[] getBytes(int index) {
+ return this.data.get(index);
+ }
+
+ public void rnd(int count) {
+ Random rnd = new Random();
+ for (int i = 0; i < count; i++) {
+ int size = rnd.nextInt(5000);
+ byte[] data = new byte[size];
+ rnd.nextBytes(data);
+ this.data.add(data);
+ }
+ }
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ByteSequence.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java?rev=599808&view=auto
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java (added)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java Fri Nov 30 04:52:38 2007
@@ -0,0 +1,60 @@
+/*
+ * $HeadURL:$
+ * $Revision:$
+ * $Date:$
+ *
+ * ====================================================================
+ * 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.mockup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.http.HttpResponse;
+
+public class ResponseSequence {
+
+ private final List<HttpResponse> data;
+
+ public ResponseSequence() {
+ super();
+ this.data = new ArrayList<HttpResponse>();
+ }
+
+ public void addResponse(final HttpResponse response) {
+ this.data.add(response);
+ }
+
+ public int size() {
+ return this.data.size();
+ }
+
+ public HttpResponse getResponse(int index) {
+ return this.data.get(index);
+ }
+
+}
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/mockup/ResponseSequence.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java?rev=599808&r1=599807&r2=599808&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java Fri Nov 30 04:52:38 2007
@@ -36,7 +36,6 @@
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Random;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -56,10 +55,11 @@
import org.apache.http.impl.DefaultHttpResponseFactory;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
import org.apache.http.message.BasicHttpRequest;
+import org.apache.http.mockup.ByteSequence;
import org.apache.http.mockup.RequestCount;
+import org.apache.http.mockup.ResponseSequence;
import org.apache.http.mockup.SimpleEventListener;
import org.apache.http.mockup.SimpleHttpRequestHandlerResolver;
-import org.apache.http.mockup.SimpleThreadPoolExecutor;
import org.apache.http.mockup.TestHttpClient;
import org.apache.http.mockup.TestHttpServer;
import org.apache.http.nio.NHttpClientHandler;
@@ -115,7 +115,6 @@
private TestHttpServer server;
private TestHttpClient client;
- private SimpleThreadPoolExecutor executor;
protected void setUp() throws Exception {
HttpParams serverParams = new BasicHttpParams();
@@ -138,13 +137,11 @@
.setParameter(CoreProtocolPNames.USER_AGENT, "TEST-CLIENT/1.1");
this.client = new TestHttpClient(clientParams);
- this.executor = new SimpleThreadPoolExecutor();
}
protected void tearDown() throws Exception {
this.server.shutdown();
this.client.shutdown();
- this.executor.shutdown();
}
private NHttpServiceHandler createHttpServiceHandler(
@@ -198,21 +195,12 @@
final int connNo = 3;
final int reqNo = 20;
final RequestCount requestCount = new RequestCount(connNo * reqNo);
+ final ByteSequence requestData = new ByteSequence();
+ requestData.rnd(reqNo);
- Random rnd = new Random();
-
- // Prepare some random data
- final List testData = new ArrayList(reqNo);
- for (int i = 0; i < reqNo; i++) {
- int size = rnd.nextInt(5000);
- byte[] data = new byte[size];
- rnd.nextBytes(data);
- testData.add(data);
- }
-
- List[] responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
+ List<ByteSequence> responseData = new ArrayList<ByteSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData.add(new ByteSequence());
}
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -230,8 +218,8 @@
throw new HttpException("Invalid request URI: " + s);
}
int index = Integer.parseInt(uri.getQuery());
- byte[] data = (byte []) testData.get(index);
- ByteArrayEntity entity = new ByteArrayEntity(data);
+ byte[] bytes = requestData.getBytes(index);
+ ByteArrayEntity entity = new ByteArrayEntity(bytes);
response.setEntity(entity);
}
@@ -240,7 +228,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ByteSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -262,7 +250,7 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ByteSequence list = (ByteSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
@@ -270,7 +258,7 @@
try {
HttpEntity entity = response.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
- list.add(data);
+ list.addBytes(data);
requestCount.decrement();
} catch (IOException ex) {
requestCount.abort();
@@ -298,10 +286,10 @@
endpoint.waitFor();
InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData.get(i));
}
requestCount.await(10000);
@@ -310,13 +298,13 @@
this.client.shutdown();
this.server.shutdown();
- for (int c = 0; c < responseData.length; c++) {
- List receivedPackets = responseData[c];
- List expectedPackets = testData;
+ for (int c = 0; c < responseData.size(); c++) {
+ ByteSequence receivedPackets = responseData.get(c);
+ ByteSequence expectedPackets = requestData;
assertEquals(expectedPackets.size(), receivedPackets.size());
- for (int p = 0; p < testData.size(); p++) {
- byte[] expected = (byte[]) testData.get(p);
- byte[] received = (byte[]) receivedPackets.get(p);
+ for (int p = 0; p < requestData.size(); p++) {
+ byte[] expected = requestData.getBytes(p);
+ byte[] received = receivedPackets.getBytes(p);
assertEquals(expected.length, received.length);
for (int i = 0; i < expected.length; i++) {
@@ -336,21 +324,12 @@
final int connNo = 3;
final int reqNo = 20;
final RequestCount requestCount = new RequestCount(connNo * reqNo);
+ final ByteSequence requestData = new ByteSequence();
+ requestData.rnd(reqNo);
- Random rnd = new Random();
-
- // Prepare some random data
- final List testData = new ArrayList(reqNo);
- for (int i = 0; i < reqNo; i++) {
- int size = rnd.nextInt(5000);
- byte[] data = new byte[size];
- rnd.nextBytes(data);
- testData.add(data);
- }
-
- List[] responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
+ List<ByteSequence> responseData = new ArrayList<ByteSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData.add(new ByteSequence());
}
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -378,7 +357,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ByteSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -391,7 +370,8 @@
BasicHttpEntityEnclosingRequest post = null;
if (i < reqNo) {
post = new BasicHttpEntityEnclosingRequest("POST", "/?" + i);
- byte[] data = (byte[]) testData.get(i);
+
+ byte[] data = requestData.getBytes(i);
ByteArrayEntity outgoing = new ByteArrayEntity(data);
post.setEntity(outgoing);
@@ -404,7 +384,7 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ByteSequence list = (ByteSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
@@ -412,7 +392,7 @@
try {
HttpEntity entity = response.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
- list.add(data);
+ list.addBytes(data);
requestCount.decrement();
} catch (IOException ex) {
requestCount.abort();
@@ -440,10 +420,10 @@
endpoint.waitFor();
InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData.get(i));
}
requestCount.await(10000);
@@ -452,13 +432,13 @@
this.client.shutdown();
this.server.shutdown();
- for (int c = 0; c < responseData.length; c++) {
- List receivedPackets = responseData[c];
- List expectedPackets = testData;
+ for (int c = 0; c < responseData.size(); c++) {
+ ByteSequence receivedPackets = responseData.get(c);
+ ByteSequence expectedPackets = requestData;
assertEquals(expectedPackets.size(), receivedPackets.size());
- for (int p = 0; p < testData.size(); p++) {
- byte[] expected = (byte[]) testData.get(p);
- byte[] received = (byte[]) receivedPackets.get(p);
+ for (int p = 0; p < requestData.size(); p++) {
+ byte[] expected = requestData.getBytes(p);
+ byte[] received = receivedPackets.getBytes(p);
assertEquals(expected.length, received.length);
for (int i = 0; i < expected.length; i++) {
@@ -478,21 +458,12 @@
final int connNo = 3;
final int reqNo = 20;
final RequestCount requestCount = new RequestCount(connNo * reqNo);
+ final ByteSequence requestData = new ByteSequence();
+ requestData.rnd(reqNo);
- Random rnd = new Random();
-
- // Prepare some random data
- final List testData = new ArrayList(reqNo);
- for (int i = 0; i < reqNo; i++) {
- int size = rnd.nextInt(20000);
- byte[] data = new byte[size];
- rnd.nextBytes(data);
- testData.add(data);
- }
-
- List[] responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
+ List<ByteSequence> responseData = new ArrayList<ByteSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData.add(new ByteSequence());
}
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -519,7 +490,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ByteSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -532,7 +503,7 @@
BasicHttpEntityEnclosingRequest post = null;
if (i < reqNo) {
post = new BasicHttpEntityEnclosingRequest("POST", "/?" + i);
- byte[] data = (byte[]) testData.get(i);
+ byte[] data = requestData.getBytes(i);
ByteArrayEntity outgoing = new ByteArrayEntity(data);
outgoing.setChunked(true);
post.setEntity(outgoing);
@@ -546,7 +517,7 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ByteSequence list = (ByteSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
@@ -554,7 +525,7 @@
try {
HttpEntity entity = response.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
- list.add(data);
+ list.addBytes(data);
requestCount.decrement();
} catch (IOException ex) {
requestCount.abort();
@@ -582,10 +553,10 @@
endpoint.waitFor();
InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData.get(i));
}
requestCount.await(10000);
@@ -597,13 +568,13 @@
this.client.shutdown();
this.server.shutdown();
- for (int c = 0; c < responseData.length; c++) {
- List receivedPackets = responseData[c];
- List expectedPackets = testData;
+ for (int c = 0; c < responseData.size(); c++) {
+ ByteSequence receivedPackets = responseData.get(c);
+ ByteSequence expectedPackets = requestData;
assertEquals(expectedPackets.size(), receivedPackets.size());
- for (int p = 0; p < testData.size(); p++) {
- byte[] expected = (byte[]) testData.get(p);
- byte[] received = (byte[]) receivedPackets.get(p);
+ for (int p = 0; p < requestData.size(); p++) {
+ byte[] expected = requestData.getBytes(p);
+ byte[] received = receivedPackets.getBytes(p);
assertEquals(expected.length, received.length);
for (int i = 0; i < expected.length; i++) {
@@ -623,21 +594,12 @@
final int connNo = 3;
final int reqNo = 20;
final RequestCount requestCount = new RequestCount(connNo * reqNo);
+ final ByteSequence requestData = new ByteSequence();
+ requestData.rnd(reqNo);
- Random rnd = new Random();
-
- // Prepare some random data
- final List testData = new ArrayList(reqNo);
- for (int i = 0; i < reqNo; i++) {
- int size = rnd.nextInt(5000);
- byte[] data = new byte[size];
- rnd.nextBytes(data);
- testData.add(data);
- }
-
- List[] responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
+ List<ByteSequence> responseData = new ArrayList<ByteSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData.add(new ByteSequence());
}
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -670,7 +632,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ByteSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -683,7 +645,7 @@
BasicHttpEntityEnclosingRequest post = null;
if (i < reqNo) {
post = new BasicHttpEntityEnclosingRequest("POST", "/?" + i);
- byte[] data = (byte[]) testData.get(i);
+ byte[] data = requestData.getBytes(i);
ByteArrayEntity outgoing = new ByteArrayEntity(data);
post.setEntity(outgoing);
@@ -696,7 +658,7 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ByteSequence list = (ByteSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
@@ -704,7 +666,7 @@
try {
HttpEntity entity = response.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
- list.add(data);
+ list.addBytes(data);
requestCount.decrement();
} catch (IOException ex) {
requestCount.abort();
@@ -732,10 +694,10 @@
endpoint.waitFor();
InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData.get(i));
}
requestCount.await(10000);
@@ -744,13 +706,13 @@
this.client.shutdown();
this.server.shutdown();
- for (int c = 0; c < responseData.length; c++) {
- List receivedPackets = responseData[c];
- List expectedPackets = testData;
+ for (int c = 0; c < responseData.size(); c++) {
+ ByteSequence receivedPackets = responseData.get(c);
+ ByteSequence expectedPackets = requestData;
assertEquals(expectedPackets.size(), receivedPackets.size());
- for (int p = 0; p < testData.size(); p++) {
- byte[] expected = (byte[]) testData.get(p);
- byte[] received = (byte[]) receivedPackets.get(p);
+ for (int p = 0; p < requestData.size(); p++) {
+ byte[] expected = requestData.getBytes(p);
+ byte[] received = receivedPackets.getBytes(p);
assertEquals(expected.length, received.length);
for (int i = 0; i < expected.length; i++) {
@@ -770,21 +732,12 @@
final int connNo = 3;
final int reqNo = 20;
final RequestCount requestCount = new RequestCount(connNo * reqNo);
+ final ByteSequence requestData = new ByteSequence();
+ requestData.rnd(reqNo);
- Random rnd = new Random();
-
- // Prepare some random data
- final List testData = new ArrayList(reqNo);
- for (int i = 0; i < reqNo; i++) {
- int size = rnd.nextInt(20000);
- byte[] data = new byte[size];
- rnd.nextBytes(data);
- testData.add(data);
- }
-
- List[] responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
+ List<ByteSequence> responseData = new ArrayList<ByteSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData.add(new ByteSequence());
}
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -814,7 +767,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ByteSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -827,7 +780,7 @@
BasicHttpEntityEnclosingRequest post = null;
if (i < reqNo) {
post = new BasicHttpEntityEnclosingRequest("POST", "/?" + i);
- byte[] data = (byte[]) testData.get(i);
+ byte[] data = requestData.getBytes(i);
ByteArrayEntity outgoing = new ByteArrayEntity(data);
outgoing.setChunked(true);
post.setEntity(outgoing);
@@ -841,7 +794,7 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ByteSequence list = (ByteSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
@@ -849,7 +802,7 @@
try {
HttpEntity entity = response.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
- list.add(data);
+ list.addBytes(data);
requestCount.decrement();
} catch (IOException ex) {
requestCount.abort();
@@ -877,10 +830,10 @@
endpoint.waitFor();
InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress();
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData.get(i));
}
requestCount.await(10000);
@@ -889,13 +842,13 @@
this.client.shutdown();
this.server.shutdown();
- for (int c = 0; c < responseData.length; c++) {
- List receivedPackets = responseData[c];
- List expectedPackets = testData;
+ for (int c = 0; c < responseData.size(); c++) {
+ ByteSequence receivedPackets = responseData.get(c);
+ ByteSequence expectedPackets = requestData;
assertEquals(expectedPackets.size(), receivedPackets.size());
- for (int p = 0; p < testData.size(); p++) {
- byte[] expected = (byte[]) testData.get(p);
- byte[] received = (byte[]) receivedPackets.get(p);
+ for (int p = 0; p < requestData.size(); p++) {
+ byte[] expected = requestData.getBytes(p);
+ byte[] received = receivedPackets.getBytes(p);
assertEquals(expected.length, received.length);
for (int i = 0; i < expected.length; i++) {
@@ -914,7 +867,7 @@
final int reqNo = 3;
final RequestCount requestCount = new RequestCount(reqNo);
- final List responses = new ArrayList(reqNo);
+ final ResponseSequence responses = new ResponseSequence();
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -961,7 +914,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ResponseSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -988,7 +941,7 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ResponseSequence list = (ResponseSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
@@ -1003,7 +956,7 @@
}
}
- list.add(response);
+ list.addResponse(response);
requestCount.decrement();
if (i < reqNo) {
@@ -1037,11 +990,11 @@
this.server.shutdown();
assertEquals(reqNo, responses.size());
- HttpResponse response = (HttpResponse) responses.get(0);
+ HttpResponse response = responses.getResponse(0);
assertEquals(HttpStatus.SC_EXPECTATION_FAILED, response.getStatusLine().getStatusCode());
- response = (HttpResponse) responses.get(1);
+ response = responses.getResponse(1);
assertEquals(HttpStatus.SC_EXPECTATION_FAILED, response.getStatusLine().getStatusCode());
- response = (HttpResponse) responses.get(2);
+ response = responses.getResponse(2);
assertEquals(HttpStatus.SC_OK, response.getStatusLine().getStatusCode());
}
@@ -1055,23 +1008,19 @@
final int reqNo = 20;
final RequestCount requestCount = new RequestCount(connNo * reqNo * 2);
- final String[] method = new String[1];
-
- Random rnd = new Random();
+ final ByteSequence requestData = new ByteSequence();
+ requestData.rnd(reqNo);
- // Prepare some random data
- final List testData = new ArrayList(reqNo);
- for (int i = 0; i < reqNo; i++) {
- int size = rnd.nextInt(5000);
- byte[] data = new byte[size];
- rnd.nextBytes(data);
- testData.add(data);
+ List<ResponseSequence> responseData1 = new ArrayList<ResponseSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData1.add(new ResponseSequence());
+ }
+ List<ResponseSequence> responseData2 = new ArrayList<ResponseSequence>(connNo);
+ for (int i = 0; i < connNo; i++) {
+ responseData2.add(new ResponseSequence());
}
- List[] responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
- }
+ final String[] method = new String[1];
HttpRequestHandler requestHandler = new HttpRequestHandler() {
@@ -1089,7 +1038,7 @@
}
int index = Integer.parseInt(uri.getQuery());
- byte[] data = (byte []) testData.get(index);
+ byte[] data = requestData.getBytes(index);
ByteArrayEntity entity = new ByteArrayEntity(data);
response.setEntity(entity);
}
@@ -1099,7 +1048,7 @@
HttpRequestExecutionHandler requestExecutionHandler = new HttpRequestExecutionHandler() {
public void initalizeContext(final HttpContext context, final Object attachment) {
- context.setAttribute("LIST", (List) attachment);
+ context.setAttribute("LIST", (ResponseSequence) attachment);
context.setAttribute("REQ-COUNT", new Integer(0));
context.setAttribute("RES-COUNT", new Integer(0));
}
@@ -1121,12 +1070,12 @@
NHttpConnection conn = (NHttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- List list = (List) context.getAttribute("LIST");
+ ResponseSequence list = (ResponseSequence) context.getAttribute("LIST");
int i = ((Integer) context.getAttribute("RES-COUNT")).intValue();
i++;
context.setAttribute("RES-COUNT", new Integer(i));
- list.add(response);
+ list.addResponse(response);
requestCount.decrement();
if (i < reqNo) {
@@ -1152,45 +1101,39 @@
method[0] = "GET";
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData1.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData1.get(i));
}
requestCount.await(connNo * reqNo, 10000);
assertEquals(connNo * reqNo, requestCount.getValue());
- List[] responseDataGET = responseData;
-
method[0] = "HEAD";
- responseData = new List[connNo];
- for (int i = 0; i < responseData.length; i++) {
- responseData[i] = new ArrayList();
- }
-
- for (int i = 0; i < responseData.length; i++) {
+ for (int i = 0; i < responseData2.size(); i++) {
this.client.openConnection(
new InetSocketAddress("localhost", serverAddress.getPort()),
- responseData[i]);
+ responseData2.get(i));
}
+
requestCount.await(10000);
assertEquals(0, requestCount.getValue());
this.client.shutdown();
this.server.shutdown();
- for (int c = 0; c < responseData.length; c++) {
- List headResponses = responseData[c];
- List getResponses = responseDataGET[c];
- List expectedPackets = testData;
+ for (int c = 0; c < connNo; c++) {
+ ResponseSequence getResponses = responseData1.get(c);
+ ResponseSequence headResponses = responseData2.get(c);
+ ByteSequence expectedPackets = requestData;
assertEquals(expectedPackets.size(), headResponses.size());
assertEquals(expectedPackets.size(), getResponses.size());
- for (int p = 0; p < testData.size(); p++) {
- HttpResponse getResponse = (HttpResponse) getResponses.get(p);
- HttpResponse headResponse = (HttpResponse) headResponses.get(p);
+ for (int p = 0; p < requestData.size(); p++) {
+ HttpResponse getResponse = getResponses.getResponse(p);
+ HttpResponse headResponse = headResponses.getResponse(p);
assertEquals(null, headResponse.getEntity());
Header[] getHeaders = getResponse.getAllHeaders();