Author: trustin
Date: Fri Aug 17 18:49:59 2007
New Revision: 567200
URL: http://svn.apache.org/viewvc?view=rev&rev=567200
Log:
* Moved IoServiceMetadata instances to session implementation classes like
Julien did. (I didn't like subclassing anyway :)
* IoServiceMetadata.envelopeType has been replaced with
IoServiceMetadata.envelopeTypes (java.util.Set)
Removed:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramServiceMetadata.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketServiceMetadata.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeServiceMetadata.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoServiceMetadata.java
mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceMetadata.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionImpl.java
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoServiceMetadata.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoServiceMetadata.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoServiceMetadata.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/common/DefaultIoServiceMetadata.java
Fri Aug 17 18:49:59 2007
@@ -20,6 +20,10 @@
package org.apache.mina.common;
import java.net.SocketAddress;
+import java.util.Collections;
+import java.util.Set;
+
+import org.apache.mina.util.IdentityHashSet;
/**
@@ -34,16 +38,16 @@
private final boolean connectionless;
private final boolean fragmentation;
private final Class<? extends SocketAddress> addressType;
- private final Class<? extends Object> envelopeType;
private final Class<? extends IoSessionConfig> sessionConfigType;
+ private final Set<Class<? extends Object>> envelopeTypes;
public DefaultIoServiceMetadata(
String name,
boolean connectionless,
boolean fragmentation,
Class<? extends SocketAddress> addressType,
- Class<? extends Object> envelopeType,
- Class<? extends IoSessionConfig> sessionConfigType) {
+ Class<? extends IoSessionConfig> sessionConfigType,
+ Class<?>... envelopeTypes) {
if (name == null) {
throw new NullPointerException("name");
@@ -59,8 +63,12 @@
throw new NullPointerException("addressType");
}
- if (envelopeType == null) {
- throw new NullPointerException("envelopeType");
+ if (envelopeTypes == null) {
+ throw new NullPointerException("envelopeTypes");
+ }
+
+ if (envelopeTypes.length == 0) {
+ throw new NullPointerException("envelopeTypes is empty.");
}
if (sessionConfigType == null) {
@@ -71,16 +79,22 @@
this.connectionless = connectionless;
this.fragmentation = fragmentation;
this.addressType = addressType;
- this.envelopeType = envelopeType;
this.sessionConfigType = sessionConfigType;
+
+ Set<Class<? extends Object>> newEnvelopeTypes =
+ new IdentityHashSet<Class<? extends Object>>();
+ for (Class<? extends Object> c: envelopeTypes) {
+ newEnvelopeTypes.add(c);
+ }
+ this.envelopeTypes = Collections.unmodifiableSet(newEnvelopeTypes);
}
public Class<? extends SocketAddress> getAddressType() {
return addressType;
}
- public Class<? extends Object> getEnvelopeType() {
- return envelopeType;
+ public Set<Class<? extends Object>> getEnvelopeTypes() {
+ return envelopeTypes;
}
public Class<? extends IoSessionConfig> getSessionConfigType() {
Modified:
mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceMetadata.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceMetadata.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceMetadata.java
(original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoServiceMetadata.java
Fri Aug 17 18:49:59 2007
@@ -20,6 +20,7 @@
package org.apache.mina.common;
import java.net.SocketAddress;
+import java.util.Set;
/**
* Provides meta-information that describes an [EMAIL PROTECTED] IoService}.
@@ -53,10 +54,10 @@
Class<? extends SocketAddress> getAddressType();
/**
- * Returns the allowed message type when you write to an
+ * Returns the set of the allowed message type when you write to an
* [EMAIL PROTECTED] IoSession} that is managed by the service.
*/
- Class<? extends Object> getEnvelopeType();
+ Set<Class<? extends Object>> getEnvelopeTypes();
/**
* Returns the type of the [EMAIL PROTECTED] IoSessionConfig} of the
service
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramAcceptor.java
Fri Aug 17 18:49:59 2007
@@ -111,7 +111,7 @@
}
public IoServiceMetadata getMetadata() {
- return DatagramServiceMetadata.INSTANCE;
+ return DatagramSessionImpl.METADATA;
}
@Override
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramConnector.java
Fri Aug 17 18:49:59 2007
@@ -102,7 +102,7 @@
}
public IoServiceMetadata getMetadata() {
- return DatagramServiceMetadata.INSTANCE;
+ return DatagramSessionImpl.METADATA;
}
@Override
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DatagramSessionImpl.java
Fri Aug 17 18:49:59 2007
@@ -29,10 +29,12 @@
import org.apache.mina.common.AbstractIoSession;
import org.apache.mina.common.ByteBuffer;
+import org.apache.mina.common.DefaultIoServiceMetadata;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.common.IoFilterChain;
import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoService;
+import org.apache.mina.common.IoServiceMetadata;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.IoSessionConfig;
import org.apache.mina.common.RuntimeIOException;
@@ -46,6 +48,13 @@
* @version $Rev$, $Date$
*/
class DatagramSessionImpl extends AbstractIoSession implements DatagramSession
{
+
+ static final IoServiceMetadata METADATA =
+ new DefaultIoServiceMetadata(
+ "datagram", true, false,
+ InetSocketAddress.class,
+ DatagramSessionConfig.class, ByteBuffer.class);
+
private final IoService service;
private final DatagramSessionConfig config = new SessionConfigImpl();
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketAcceptor.java
Fri Aug 17 18:49:59 2007
@@ -170,7 +170,7 @@
* @see org.apache.mina.common.IoService#getMetadata()
*/
public IoServiceMetadata getMetadata() {
- return SocketServiceMetadata.INSTANCE;
+ return SocketSessionImpl.METADATA;
}
/**
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketConnector.java
Fri Aug 17 18:49:59 2007
@@ -124,7 +124,7 @@
}
public IoServiceMetadata getMetadata() {
- return SocketServiceMetadata.INSTANCE;
+ return SocketSessionImpl.METADATA;
}
@Override
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionImpl.java
Fri Aug 17 18:49:59 2007
@@ -29,9 +29,11 @@
import org.apache.mina.common.AbstractIoSession;
import org.apache.mina.common.AbstractIoSessionConfig;
import org.apache.mina.common.ByteBuffer;
+import org.apache.mina.common.DefaultIoServiceMetadata;
import org.apache.mina.common.IoFilterChain;
import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoService;
+import org.apache.mina.common.IoServiceMetadata;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.IoSessionConfig;
import org.apache.mina.common.RuntimeIOException;
@@ -44,6 +46,14 @@
* @version $Rev$, $Date$
*/
class SocketSessionImpl extends AbstractIoSession implements SocketSession {
+
+ static final IoServiceMetadata METADATA =
+ new DefaultIoServiceMetadata(
+ "socket", false, true,
+ InetSocketAddress.class,
+ SocketSessionConfig.class,
+ ByteBuffer.class);
+
private final IoService service;
private final SocketSessionConfig config = new SessionConfigImpl();
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
Fri Aug 17 18:49:59 2007
@@ -47,7 +47,7 @@
}
public IoServiceMetadata getMetadata() {
- return VmPipeServiceMetadata.INSTANCE;
+ return VmPipeSessionImpl.METADATA;
}
@Override
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?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
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
Fri Aug 17 18:49:59 2007
@@ -53,7 +53,7 @@
}
public IoServiceMetadata getMetadata() {
- return VmPipeServiceMetadata.INSTANCE;
+ return VmPipeSessionImpl.METADATA;
}
@Override
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionImpl.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionImpl.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionImpl.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionImpl.java
Fri Aug 17 18:49:59 2007
@@ -25,10 +25,12 @@
import java.util.concurrent.LinkedBlockingQueue;
import org.apache.mina.common.AbstractIoSession;
+import org.apache.mina.common.DefaultIoServiceMetadata;
import org.apache.mina.common.IoFilterChain;
import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoService;
import org.apache.mina.common.IoServiceListenerSupport;
+import org.apache.mina.common.IoServiceMetadata;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.WriteRequest;
@@ -39,6 +41,14 @@
* @version $Rev$, $Date$
*/
class VmPipeSessionImpl extends AbstractIoSession implements VmPipeSession {
+
+ static final IoServiceMetadata METADATA =
+ new DefaultIoServiceMetadata(
+ "vmpipe", false, false,
+ VmPipeAddress.class,
+ VmPipeSessionConfig.class,
+ Object.class);
+
private static final VmPipeSessionConfig CONFIG = new
DefaultVmPipeSessionConfig();
private final IoService service;
Modified:
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
URL:
http://svn.apache.org/viewvc/mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java?view=diff&rev=567200&r1=567199&r2=567200
==============================================================================
---
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
(original)
+++
mina/trunk/transport-serial/src/main/java/org/apache/mina/transport/serial/SerialSession.java
Fri Aug 17 18:49:59 2007
@@ -78,7 +78,7 @@
static final IoServiceMetadata METADATA =
new DefaultIoServiceMetadata(
"serial", false, true, SerialAddress.class,
- ByteBuffer.class, SerialSessionConfig.class);
+ SerialSessionConfig.class, ByteBuffer.class);
SerialSession(IoService service, SerialAddress address, SerialPort port) {
this.service = service;