You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ad...@apache.org on 2010/03/18 20:38:29 UTC
svn commit: r924964 - in /mina/sandbox/adc/ahc: ./
api/src/main/java/org/apache/ahc/api/
api/src/main/java/org/apache/ahc/api/listeners/
api/src/test/java/org/apache/ahc/api/
mina2/src/main/java/org/apache/ahc/mina2/
mina2/src/test/java/org/apache/ahc/...
Author: adc
Date: Thu Mar 18 19:38:28 2010
New Revision: 924964
URL: http://svn.apache.org/viewvc?rev=924964&view=rev
Log:
Test cleanup and removed a very bad idea
Added:
mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java (with props)
Removed:
mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/listeners/ChangeListener.java
mina/sandbox/adc/ahc/mina2/src/test/java/org/apache/ahc/api/
mina/sandbox/adc/ahc/mina3/src/test/java/org/apache/ahc/api/
Modified:
mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureImpl.java
mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpConnection.java
mina/sandbox/adc/ahc/api/src/test/java/org/apache/ahc/api/ClientTest.java
mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpClientFutureException.java
mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpConnection.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java
mina/sandbox/adc/ahc/pom.xml
Modified: mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureImpl.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureImpl.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureImpl.java (original)
+++ mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureImpl.java Thu Mar 18 19:38:28 2010
@@ -26,8 +26,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicReference;
-import org.apache.ahc.api.listeners.ChangeListener;
-
/**
* @version $Revision$ $Date: $
@@ -37,53 +35,48 @@ public class HttpClientFutureImpl<V> imp
private final CountDownLatch latch = new CountDownLatch(1);
private final List<FutureListener<V>> listeners = new ArrayList<FutureListener<V>>();
private final AtomicReference<Object> result = new AtomicReference<Object>();
- private final FutureResultOwner<V> owner;
+ private final FutureResultOwner owner;
private volatile boolean canceled;
- public HttpClientFutureImpl(FutureResultOwner<V> owner)
+ public HttpClientFutureImpl(FutureResultOwner owner)
{
this.owner = owner;
+ }
- owner.set(new ChangeListener<V>()
+ public void exception(Throwable t)
+ {
+ assert !isDone();
+
+ synchronized (latch)
{
- public void exception(Throwable t)
- {
- assert !isDone();
+ result.set(t);
+ latch.countDown();
+ }
- synchronized (latch)
- {
- result.set(t);
- latch.countDown();
- }
-
- for (FutureListener<V> listener : listeners)
- {
- listener.exception(t);
- }
+ for (FutureListener<V> listener : listeners)
+ {
+ listener.exception(t);
+ }
- listeners.clear();
- HttpClientFutureImpl.this.owner.set(null);
- }
+ listeners.clear();
+ }
- public void set(V value)
- {
- assert !isDone();
+ public void set(V value)
+ {
+ assert !isDone();
+
+ synchronized (latch)
+ {
+ result.set(value);
+ latch.countDown();
+ }
- synchronized (latch)
- {
- result.set(value);
- latch.countDown();
- }
-
- for (FutureListener<V> listener : listeners)
- {
- listener.completed(value);
- }
+ for (FutureListener<V> listener : listeners)
+ {
+ listener.completed(value);
+ }
- listeners.clear();
- HttpClientFutureImpl.this.owner.set(null);
- }
- });
+ listeners.clear();
}
@SuppressWarnings({"unchecked"})
@@ -114,11 +107,6 @@ public class HttpClientFutureImpl<V> imp
return this;
}
- protected FutureResultOwner<V> getOwner()
- {
- return owner;
- }
-
public boolean cancel(boolean mayInterruptIfRunning)
{
synchronized (latch)
@@ -173,38 +161,8 @@ public class HttpClientFutureImpl<V> imp
}
}
- public interface FutureResultOwner<V>
+ public interface FutureResultOwner
{
- void set(ChangeListener<V> listener);
-
boolean cancel(boolean mayInterruptIfRunning);
}
-
- public static class ChangeListenerCoordinator<V> implements FutureResultOwner<V>
- {
- private ChangeListener<V> listener;
- private FutureResultOwner<V> owner;
-
- public void set(ChangeListener<V> listener)
- {
- if (this.listener != null) throw new IllegalStateException("Listener already set");
- this.listener = listener;
- }
-
- public boolean cancel(boolean mayInterruptIfRunning)
- {
- return owner != null && owner.cancel(mayInterruptIfRunning);
- }
-
- public ChangeListener<V> getListener()
- {
- return listener;
- }
-
- public void setOwner(FutureResultOwner<V> owner)
- {
- if (this.owner != null) throw new IllegalStateException("Owner already set");
- this.owner = owner;
- }
- }
}
Added: mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java?rev=924964&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java (added)
+++ mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java Thu Mar 18 19:38:28 2010
@@ -0,0 +1,53 @@
+/**
+ * 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.
+ */
+package org.apache.ahc.api;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+
+/**
+ * Instances of this class are used to protect implementations of
+ * <code>HttpClientFuture<V></code>.
+ *
+ * @version $Revision$ $Date$
+ */
+public class HttpClientFutureWrapper<V> implements HttpClientFuture<V>
+{
+ private final HttpClientFuture<V> delegate;
+
+ public HttpClientFutureWrapper(HttpClientFuture<V> delegate)
+ {
+ if (delegate == null) throw new IllegalArgumentException("Delegate cannot be null");
+ this.delegate = delegate;
+ }
+
+ public HttpClientFuture<V> register(FutureListener<V> vFutureListener) { return delegate.register(vFutureListener); }
+
+ public boolean cancel(boolean mayInterruptIfRunning) { return delegate.cancel(mayInterruptIfRunning); }
+
+ public boolean isCancelled() { return delegate.isCancelled(); }
+
+ public boolean isDone() { return delegate.isDone(); }
+
+ public V get() throws InterruptedException, ExecutionException { return delegate.get(); }
+
+ public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { return delegate.get(timeout, unit); }
+}
Propchange: mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Id Author
Propchange: mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpClientFutureWrapper.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpConnection.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpConnection.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpConnection.java (original)
+++ mina/sandbox/adc/ahc/api/src/main/java/org/apache/ahc/api/HttpConnection.java Thu Mar 18 19:38:28 2010
@@ -25,11 +25,11 @@ public interface HttpConnection extends
{
HttpClient getClient();
- HttpConnection equipWith(HttpConfig config);
+ HttpConnection addConfig(HttpConfig config);
- HttpConnection equipWith(HttpListener listener);
+ HttpConnection addListener(HttpListener listener);
- HttpConnection equipWith(String key, Object value);
+ HttpConnection addPair(String key, Object value);
HttpConnection push();
Modified: mina/sandbox/adc/ahc/api/src/test/java/org/apache/ahc/api/ClientTest.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/api/src/test/java/org/apache/ahc/api/ClientTest.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/api/src/test/java/org/apache/ahc/api/ClientTest.java (original)
+++ mina/sandbox/adc/ahc/api/src/test/java/org/apache/ahc/api/ClientTest.java Thu Mar 18 19:38:28 2010
@@ -26,20 +26,28 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.security.SecureRandom;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.TimeUnit;
-import com.acme.ahc.AcmeHttpClient;
-import com.acme.ahc.AcmeHttpRequest;
+import org.apache.ahc.api.listeners.MimeContentListener;
+
import com.acme.ahc.AcmeMockHandle;
import com.acme.ahc.listeners.AcmeSslBenchmarkListener;
import com.acme.ahc.listeners.AcmeSslCertificatManager;
-import org.apache.ahc.api.listeners.MimeContentListener;
import org.junit.Test;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
/**
* @version $Revision$ $Date: $
@@ -47,21 +55,40 @@ import org.junit.Test;
public class ClientTest
{
@Test
- void testBatch() throws Exception
+ @SuppressWarnings({"unchecked"})
+ public void testBatch() throws Exception
{
- HttpClient client = new AcmeHttpClient();
+ AcmeMockHandle handle = new AcmeMockHandle();
+ HttpClient client = mock(HttpClient.class);
+ HttpBatch batch = mock(HttpBatch.class);
+ HttpBatchFuture future = mock(HttpBatchFuture.class);
+ HttpResponse response = mock(HttpResponse.class);
+
+ when(client.batch(50, TimeUnit.MILLISECONDS)).thenReturn(batch);
+ when(batch.get(anyString())).thenReturn(batch);
+ when(batch.post(anyString(), any(Map.class))).thenReturn(batch);
+ when(batch.push()).thenReturn(batch);
+ when(batch.pop()).thenReturn(batch);
+ when(batch.addListener(any(HttpListener.class))).thenReturn(batch);
+ when(batch.addPair(anyString(), anyObject())).thenReturn(batch);
+ when(batch.submit()).thenReturn(future);
+ when(response.getEquip("OBJECT_HANDLE")).thenReturn(handle);
+
+ when(future.get()).thenReturn(Collections.<HttpResponse>singletonList(response));
+
client.equipWith(new AcmeSslCertificatManager());
client.equipWith("CLIENT_ID", "92341");
Map<String, String> map = new HashMap<String, String>();
- HttpBatchFuture future = client
+
+ HttpBatchFuture batchFuture = client
.batch(50, TimeUnit.MILLISECONDS)
.get("http://rest.acme.com/rest/student/324525?token=dFWEGV8ss63dmcs0245c")
.push()
.addListener(new AcmeSslBenchmarkListener())
- .addPair("OBJECT_HANDLE", new AcmeMockHandle())
+ .addPair("OBJECT_HANDLE", handle)
.get("https://rest.acme.com/rest/student/5246?token=dFWEGV8ss63dmcs0245c")
.pop()
@@ -73,19 +100,26 @@ public class ClientTest
.submit();
- List<HttpResponse> responses = future.get();
- for (HttpResponse response : responses)
+ List<HttpResponse> responses = batchFuture.get();
+ for (HttpResponse hr : responses)
{
- AcmeMockHandle handle = (AcmeMockHandle)response.getEquip("OBJECT_HANDLE");
+ assertSame(handle, hr.getEquip("OBJECT_HANDLE"));
}
}
@Test
- void testSend() throws Exception
+ @SuppressWarnings({"unchecked"})
+ public void testSend() throws Exception
{
- HttpClient client = new AcmeHttpClient();
+ HttpClient client = mock(HttpClient.class);
+ HttpClientFuture<HttpResponse> future = mock(HttpClientFuture.class);
+ HttpResponse response = mock(HttpResponse.class);
+
+ when(client.get(anyString())).thenReturn(future);
+ when(future.register(any(FutureListener.class))).thenReturn(future);
+ when(future.get()).thenReturn(response);
- HttpResponse response = client.get("http://rest.acme.com/rest/student/41134?token=dFWEGV8ss63dmcs0245c")
+ HttpResponse hr = client.get("http://rest.acme.com/rest/student/41134?token=dFWEGV8ss63dmcs0245c")
.register(new FutureListener<HttpResponse>()
{
public void exception(Throwable t)
@@ -99,28 +133,46 @@ public class ClientTest
}
})
.get();
+
+ assertNotNull(hr);
}
@Test
- void testSendMultipleAttachments() throws Exception
+ @SuppressWarnings({"unchecked"})
+ public void testSendMultipleAttachments() throws Exception
{
- HttpClient client = new AcmeHttpClient();
-
- HttpRequest request = new AcmeHttpRequest();
+ HttpRequest request = mock(HttpRequest.class);
+ HttpClient client = mock(HttpClient.class);
+ HttpClientFuture<HttpResponse> future = mock(HttpClientFuture.class);
+ HttpResponse response = mock(HttpResponse.class);
+
+ when(request.setUrl(any(URL.class))).thenReturn(request);
+ when(request.addMimeContent(any(MimeContent.class))).thenReturn(request);
+ when(request.addMimeContent(any(MimeContent.class), any(MimeContent.class))).thenReturn(request);
+ when(client.send(any(HttpRequest.class))).thenReturn(future);
+ when(future.get()).thenReturn(response);
request.setUrl(new URL("http://rest.acme.com/rest/student/41134?token=dFWEGV8ss63dmcs0245"))
.addMimeContent(generateXml())
.addMimeContent(generateDmg(), generateRandom());
- HttpResponse response = client.send(request).get();
+ HttpResponse hr = client.send(request).get();
+
+ assertNotNull(hr);
}
@Test
- void testReceiveMultipleAttachments() throws Exception
+ public void testReceiveMultipleAttachments() throws Exception
{
- HttpClient client = new AcmeHttpClient();
-
- HttpRequest request = new AcmeHttpRequest();
+ HttpClient client = mock(HttpClient.class);
+ HttpRequest request = mock(HttpRequest.class);
+ HttpClientFuture<HttpResponse> future = mock(HttpClientFuture.class);
+ HttpResponse response = mock(HttpResponse.class);
+
+ when(request.setUrl(any(URL.class))).thenReturn(request);
+ when(request.addMimeContentListener(any(MimeContentListener.class))).thenReturn(request);
+ when(client.send(any(HttpRequest.class))).thenReturn(future);
+ when(future.get()).thenReturn(response);
request.setUrl(new URL("http://rest.acme.com/rest/student/41134?token=dFWEGV8ss63dmcs0245"))
.addMimeContentListener(new MimeContentListener()
@@ -131,7 +183,9 @@ public class ClientTest
}
});
- HttpResponse response = client.send(request).get();
+ HttpResponse hr = client.send(request).get();
+
+ assertNotNull(hr);
}
private MimeContent generateXml()
Modified: mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpClientFutureException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpClientFutureException.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpClientFutureException.java (original)
+++ mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpClientFutureException.java Thu Mar 18 19:38:28 2010
@@ -29,7 +29,14 @@ public class AsyncHttpClientFutureExcept
{
public AsyncHttpClientFutureException(Throwable t)
{
- super(new HttpClientFutureImpl.ChangeListenerCoordinator<HttpResponse>());
- ((HttpClientFutureImpl.ChangeListenerCoordinator<HttpResponse>)getOwner()).getListener().exception(t);
+ super(new FutureResultOwner()
+ {
+ public boolean cancel(boolean mayInterruptIfRunning)
+ {
+ return false;
+ }
+ });
+
+ exception(t);
}
}
Modified: mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpConnection.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpConnection.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpConnection.java (original)
+++ mina/sandbox/adc/ahc/mina2/src/main/java/org/apache/ahc/mina2/AsyncHttpConnection.java Thu Mar 18 19:38:28 2010
@@ -28,7 +28,6 @@ import org.apache.ahc.api.HttpConnection
import org.apache.ahc.api.HttpListener;
import org.apache.ahc.api.HttpRequest;
import org.apache.ahc.api.HttpResponse;
-import org.apache.ahc.api.listeners.ChangeListener;
import org.apache.ahc.mina2.api.IoSessionCache;
import org.apache.ahc.mina2.api.SessionConfigListener;
import org.apache.mina.core.future.ConnectFuture;
@@ -64,21 +63,21 @@ public class AsyncHttpConnection impleme
return stack.get(key);
}
- public HttpConnection equipWith(HttpConfig config)
+ public HttpConnection addConfig(HttpConfig config)
{
stack.equipWith(config);
return this;
}
- public HttpConnection equipWith(HttpListener listener)
+ public HttpConnection addListener(HttpListener listener)
{
stack.equipWith(listener);
return this;
}
- public HttpConnection equipWith(String key, Object value)
+ public HttpConnection addPair(String key, Object value)
{
stack.equipWith(key, value);
@@ -114,10 +113,9 @@ public class AsyncHttpConnection impleme
ConnectFuture future = new DefaultConnectFuture();
future.setSession(session);
- return new HttpClientFutureImpl<HttpResponse>(new HttpClientFutureImpl.FutureResultOwner<HttpResponse>()
+ return new HttpClientFutureImpl<HttpResponse>(new HttpClientFutureImpl.FutureResultOwner()
{
EquipmentStack e = new EquipmentStack(stack);
- ChangeListener<HttpResponse> changeListener;
{
ConnectFuture future = connector.connect();
@@ -183,11 +181,6 @@ public class AsyncHttpConnection impleme
});
}
- public void set(ChangeListener<HttpResponse> changeListener)
- {
- this.changeListener = changeListener;
- }
-
public boolean cancel(boolean mayInterruptIfRunning)
{
return false; //Todo change body of implemented methods use File | Settings | File Templates.
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpClientFutureException.java Thu Mar 18 19:38:28 2010
@@ -29,7 +29,14 @@ public class AsyncHttpClientFutureExcept
{
public AsyncHttpClientFutureException(Throwable t)
{
- super(new HttpClientFutureImpl.ChangeListenerCoordinator<HttpResponse>());
- ((HttpClientFutureImpl.ChangeListenerCoordinator<HttpResponse>)getOwner()).getListener().exception(t);
+ super(new FutureResultOwner()
+ {
+ public boolean cancel(boolean mayInterruptIfRunning)
+ {
+ return false;
+ }
+ });
+
+ exception(t);
}
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/ahc/mina3/AsyncHttpConnection.java Thu Mar 18 19:38:28 2010
@@ -25,13 +25,14 @@ import java.util.concurrent.atomic.Atomi
import org.apache.ahc.api.HttpClient;
import org.apache.ahc.api.HttpClientFuture;
import org.apache.ahc.api.HttpClientFutureImpl;
+import org.apache.ahc.api.HttpClientFutureWrapper;
import org.apache.ahc.api.HttpConfig;
import org.apache.ahc.api.HttpConnection;
import org.apache.ahc.api.HttpListener;
import org.apache.ahc.api.HttpRequest;
import org.apache.ahc.api.HttpResponse;
-import org.apache.ahc.api.listeners.ChangeListener;
import org.apache.ahc.mina3.api.IoSessionCache;
+
import org.apache.mina.core.IoConnector;
import org.apache.mina.core.IoFuture;
import org.apache.mina.core.IoFutureListener;
@@ -63,21 +64,21 @@ public class AsyncHttpConnection impleme
return stack.get(key);
}
- public HttpConnection equipWith(HttpConfig config)
+ public HttpConnection addConfig(HttpConfig config)
{
stack.addConfig(config);
return this;
}
- public HttpConnection equipWith(HttpListener listener)
+ public HttpConnection addListener(HttpListener listener)
{
stack.addListener(listener);
return this;
}
- public HttpConnection equipWith(String key, Object value)
+ public HttpConnection addPair(String key, Object value)
{
stack.addPair(key, value);
@@ -112,36 +113,31 @@ public class AsyncHttpConnection impleme
IoSessionCache cache = request.getConfig(IoSessionCache.class);
IoConnector connector = (IoConnector)request.getValue(IoConnector.class.getName());
- final AtomicReference<ChangeListener<HttpResponse>> listenerReference = new AtomicReference<ChangeListener<HttpResponse>>();
- IoSession session = cache.getIoSession(connector, address);
-
- final IoFuture<HttpResponse> future = session.<HttpResponse>send(request).register(new IoFutureListener<HttpResponse>()
+ final AtomicReference<IoFuture<HttpResponse>> ioFutureAtomicReference = new AtomicReference<IoFuture<HttpResponse>>();
+ final HttpClientFutureImpl<HttpResponse> future = new HttpClientFutureImpl<HttpResponse>(new HttpClientFutureImpl.FutureResultOwner()
{
- public void exception(Throwable t)
- {
- listenerReference.get().exception(t);
- }
-
- public void completed(HttpResponse result)
+ public boolean cancel(boolean mayInterruptIfRunning)
{
- listenerReference.get().set(result);
+ return ioFutureAtomicReference.get().cancel(mayInterruptIfRunning);
}
});
- HttpClientFutureImpl.FutureResultOwner<HttpResponse> owner = new HttpClientFutureImpl.FutureResultOwner<HttpResponse>()
+ IoSession session = cache.getIoSession(connector, address);
+
+ ioFutureAtomicReference.set(session.<HttpResponse>send(request).register(new IoFutureListener<HttpResponse>()
{
- public void set(ChangeListener<HttpResponse> listener)
+ public void exception(Throwable t)
{
- listenerReference.set(listener);
+ future.exception(t);
}
- public boolean cancel(boolean mayInterruptIfRunning)
+ public void completed(HttpResponse result)
{
- return future.cancel(mayInterruptIfRunning);
+ future.set(result);
}
- };
+ }));
- return new HttpClientFutureImpl<HttpResponse>(owner);
+ return new HttpClientFutureWrapper<HttpResponse>(future);
}
}
catch (Throwable throwable)
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java Thu Mar 18 19:38:28 2010
@@ -38,7 +38,6 @@ public class SslChannel extends StateMac
{
private SslConfig sslConfig;
private IoByteBufferFactory factory;
- private ByteBuffer byteBuffer;
private SSLEngine engine;
public SslChannel()
@@ -74,14 +73,12 @@ public class SslChannel extends StateMac
engine.beginHandshake();
- byteBuffer = factory.allocate(engine.getSession().getPacketBufferSize()).get();
-
setState(SslStates.HANDSHAKE);
if (!sslConfig.isLazyHandshake())
{
HandshakeChannelState state = (HandshakeChannelState) getStates().get(SslStates.HANDSHAKE).get(0);
- state.setByteBuffer(byteBuffer);
+ state.setFactory(factory);
state.setEngine(engine);
IoBuffer message = (IoBuffer) state.send(this, IoBuffer.EMPTY);
@@ -97,12 +94,6 @@ public class SslChannel extends StateMac
engine.closeOutbound();
}
- @IoProperty(name = "byteBuffer", scope = IoPropertyScope.SESSION)
- public ByteBuffer getByteBuffer()
- {
- return byteBuffer;
- }
-
@IoProperty(name = "engine", scope = IoPropertyScope.SESSION)
public SSLEngine getEngine()
{
Modified: mina/sandbox/adc/ahc/pom.xml
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/pom.xml?rev=924964&r1=924963&r2=924964&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/pom.xml (original)
+++ mina/sandbox/adc/ahc/pom.xml Thu Mar 18 19:38:28 2010
@@ -68,6 +68,13 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.8.2</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<dependencyManagement>