You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/08/18 03:50:00 UTC

svn commit: r567200 - in /mina/trunk: core/src/main/java/org/apache/mina/common/ core/src/main/java/org/apache/mina/transport/socket/nio/ core/src/main/java/org/apache/mina/transport/vmpipe/ transport-serial/src/main/java/org/apache/mina/transport/serial/

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 {@link 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
      * {@link IoSession} that is managed by the service.
      */
-    Class<? extends Object> getEnvelopeType();
+    Set<Class<? extends Object>> getEnvelopeTypes();
 
     /**
      * Returns the type of the {@link 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;