Author: trustin
Date: Thu Dec 27 19:20:07 2007
New Revision: 607163
URL: http://svn.apache.org/viewvc?rev=607163&view=rev
Log:
Related issue: DIRMINA-495 (IoConnector needs a way to store information into
the IoSession before the IoHandler gets ahold of it)
* Changed IoSessionInitializer<ConnectFuture> to IoSessionInitializer<? extends
ConnectFuture> for more API flexibility
* Introduced @SuppressWarning inevitably eek!
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/transport/vmpipe/VmPipeConnector.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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -80,13 +80,13 @@
return connect(defaultRemoteAddress, null, null);
}
- public ConnectFuture connect(IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
+ public ConnectFuture connect(IoSessionInitializer<? extends ConnectFuture>
sessionInitializer) {
SocketAddress defaultRemoteAddress = getDefaultRemoteAddress();
if (defaultRemoteAddress == null) {
throw new IllegalStateException("defaultRemoteAddress is not
set.");
}
- return connect(defaultRemoteAddress, null, ioSessionInitializer);
+ return connect(defaultRemoteAddress, null, sessionInitializer);
}
public final ConnectFuture connect(SocketAddress remoteAddress) {
@@ -94,8 +94,8 @@
}
public ConnectFuture connect(SocketAddress remoteAddress,
- IoSessionInitializer<ConnectFuture> callback) {
- return connect(remoteAddress, null, callback);
+ IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
+ return connect(remoteAddress, null, sessionInitializer);
}
public ConnectFuture connect(SocketAddress remoteAddress,
@@ -104,7 +104,7 @@
}
public final ConnectFuture connect(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
+ SocketAddress localAddress, IoSessionInitializer<? extends
ConnectFuture> sessionInitializer) {
if (isDisposing()) {
throw new IllegalStateException("Already disposed.");
}
@@ -164,7 +164,7 @@
}
}
- return connect0(remoteAddress, localAddress, ioSessionInitializer);
+ return connect0(remoteAddress, localAddress, sessionInitializer);
}
/**
@@ -173,7 +173,7 @@
* @param localAddress <tt>null</tt> if no local address is specified
*/
protected abstract ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer);
+ SocketAddress localAddress, IoSessionInitializer<? extends
ConnectFuture> sessionInitializer);
/**
* 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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -703,7 +703,10 @@
return listeners;
}
- protected final <T extends IoFuture> void
finishSessionInitialization(IoSession session, T future,
IoSessionInitializer<T> ioSessionInitializer) {
+ // TODO Figure out make it work without causing a compiler error / warning.
+ @SuppressWarnings("unchecked")
+ protected final void finishSessionInitialization(
+ IoSession session, IoFuture future, IoSessionInitializer
sessionInitializer) {
// Update lastIoTime if needed.
if (getLastReadTime() == 0) {
setLastReadTime(getActivationTime());
@@ -741,8 +744,8 @@
session.setAttribute(DefaultIoFilterChain.SESSION_OPENED_FUTURE,
future);
}
- if (ioSessionInitializer != null) {
- ioSessionInitializer.initializeSession(session, future);
+ if (sessionInitializer != null) {
+ sessionInitializer.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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -145,8 +145,9 @@
@Override
@SuppressWarnings("unchecked")
- protected final ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress,
IoSessionInitializer<ConnectFuture> callback) {
+ protected final ConnectFuture connect0(
+ SocketAddress remoteAddress, SocketAddress localAddress,
+ IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
H handle = null;
boolean success = false;
try {
@@ -154,7 +155,7 @@
if (connect(handle, remoteAddress)) {
ConnectFuture future = new DefaultConnectFuture();
T session = newSession(processor, handle);
- finishSessionInitialization(session, future, callback);
+ finishSessionInitialization(session, future,
sessionInitializer);
// Forward the remaining process to the IoProcessor.
session.getProcessor().add(session);
success = true;
@@ -174,7 +175,7 @@
}
}
- ConnectionRequest request = new ConnectionRequest(handle, callback);
+ ConnectionRequest request = new ConnectionRequest(handle,
sessionInitializer);
connectQueue.add(request);
startupWorker();
wakeup();
@@ -252,7 +253,7 @@
try {
if (finishConnect(handle)) {
T session = newSession(processor, handle);
- finishSessionInitialization(session, entry,
entry.getSessionCallback());
+ finishSessionInitialization(session, entry,
entry.getSessionInitializer());
// Forward the remaining process to the IoProcessor.
session.getProcessor().add(session);
nHandles ++;
@@ -346,9 +347,9 @@
protected final class ConnectionRequest extends DefaultConnectFuture {
private final H handle;
private final long deadline;
- private final IoSessionInitializer<ConnectFuture> ioSessionInitializer;
+ private final IoSessionInitializer<? extends ConnectFuture>
sessionInitializer;
- public ConnectionRequest(H handle, IoSessionInitializer<ConnectFuture>
callback) {
+ public ConnectionRequest(H handle, IoSessionInitializer<? extends
ConnectFuture> callback) {
this.handle = handle;
long timeout = getConnectTimeoutMillis();
if (timeout <= 0L) {
@@ -356,7 +357,7 @@
} else {
this.deadline = System.currentTimeMillis() + timeout;
}
- this.ioSessionInitializer = callback;
+ this.sessionInitializer = callback;
}
public H getHandle() {
@@ -367,8 +368,8 @@
return deadline;
}
- public IoSessionInitializer<ConnectFuture> getSessionCallback() {
- return ioSessionInitializer;
+ public IoSessionInitializer<? extends ConnectFuture>
getSessionInitializer() {
+ return sessionInitializer;
}
@Override
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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -82,11 +82,11 @@
* 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
+ * @param sessionInitializer the callback to invoke when the [EMAIL
PROTECTED] IoSession} object is created
*
* @throws IllegalStateException if no default remote address is set.
*/
- ConnectFuture connect(IoSessionInitializer<ConnectFuture>
ioSessionInitializer);
+ ConnectFuture connect(IoSessionInitializer<? extends ConnectFuture>
sessionInitializer);
/**
* Connects to the specified remote address.
@@ -104,12 +104,12 @@
* 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
+ * @param sessionInitializer the callback to invoke when the [EMAIL
PROTECTED] IoSession} object is created
*
* @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<ConnectFuture> ioSessionInitializer);
+ ConnectFuture connect(SocketAddress remoteAddress, IoSessionInitializer<?
extends ConnectFuture> sessionInitializer);
/**
* Connects to the specified remote address binding to the specified local
address.
@@ -117,8 +117,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,
- SocketAddress localAddress);
+ ConnectFuture connect(SocketAddress remoteAddress, SocketAddress
localAddress);
/**
* Connects to the specified remote address binding to the specified local
@@ -129,11 +128,11 @@
*
* @param remoteAddress the remote address to connect to
* @param localAddress the local interface to bind to
- * @param ioSessionInitializer the callback to invoke when the [EMAIL
PROTECTED] IoSession} object is created
+ * @param sessionInitializer the callback to invoke when the [EMAIL
PROTECTED] IoSession} object is created
*
* @return the [EMAIL PROTECTED] ConnectFuture} instance which is
completed when the
* connection attempt initiated by this call succeeds or fails.
*/
ConnectFuture connect(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer);
+ SocketAddress localAddress, IoSessionInitializer<? extends
ConnectFuture> sessionInitializer);
}
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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -64,7 +64,7 @@
@Override
protected ConnectFuture connect0(SocketAddress remoteAddress,
SocketAddress localAddress,
- IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
+ IoSessionInitializer<? extends
ConnectFuture> sessionInitializer) {
VmPipe entry = VmPipeAcceptor.boundHandlers.get(remoteAddress);
if (entry == null) {
return DefaultConnectFuture.newFailedFuture(new IOException(
@@ -84,7 +84,7 @@
VmPipeSessionImpl localSession = new VmPipeSessionImpl(this,
getListeners(), actualLocalAddress, getHandler(), entry);
- finishSessionInitialization(localSession, future,
ioSessionInitializer);
+ finishSessionInitialization(localSession, future, sessionInitializer);
// and reclaim the local address when the connection is closed.
localSession.getCloseFuture().addListener(LOCAL_ADDRESS_RECLAIMER);
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=607163&r1=607162&r2=607163&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 19:20:07 2007
@@ -54,8 +54,9 @@
}
@Override
- protected ConnectFuture connect0(SocketAddress remoteAddress,
- SocketAddress localAddress, IoSessionInitializer<ConnectFuture>
ioSessionInitializer) {
+ protected ConnectFuture connect0(
+ SocketAddress remoteAddress, SocketAddress localAddress,
+ IoSessionInitializer<? extends ConnectFuture> sessionInitializer) {
CommPortIdentifier portId;
Enumeration<?> portList = CommPortIdentifier.getPortIdentifiers();
@@ -83,7 +84,7 @@
ConnectFuture future = new DefaultConnectFuture();
SerialSessionImpl session = new SerialSessionImpl(
this, getListeners(), portAddress, serialPort);
- finishSessionInitialization(session, future,
ioSessionInitializer);
+ finishSessionInitialization(session, future,
sessionInitializer);
session.start();
return future;
} catch (PortInUseException e) {