You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/05/09 13:08:00 UTC

svn commit: r169280 - in /directory/network/branches/api_integration/src: examples/org/apache/mina/examples/tennis/ java/org/apache/mina/common/ java/org/apache/mina/registry/

Author: trustin
Date: Mon May  9 04:07:58 2005
New Revision: 169280

URL: http://svn.apache.org/viewcvs?rev=169280&view=rev
Log:
* Added: TransportType.envelopeType to check the eventual type of filtered message.
* AbstractIoFilterChain checks TransportType.envelopeType

Modified:
    directory/network/branches/api_integration/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java
    directory/network/branches/api_integration/src/java/org/apache/mina/common/AbstractIoFilterChain.java
    directory/network/branches/api_integration/src/java/org/apache/mina/common/IoSessionFilterChain.java
    directory/network/branches/api_integration/src/java/org/apache/mina/common/TransportType.java
    directory/network/branches/api_integration/src/java/org/apache/mina/registry/SimpleServiceRegistry.java

Modified: directory/network/branches/api_integration/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java?rev=169280&r1=169279&r2=169280&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java (original)
+++ directory/network/branches/api_integration/src/examples/org/apache/mina/examples/tennis/TennisPlayer.java Mon May  9 04:07:58 2005
@@ -56,4 +56,10 @@
     {
         System.out.println( "Player-" + id + ": SENT " + message );
     }
+    
+    public void exceptionCaught( IoSession session, Throwable cause )
+    {
+        cause.printStackTrace();
+        session.close();
+    }
 }

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/common/AbstractIoFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/common/AbstractIoFilterChain.java?rev=169280&r1=169279&r2=169280&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/common/AbstractIoFilterChain.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/common/AbstractIoFilterChain.java Mon May  9 04:07:58 2005
@@ -108,13 +108,21 @@
             public void filterWrite( NextFilter nextFilter, IoSession session,
                                      Object message )
             {
-                if( message instanceof ByteBuffer )
+                if( message == null )
+                {
+                    throw new NullPointerException( "Filtered message is null" );
+                }
+
+                if( session.getTransportType().getEnvelopeType().isAssignableFrom( message.getClass() ) )
                 {
                     doWrite( session, message );
                 }
                 else
                 {
-                    throw new IllegalStateException( "Write requests must be transformed to ByteBuffers: " + message );
+                    throw new IllegalStateException(
+                            "Write requests must be transformed to " + 
+                            session.getTransportType().getEnvelopeType() +
+                            ": " + message );
                 }
             }
         };

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/common/IoSessionFilterChain.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/common/IoSessionFilterChain.java?rev=169280&r1=169279&r2=169280&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/common/IoSessionFilterChain.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/common/IoSessionFilterChain.java Mon May  9 04:07:58 2005
@@ -36,7 +36,7 @@
     {
         this.managerChain = managerChain;
     }
-
+    
     protected void doWrite( IoSession session, Object message )
     {
         managerChain.filterWrite( session, message );

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/common/TransportType.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/common/TransportType.java?rev=169280&r1=169279&r2=169280&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/common/TransportType.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/common/TransportType.java Mon May  9 04:07:58 2005
@@ -87,7 +87,7 @@
      * package.
      */
     public static final TransportType VM_PIPE =
-        new TransportType( new String[] { "VM_PIPE" }, false );
+        new TransportType( new String[] { "VM_PIPE" }, Object.class, false );
     
 
     /**
@@ -112,6 +112,8 @@
     private final String[] names;
 
     private final transient boolean stateless;
+    
+    private final transient Class envelopeType;
 
     /**
      * Creates a new instance.  New transport type is automatically registered
@@ -124,6 +126,20 @@
      */
     public TransportType( String[] names, boolean stateless )
     {
+        this( names, ByteBuffer.class, stateless );
+    }
+
+    /**
+     * Creates a new instance.  New transport type is automatically registered
+     * to internal registry so that you can look it up using {@link #getInstance(String)}.
+     * 
+     * @param names the name or aliases of this transport type
+     * @param stateless <tt>true</tt> if and only if this transport type is stateless
+     * 
+     * @throws IllegalArgumentException if <tt>names</tt> are already registered or empty
+     */
+    public TransportType( String[] names, Class envelopeType, boolean stateless )
+    {
         if( names == null )
         {
             throw new NullPointerException( "names" );
@@ -132,6 +148,10 @@
         {
             throw new IllegalArgumentException( "names is empty" );
         }
+        if( envelopeType == null )
+        {
+            throw new NullPointerException( "envelopeType" );
+        }
 
         for( int i = 0; i < names.length; i ++ )
         {
@@ -146,6 +166,7 @@
         register( names, this );
         this.names = names;
         this.stateless = stateless;
+        this.envelopeType = envelopeType;
     }
 
     /**
@@ -155,6 +176,11 @@
     public boolean isStateless()
     {
         return stateless;
+    }
+    
+    public Class getEnvelopeType()
+    {
+        return envelopeType;
     }
     
     /**

Modified: directory/network/branches/api_integration/src/java/org/apache/mina/registry/SimpleServiceRegistry.java
URL: http://svn.apache.org/viewcvs/directory/network/branches/api_integration/src/java/org/apache/mina/registry/SimpleServiceRegistry.java?rev=169280&r1=169279&r2=169280&view=diff
==============================================================================
--- directory/network/branches/api_integration/src/java/org/apache/mina/registry/SimpleServiceRegistry.java (original)
+++ directory/network/branches/api_integration/src/java/org/apache/mina/registry/SimpleServiceRegistry.java Mon May  9 04:07:58 2005
@@ -169,8 +169,7 @@
         else if( transportType == TransportType.DATAGRAM )
             return datagramIoAcceptor;
         else
-            throw new IllegalArgumentException(
-                    "Unsupported transport type: " + transportType );
+            return vmPipeAcceptor;
 
     }