Author: mheath
Date: Thu Dec 27 10:09:45 2007
New Revision: 607102
URL: http://svn.apache.org/viewvc?rev=607102&view=rev
Log:
Fixed DIRMINA-495 to add IoFuture to IoSessionInitializer.initializeSession
parameter list.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoConnector.java
Thu Dec 27 10:09:45 2007
@@ -80,7 +80,7 @@
return connect(defaultRemoteAddress, null, null);
}
- public ConnectFuture connect(IoSessionInitializer ioSessionInitializer) {
+ public ConnectFuture connect(IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
SocketAddress defaultRemoteAddress = getDefaultRemoteAddress();
if (defaultRemoteAddress == null) {
throw new IllegalStateException("defaultRemoteAddress is not
set.");
@@ -94,7 +94,7 @@
}
public ConnectFuture connect(SocketAddress remoteAddress,
- IoSessionInitializer callback) {
+ IoSessionInitializer<ConnectFuture> callback) {
return connect(remoteAddress, null, callback);
}
@@ -104,7 +104,7 @@
}
public final ConnectFuture connect(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer
ioSessionInitializer) {
+ SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
if (isDisposing()) {
throw new IllegalStateException("Already disposed.");
}
@@ -173,7 +173,7 @@
* @param localAddress <tt>null</tt> if no local address is specified
*/
protected abstract ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer
ioSessionInitializer);
+ SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer);
/**
* Adds required internal attributes and [EMAIL PROTECTED]
IoFutureListener}s
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoService.java
Thu Dec 27 10:09:45 2007
@@ -703,7 +703,7 @@
return listeners;
}
- protected final void finishSessionInitialization(IoSession session,
IoFuture future, IoSessionInitializer ioSessionInitializer) {
+ protected final <T extends IoFuture> void
finishSessionInitialization(IoSession session, T future,
IoSessionInitializer<T> ioSessionInitializer) {
// Update lastIoTime if needed.
if (getLastReadTime() == 0) {
setLastReadTime(getActivationTime());
@@ -742,7 +742,7 @@
}
if (ioSessionInitializer != null) {
- ioSessionInitializer.initializeSession(session);
+ ioSessionInitializer.initializeSession(session, future);
}
finishSessionInitialization0(session, future);
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/AbstractPollingIoConnector.java
Thu Dec 27 10:09:45 2007
@@ -146,7 +146,7 @@
@Override
@SuppressWarnings("unchecked")
protected final ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress,
IoSessionInitializer callback) {
+ SocketAddress localAddress,
IoSessionInitializer<ConnectFuture> callback) {
H handle = null;
boolean success = false;
try {
@@ -346,9 +346,9 @@
protected final class ConnectionRequest extends DefaultConnectFuture {
private final H handle;
private final long deadline;
- private final IoSessionInitializer ioSessionInitializer;
+ private final IoSessionInitializer<ConnectFuture> ioSessionInitializer;
- public ConnectionRequest(H handle, IoSessionInitializer callback) {
+ public ConnectionRequest(H handle, IoSessionInitializer<ConnectFuture>
callback) {
this.handle = handle;
long timeout = getConnectTimeoutMillis();
if (timeout <= 0L) {
@@ -367,7 +367,7 @@
return deadline;
}
- public IoSessionInitializer getSessionCallback() {
+ public IoSessionInitializer<ConnectFuture> getSessionCallback() {
return ioSessionInitializer;
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoConnector.java Thu
Dec 27 10:09:45 2007
@@ -77,15 +77,16 @@
/**
* Connects to the [EMAIL PROTECTED]
#setDefaultRemoteAddress(SocketAddress) default
- * remote address} and invokes the <code>sessionCallback</code> when the
- * IoSession is created but before [EMAIL PROTECTED]
IoHandler#sessionCreated(IoSession)}
- * is invoked.
+ * remote address} and invokes the <code>ioSessionInitializer</code> when
+ * the IoSession is created but before [EMAIL PROTECTED]
IoHandler#sessionCreated(IoSession)}
+ * is invoked. There is <em>no</em> guarantee that the
<code>ioSessionInitializer</code>
+ * will be invoked before this method returns.
*
* @param ioSessionInitializer the callback to invoke when the [EMAIL
PROTECTED] IoSession} object is created
*
* @throws IllegalStateException if no default remote address is set.
*/
- ConnectFuture connect(IoSessionInitializer ioSessionInitializer);
+ ConnectFuture connect(IoSessionInitializer<ConnectFuture>
ioSessionInitializer);
/**
* Connects to the specified remote address.
@@ -97,8 +98,10 @@
/**
* Connects to the specified remote address and invokes
- * the <code>sessionCallback</code> when the IoSession is created but
before
- * [EMAIL PROTECTED] IoHandler#sessionCreated(IoSession)} is invoked.
+ * the <code>ioSessionInitializer</code> when the IoSession is created but
before
+ * [EMAIL PROTECTED] IoHandler#sessionCreated(IoSession)} is invoked.
There is <em>no</em>
+ * guarantee that the <code>ioSessionInitializer</code> will be invoked
before
+ * this method returns.
*
* @param remoteAddress the remote address to connect to
* @param ioSessionInitializer the callback to invoke when the [EMAIL
PROTECTED] IoSession} object is created
@@ -106,7 +109,7 @@
* @return the [EMAIL PROTECTED] ConnectFuture} instance which is
completed when the
* connection attempt initiated by this call succeeds or fails.
*/
- ConnectFuture connect(SocketAddress remoteAddress, IoSessionInitializer
ioSessionInitializer);
+ ConnectFuture connect(SocketAddress remoteAddress,
IoSessionInitializer<ConnectFuture> ioSessionInitializer);
/**
* Connects to the specified remote address binding to the specified local
address.
@@ -119,9 +122,10 @@
/**
* Connects to the specified remote address binding to the specified local
- * address and invokes the <code>sessionCallback</code> when the IoSession
- * is created but before [EMAIL PROTECTED]
IoHandler#sessionCreated(IoSession)} is
- * invoked.
+ * address and and invokes the <code>ioSessionInitializer</code> when the
+ * IoSession is created but before [EMAIL PROTECTED]
IoHandler#sessionCreated(IoSession)}
+ * is invoked. There is <em>no</em> guarantee that the
<code>ioSessionInitializer</code>
+ * will be invoked before this method returns.
*
* @param remoteAddress the remote address to connect to
* @param localAddress the local interface to bind to
@@ -131,5 +135,5 @@
* connection attempt initiated by this call succeeds or fails.
*/
ConnectFuture connect(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer
ioSessionInitializer);
+ SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer);
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/IoSessionInitializer.java
Thu Dec 27 10:09:45 2007
@@ -26,6 +26,6 @@
* @author The Apache MINA Project ([EMAIL PROTECTED])
* @version $Rev: 600461 $, $Date: 2007-12-03 02:55:52 -0700 (Mon, 03 Dec
2007) $
*/
-public interface IoSessionInitializer {
- void initializeSession(IoSession session);
+public interface IoSessionInitializer<T extends IoFuture> {
+ void initializeSession(IoSession session, T future);
}
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
Thu Dec 27 10:09:45 2007
@@ -63,7 +63,8 @@
@Override
protected ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress,
IoSessionInitializer ioSessionInitializer) {
+ SocketAddress localAddress,
+ IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
VmPipe entry = VmPipeAcceptor.boundHandlers.get(remoteAddress);
if (entry == null) {
return DefaultConnectFuture.newFailedFuture(new IOException(
Modified:
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
---
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
(original)
+++
mina/trunk/core/src/test/java/org/apache/mina/transport/AbstractConnectorTest.java
Thu Dec 27 10:09:45 2007
@@ -130,6 +130,7 @@
final int sessionCreatedInvokedBeforeCallback = 2;
final boolean[] assertions = {false, false, false};
final CountDownLatch latch = new CountDownLatch(2);
+ final ConnectFuture[] callbackFuture = new ConnectFuture[1];
int port = AvailablePortFinder.getNextAvailable(1025);
IoAcceptor acceptor = createAcceptor();
@@ -147,9 +148,10 @@
}
});
- connector.connect(address, new IoSessionInitializer() {
- public void initializeSession(IoSession session) {
+ ConnectFuture future = connector.connect(address, new
IoSessionInitializer<ConnectFuture>() {
+ public void initializeSession(IoSession session, ConnectFuture
future) {
assertions[callbackInvoked] = true;
+ callbackFuture[0] = future;
latch.countDown();
}
});
@@ -158,5 +160,6 @@
assertTrue("Callback was not invoked", assertions[callbackInvoked]);
assertTrue("IoHandler.sessionCreated was not invoked",
assertions[sessionCreatedInvoked]);
assertFalse("IoHandler.sessionCreated was invoked before session
callback", assertions[sessionCreatedInvokedBeforeCallback]);
+ assertSame("Callback future should have been same future as returned
by connect", future, callbackFuture[0]);
}
}
Modified:
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java?rev=607102&r1=607101&r2=607102&view=diff
==============================================================================
---
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
(original)
+++
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialConnector.java
Thu Dec 27 10:09:45 2007
@@ -55,7 +55,7 @@
@Override
protected ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer
ioSessionInitializer) {
+ SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
CommPortIdentifier portId;
Enumeration<?> portList = CommPortIdentifier.getPortIdentifiers();