You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ni...@apache.org on 2006/11/27 09:00:14 UTC

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

Author: niklas
Date: Mon Nov 27 00:00:12 2006
New Revision: 479536

URL: http://svn.apache.org/viewvc?view=rev&rev=479536
Log:
Renamed SocketSessionConfigImpl to DefaultSocketSessionConfig.
Renamed DatagramSessionConfigImpl to DefaultDatagramSessionConfig and moved it into o.a.m.transport.socket.nio.
Added VmPipeSessionConfig interface and default implementation DefaultVmPipeSessionConfig for vmpipe transport.
Added setSessionConfig( IoSessionConfig ) method to IoService.
BaseIoService now handles to IoSessionConfig instance for the IoService. getSessionConfig() and setSessionConfig() have been removed from the concrete classes implementing IoService (SocketAcceptor, DatagramConnector, etc).

Added:
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java   (with props)
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java
      - copied, changed from r479116, mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java   (with props)
    mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java   (with props)
Removed:
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionConfigImpl.java
Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java
    mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java
    mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.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/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/socket/nio/support/DatagramAcceptorDelegate.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.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

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoService.java Mon Nov 27 00:00:12 2006
@@ -65,10 +65,21 @@
     Set getManagedSessions();
 
     /**
-     * Resturns the default configuration of the new {@link IoSession}s
+     * Returns the default configuration of the new {@link IoSession}s
      * created by this service.
      */
     IoSessionConfig getSessionConfig();
+    
+    /**
+     * Sets the default configuration of the new {@link IoSession}s
+     * created by this service.
+     * 
+     * @param config the new default config.
+     * @throws IllegalArgumentException if the type of the specified config doesn't
+     *                match the {@link IoSessionConfig} implementation supported by
+     *                this {@link IoService}.
+     */
+    void setSessionConfig( IoSessionConfig config );
     
     /**
      * Returns the {@link IoFilterChainBuilder} which will build the

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoAcceptor.java Mon Nov 27 00:00:12 2006
@@ -23,6 +23,7 @@
 import java.net.SocketAddress;
 
 import org.apache.mina.common.IoAcceptor;
+import org.apache.mina.common.IoSessionConfig;
 
 /**
  * A base implementation of {@link IoAcceptor}.
@@ -43,8 +44,9 @@
      */
     protected final Object bindLock = new Object();
 
-    protected BaseIoAcceptor()
+    protected BaseIoAcceptor( IoSessionConfig sessionConfig )
     {
+        super( sessionConfig );
     }
     
     public SocketAddress getLocalAddress()

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoConnector.java Mon Nov 27 00:00:12 2006
@@ -23,6 +23,7 @@
 
 import org.apache.mina.common.ConnectFuture;
 import org.apache.mina.common.IoConnector;
+import org.apache.mina.common.IoSessionConfig;
 
 /**
  * A base implementation of {@link IoConnector}.
@@ -34,8 +35,9 @@
 {
     private int connectTimeout = 60; // 1 minute
 
-    protected BaseIoConnector()
+    protected BaseIoConnector( IoSessionConfig sessionConfig )
     {
+        super( sessionConfig );
     }
 
     public int getConnectTimeout()

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoService.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/support/BaseIoService.java Mon Nov 27 00:00:12 2006
@@ -28,6 +28,7 @@
 import org.apache.mina.common.IoHandler;
 import org.apache.mina.common.IoService;
 import org.apache.mina.common.IoServiceListener;
+import org.apache.mina.common.IoSessionConfig;
 import org.apache.mina.common.ThreadModel;
 
 /**
@@ -63,9 +64,15 @@
      */
     private final IoServiceListenerSupport listeners;
     
-    protected BaseIoService()
+    /**
+     * The default {@link IoSessionConfig} which will be used to configure new sessions.
+     */
+    private IoSessionConfig sessionConfig;
+    
+    protected BaseIoService( IoSessionConfig sessionConfig )
     {
         this.listeners = new IoServiceListenerSupport( this );
+        setSessionConfig( sessionConfig );
     }
     
     /**
@@ -73,6 +80,11 @@
      */
     protected abstract Class<? extends SocketAddress> getAddressType();
     
+    /**
+     * Returns the type of {@link IoSessionConfig} this service uses.
+     */
+    protected abstract Class<? extends IoSessionConfig> getSessionConfigType();
+    
     public IoFilterChainBuilder getFilterChainBuilder()
     {
         return filterChainBuilder;
@@ -150,4 +162,24 @@
     {
         return listeners;
     }
+    
+    public IoSessionConfig getSessionConfig()
+    {
+        return sessionConfig;
+    }
+
+    public void setSessionConfig( IoSessionConfig sessionConfig )
+    {
+        if( sessionConfig == null )
+        {
+            throw new NullPointerException( "sessionConfig" );
+        }
+        if( ! getSessionConfigType().isAssignableFrom( sessionConfig.getClass() ) )
+        {
+            throw new IllegalArgumentException( "sessionConfig type: " 
+                    + sessionConfig.getClass() 
+                    + " (expected: " + getSessionConfigType() + ")" );
+        }
+        this.sessionConfig = sessionConfig;
+    }    
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoAcceptor.java Mon Nov 27 00:00:12 2006
@@ -133,6 +133,11 @@
         return delegate.getSessionConfig();
     }
 
+    public void setSessionConfig( IoSessionConfig config )
+    {
+        delegate.setSessionConfig( config );
+    }
+
     public ThreadModel getThreadModel()
     {
         return delegate.getThreadModel();

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/support/DelegatedIoConnector.java Mon Nov 27 00:00:12 2006
@@ -121,7 +121,12 @@
     {
         return delegate.getSessionConfig();
     }
-
+    
+    public void setSessionConfig( IoSessionConfig config )
+    {
+        delegate.setSessionConfig( config );
+    }
+    
     public ThreadModel getThreadModel()
     {
         return delegate.getThreadModel();

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -62,15 +62,4 @@
     {
         ( ( DatagramAcceptorDelegate ) delegate ).setSessionRecycler( sessionRecycler );
     }
-    
-    /**
-     * Sets the {@link DatagramSessionConfig} this acceptor will use for new sessions.
-     * 
-     * @param sessionConfig the config.
-     * @throws NullPointerException if the specified value is <code>null</code>.
-     */
-    public void setSessionConfig( DatagramSessionConfig sessionConfig )
-    {
-        ( ( DatagramAcceptorDelegate ) delegate ).setSessionConfig( sessionConfig );
-    }
 }

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -62,15 +62,4 @@
     {
         ( ( DatagramConnectorDelegate ) delegate ).setSessionRecycler( sessionRecycler );
     }
-    
-    /**
-     * Sets the {@link DatagramSessionConfig} this connector will use for new sessions.
-     * 
-     * @param sessionConfig the config.
-     * @throws NullPointerException if the specified value is <code>null</code>.
-     */
-    public void setSessionConfig( DatagramSessionConfig sessionConfig )
-    {
-        ( ( DatagramConnectorDelegate ) delegate ).setSessionConfig( sessionConfig );
-    }
 }

Added: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java?view=auto&rev=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java Mon Nov 27 00:00:12 2006
@@ -0,0 +1,237 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.mina.transport.socket.nio;
+
+import java.net.DatagramSocket;
+import java.net.SocketException;
+
+import org.apache.mina.common.RuntimeIOException;
+import org.apache.mina.common.support.BaseIoSessionConfig;
+
+/**
+ * @author The Apache Directory Project (mina-dev@directory.apache.org)
+ * @version $Rev: 439913 $, $Date: 2006-09-04 05:12:43 +0200 (mån, 04 sep 2006) $
+ */
+public class DefaultDatagramSessionConfig extends BaseIoSessionConfig implements DatagramSessionConfig
+{
+    private static boolean SET_RECEIVE_BUFFER_SIZE_AVAILABLE = false;
+    private static boolean SET_SEND_BUFFER_SIZE_AVAILABLE = false;
+    private static boolean GET_TRAFFIC_CLASS_AVAILABLE = false;
+    private static boolean SET_TRAFFIC_CLASS_AVAILABLE = false;
+
+    private static boolean DEFAULT_BROADCAST;
+    private static boolean DEFAULT_REUSE_ADDRESS;
+    private static int DEFAULT_RECEIVE_BUFFER_SIZE;
+    private static int DEFAULT_SEND_BUFFER_SIZE;
+    private static int DEFAULT_TRAFFIC_CLASS;
+    
+    static
+    {
+        initialize();
+    }
+    
+    private static void initialize()
+    {
+        DatagramSocket socket = null;
+
+        try
+        {
+            socket = new DatagramSocket();
+            DEFAULT_BROADCAST = socket.getBroadcast();
+            DEFAULT_REUSE_ADDRESS = socket.getReuseAddress();
+            DEFAULT_RECEIVE_BUFFER_SIZE = socket.getReceiveBufferSize();
+            DEFAULT_SEND_BUFFER_SIZE = socket.getSendBufferSize();
+            
+            // Check if setReceiveBufferSize is supported.
+            try
+            {
+                socket.setReceiveBufferSize(DEFAULT_RECEIVE_BUFFER_SIZE);
+                SET_RECEIVE_BUFFER_SIZE_AVAILABLE = true;
+            }
+            catch( SocketException e )
+            {
+                SET_RECEIVE_BUFFER_SIZE_AVAILABLE = false;
+            }
+            
+            // Check if setSendBufferSize is supported.
+            try
+            {
+                socket.setSendBufferSize(DEFAULT_SEND_BUFFER_SIZE);
+                SET_SEND_BUFFER_SIZE_AVAILABLE = true;
+            }
+            catch( SocketException e )
+            {
+                SET_SEND_BUFFER_SIZE_AVAILABLE = false;
+            }
+            
+            // Check if getTrafficClass is supported.
+            try
+            {
+                DEFAULT_TRAFFIC_CLASS = socket.getTrafficClass();
+                GET_TRAFFIC_CLASS_AVAILABLE = true;
+            }
+            catch( SocketException e )
+            {
+                GET_TRAFFIC_CLASS_AVAILABLE = false;
+                DEFAULT_TRAFFIC_CLASS = 0;
+            }
+        } catch (SocketException e) {
+            throw new ExceptionInInitializerError(e);
+        }
+        finally {
+            if( socket != null )
+            {
+                socket.close();
+            }
+        }
+    }
+    
+    public static boolean isSetReceiveBufferSizeAvailable() {
+        return SET_RECEIVE_BUFFER_SIZE_AVAILABLE;
+    }
+    
+    public static boolean isSetSendBufferSizeAvailable() {
+        return SET_SEND_BUFFER_SIZE_AVAILABLE;
+    }
+    
+    public static boolean isGetTrafficClassAvailable() {
+        return GET_TRAFFIC_CLASS_AVAILABLE;
+    }
+    
+    public static boolean isSetTrafficClassAvailable() {
+        return SET_TRAFFIC_CLASS_AVAILABLE;
+    }
+
+    private boolean broadcast = DEFAULT_BROADCAST;
+    private boolean reuseAddress = DEFAULT_REUSE_ADDRESS;
+    private int receiveBufferSize = DEFAULT_RECEIVE_BUFFER_SIZE;
+    private int sendBufferSize = DEFAULT_SEND_BUFFER_SIZE;
+    private int trafficClass = DEFAULT_TRAFFIC_CLASS;
+
+    /**
+     * Creates a new instance.
+     * 
+     * @throws RuntimeIOException if failed to get the default configuration
+     */
+    public DefaultDatagramSessionConfig()
+    {
+        DatagramSocket s = null;
+        try
+        {
+            s = new DatagramSocket();
+            broadcast = s.getBroadcast();
+            reuseAddress = s.getReuseAddress();
+            receiveBufferSize = s.getReceiveBufferSize();
+            sendBufferSize = s.getSendBufferSize();
+            trafficClass = s.getTrafficClass();
+        }
+        catch( SocketException e )
+        {
+            throw new RuntimeIOException( "Failed to get the default configuration.", e );
+        }
+        finally
+        {
+            if( s != null )
+            {
+                s.close();
+            }
+        }
+    }
+
+    /**
+     * @see DatagramSocket#getBroadcast()
+     */
+    public boolean isBroadcast()
+    {
+        return broadcast;
+    }
+    
+    /**
+     * @see DatagramSocket#setBroadcast(boolean)
+     */
+    public void setBroadcast( boolean broadcast )
+    {
+        this.broadcast = broadcast;
+    }
+    
+    /**
+     * @see DatagramSocket#getReuseAddress()
+     */
+    public boolean isReuseAddress()
+    {
+        return reuseAddress;
+    }
+    
+    /**
+     * @see DatagramSocket#setReuseAddress(boolean)
+     */
+    public void setReuseAddress( boolean reuseAddress )
+    {
+        this.reuseAddress = reuseAddress;
+    }
+
+    /**
+     * @see DatagramSocket#getReceiveBufferSize()
+     */
+    public int getReceiveBufferSize()
+    {
+        return receiveBufferSize;
+    }
+
+    /**
+     * @see DatagramSocket#setReceiveBufferSize(int)
+     */
+    public void setReceiveBufferSize( int receiveBufferSize )
+    {
+        this.receiveBufferSize = receiveBufferSize;
+    }
+
+    /**
+     * @see DatagramSocket#getSendBufferSize()
+     */
+    public int getSendBufferSize()
+    {
+        return sendBufferSize;
+    }
+
+    /**
+     * @see DatagramSocket#setSendBufferSize(int)
+     */
+    public void setSendBufferSize( int sendBufferSize )
+    {
+        this.sendBufferSize = sendBufferSize;
+    }
+
+    /**
+     * @see DatagramSocket#getTrafficClass()
+     */
+    public int getTrafficClass()
+    {
+        return trafficClass;
+    }
+
+    /**
+     * @see DatagramSocket#setTrafficClass(int)
+     */
+    public void setTrafficClass( int trafficClass )
+    {
+        this.trafficClass = trafficClass;
+    }
+}
\ No newline at end of file

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultDatagramSessionConfig.java
------------------------------------------------------------------------------
    svn:keywords = Id

Copied: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java (from r479116, mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java?view=diff&rev=479536&p1=mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java&r1=479116&p2=mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketSessionConfigImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/DefaultSocketSessionConfig.java Mon Nov 27 00:00:12 2006
@@ -32,7 +32,7 @@
  * @author The Apache Directory Project (mina-dev@directory.apache.org)
  * @version $Rev$, $Date$
  */
-class SocketSessionConfigImpl extends BaseIoSessionConfig implements SocketSessionConfig
+class DefaultSocketSessionConfig extends BaseIoSessionConfig implements SocketSessionConfig
 {
     private static boolean SET_RECEIVE_BUFFER_SIZE_AVAILABLE = false;
     private static boolean SET_SEND_BUFFER_SIZE_AVAILABLE = false;
@@ -151,7 +151,7 @@
     /**
      * Creates a new instance.
      */
-    SocketSessionConfigImpl()
+    DefaultSocketSessionConfig()
     {
     }
 

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -56,7 +56,6 @@
      */
     private static volatile int nextId = 0;
 
-    private IoSessionConfig sessionConfig = new SocketSessionConfigImpl();
     private int backlog = 50;
     private boolean reuseAddress;
 
@@ -95,6 +94,7 @@
      */
     public SocketAcceptor( int processorCount, Executor executor )
     {
+        super( new DefaultSocketSessionConfig() );
         if( processorCount < 1 )
         {
             throw new IllegalArgumentException( "Must have at least one processor" );
@@ -142,26 +142,12 @@
         return InetSocketAddress.class;
     }
 
-    public IoSessionConfig getSessionConfig()
+    @Override
+    protected Class<? extends IoSessionConfig> getSessionConfigType()
     {
-        return sessionConfig;
+        return SocketSessionConfig.class;
     }
 
-    /**
-     * Sets the {@link SocketSessionConfig} this acceptor will use for new sessions.
-     * 
-     * @param sessionConfig the config.
-     * @throws NullPointerException if the specified value is <code>null</code>.
-     */
-    public void setSessionConfig( SocketSessionConfig sessionConfig )
-    {
-        if( sessionConfig == null )
-        {
-            throw new NullPointerException( "sessionConfig" );
-        }
-        this.sessionConfig = sessionConfig;
-    }
-    
     /**
      * @see ServerSocket#getReuseAddress()
      */

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -56,8 +56,6 @@
      */
     private static volatile int nextId = 0;
 
-    private IoSessionConfig sessionConfig = new SocketSessionConfigImpl();
-
     private final Object lock = new Object();
     private final int id = nextId++;
     private final String threadName = "SocketConnector-" + id;
@@ -90,6 +88,7 @@
      */
     public SocketConnector( int processorCount, Executor executor )
     {
+        super( new DefaultSocketSessionConfig() );
         if( processorCount < 1 )
         {
             throw new IllegalArgumentException( "Must have at least one processor" );
@@ -110,27 +109,13 @@
         return InetSocketAddress.class;
     }
 
-    public IoSessionConfig getSessionConfig()
+	@Override
+    protected Class<? extends IoSessionConfig> getSessionConfigType()
     {
-        return sessionConfig;
+        return SocketSessionConfig.class;
     }
 
     /**
-     * Sets the {@link SocketSessionConfig} this connector will use for new sessions.
-     * 
-     * @param sessionConfig the config.
-     * @throws NullPointerException if the specified value is <code>null</code>.
-     */
-    public void setSessionConfig( SocketSessionConfig sessionConfig )
-    {
-        if( sessionConfig == null )
-        {
-            throw new NullPointerException( "sessionConfig" );
-        }
-        this.sessionConfig = sessionConfig;
-    }
-
-	/**
      * How many seconds to keep the connection thread alive between connection requests
      *
      * @return Number of seconds to keep connection thread alive

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -326,7 +326,7 @@
 
         public int getTrafficClass()
         {
-            if( SocketSessionConfigImpl.isGetTrafficClassAvailable() )
+            if( DefaultSocketSessionConfig.isGetTrafficClassAvailable() )
             {
                 try
                 {
@@ -335,7 +335,7 @@
                 catch( SocketException e )
                 {
                     // Throw an exception only when setTrafficClass is also available.
-                    if( SocketSessionConfigImpl.isSetTrafficClassAvailable() )
+                    if( DefaultSocketSessionConfig.isSetTrafficClassAvailable() )
                     {
                         throw new RuntimeIOException( e );
                     }
@@ -347,7 +347,7 @@
 
         public void setTrafficClass( int tc )
         {
-            if( SocketSessionConfigImpl.isSetTrafficClassAvailable() )
+            if( DefaultSocketSessionConfig.isSetTrafficClassAvailable() )
             {
                 try
                 {
@@ -374,7 +374,7 @@
 
         public void setSendBufferSize( int size )
         {
-            if( SocketSessionConfigImpl.isSetSendBufferSizeAvailable() )
+            if( DefaultSocketSessionConfig.isSetSendBufferSizeAvailable() )
             {
                 try
                 {
@@ -401,7 +401,7 @@
 
         public void setReceiveBufferSize( int size )
         {
-            if( SocketSessionConfigImpl.isSetReceiveBufferSizeAvailable() )
+            if( DefaultSocketSessionConfig.isSetReceiveBufferSizeAvailable() )
             {
                 try
                 {

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramAcceptorDelegate.java Mon Nov 27 00:00:12 2006
@@ -42,6 +42,7 @@
 import org.apache.mina.common.support.BaseIoAcceptor;
 import org.apache.mina.common.support.IoServiceListenerSupport;
 import org.apache.mina.transport.socket.nio.DatagramSessionConfig;
+import org.apache.mina.transport.socket.nio.DefaultDatagramSessionConfig;
 import org.apache.mina.util.NamePreservingRunnable;
 
 /**
@@ -57,7 +58,6 @@
     private static volatile int nextId = 0;
 
     private IoSessionRecycler sessionRecycler = DEFAULT_RECYCLER;
-    private IoSessionConfig sessionConfig = new DatagramSessionConfigImpl();
         
     private final IoAcceptor wrapper;
     private final Executor executor;
@@ -74,6 +74,7 @@
      */
     public DatagramAcceptorDelegate( IoAcceptor wrapper, Executor executor )
     {
+        super( new DefaultDatagramSessionConfig() );
         this.wrapper = wrapper;
         this.executor = executor;
     }
@@ -83,6 +84,12 @@
         return InetSocketAddress.class;
     }
 
+    @Override
+    protected Class<? extends IoSessionConfig> getSessionConfigType()
+    {
+        return DatagramSessionConfig.class;
+    }
+
     protected void doBind() throws IOException
     {
         RegistrationRequest request = new RegistrationRequest();
@@ -238,27 +245,6 @@
         }
     }
 
-
-    public IoSessionConfig getSessionConfig()
-    {
-        return sessionConfig;
-    }
-
-    /**
-     * Sets the {@link DatagramSessionConfig} this acceptor will use for new sessions.
-     * 
-     * @param sessionConfig the config.
-     * @throws NullPointerException if the specified value is <code>null</code>.
-     */
-    public void setSessionConfig( DatagramSessionConfig sessionConfig )
-    {
-        if( sessionConfig == null )
-        {
-            throw new NullPointerException( "sessionConfig" );
-        }
-        this.sessionConfig = sessionConfig;
-    }
-    
     public IoServiceListenerSupport getListeners()
     {
         return super.getListeners();

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramConnectorDelegate.java Mon Nov 27 00:00:12 2006
@@ -44,6 +44,7 @@
 import org.apache.mina.common.support.BaseIoConnector;
 import org.apache.mina.common.support.DefaultConnectFuture;
 import org.apache.mina.transport.socket.nio.DatagramSessionConfig;
+import org.apache.mina.transport.socket.nio.DefaultDatagramSessionConfig;
 import org.apache.mina.util.NamePreservingRunnable;
 
 /**
@@ -59,7 +60,6 @@
     private static volatile int nextId = 0;
 
     private IoSessionRecycler sessionRecycler = DEFAULT_RECYCLER;
-    private IoSessionConfig sessionConfig = new DatagramSessionConfigImpl();
 
     private final IoConnector wrapper;
     private final Executor executor;
@@ -76,6 +76,7 @@
      */
     public DatagramConnectorDelegate( IoConnector wrapper, Executor executor )
     {
+        super( new DefaultDatagramSessionConfig() );
         this.wrapper = wrapper;
         this.executor = executor;
     }
@@ -85,6 +86,12 @@
         return InetSocketAddress.class;
     }
 
+    @Override
+    protected Class<? extends IoSessionConfig> getSessionConfigType()
+    {
+        return DatagramSessionConfig.class;
+    }
+
     protected ConnectFuture doConnect( SocketAddress remoteAddress, SocketAddress localAddress )
     {
         DatagramChannel ch = null;
@@ -176,26 +183,6 @@
         this.sessionRecycler = sessionRecycler;
     }
 
-    public IoSessionConfig getSessionConfig()
-    {
-        return sessionConfig;
-    }
-
-    /**
-     * Sets the {@link DatagramSessionConfig} this connector will use for new sessions.
-     * 
-     * @param sessionConfig the config.
-     * @throws NullPointerException if the specified value is <code>null</code>.
-     */
-    public void setSessionConfig( DatagramSessionConfig sessionConfig )
-    {
-        if( sessionConfig == null )
-        {
-            throw new NullPointerException( "sessionConfig" );
-        }
-        this.sessionConfig = sessionConfig;
-    }
-    
     private synchronized void startupWorker() throws IOException
     {
         if( worker == null )

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java?view=diff&rev=479536&r1=479535&r2=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/support/DatagramSessionImpl.java Mon Nov 27 00:00:12 2006
@@ -41,6 +41,7 @@
 import org.apache.mina.common.IoFilter.WriteRequest;
 import org.apache.mina.common.support.BaseIoSession;
 import org.apache.mina.transport.socket.nio.DatagramSessionConfig;
+import org.apache.mina.transport.socket.nio.DefaultDatagramSessionConfig;
 
 /**
  * An {@link IoSession} for datagram transport (UDP/IP).
@@ -236,7 +237,7 @@
         return readBufferSize;
     }
 
-    private class SessionConfigImpl extends DatagramSessionConfigImpl implements DatagramSessionConfig
+    private class SessionConfigImpl extends DefaultDatagramSessionConfig implements DatagramSessionConfig
     {
         public int getReceiveBufferSize()
         {
@@ -252,7 +253,7 @@
 
         public void setReceiveBufferSize( int receiveBufferSize )
         {
-            if( DatagramSessionConfigImpl.isSetReceiveBufferSizeAvailable() )
+            if( DefaultDatagramSessionConfig.isSetReceiveBufferSizeAvailable() )
             {
                 try
                 {
@@ -304,7 +305,7 @@
 
         public void setSendBufferSize( int sendBufferSize )
         {
-            if( DatagramSessionConfigImpl.isSetSendBufferSizeAvailable() )
+            if( DefaultDatagramSessionConfig.isSetSendBufferSizeAvailable() )
             {
                 try
                 {
@@ -343,7 +344,7 @@
 
         public int getTrafficClass()
         {
-            if( DatagramSessionConfigImpl.isGetTrafficClassAvailable() )
+            if( DefaultDatagramSessionConfig.isGetTrafficClassAvailable() )
             {
                 try
                 {
@@ -362,7 +363,7 @@
 
         public void setTrafficClass( int trafficClass )
         {
-            if( DatagramSessionConfigImpl.isSetTrafficClassAvailable() )
+            if( DefaultDatagramSessionConfig.isSetTrafficClassAvailable() )
             {
                 try
                 {

Added: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java?view=auto&rev=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java Mon Nov 27 00:00:12 2006
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.mina.transport.vmpipe;
+
+import org.apache.mina.common.support.BaseIoSessionConfig;
+
+/**
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ * @version $Rev$, $Date$
+ */
+public class DefaultVmPipeSessionConfig extends BaseIoSessionConfig implements VmPipeSessionConfig
+{
+}

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/DefaultVmPipeSessionConfig.java
------------------------------------------------------------------------------
    svn:keywords = Id

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -28,7 +28,6 @@
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.IoSessionConfig;
 import org.apache.mina.common.support.BaseIoAcceptor;
-import org.apache.mina.common.support.BaseIoSessionConfig;
 import org.apache.mina.transport.vmpipe.support.VmPipe;
 
 /**
@@ -42,13 +41,12 @@
 {
     static final Map<VmPipeAddress, VmPipe> boundHandlers = new HashMap<VmPipeAddress, VmPipe>();
     
-    private static final IoSessionConfig CONFIG = new BaseIoSessionConfig() {};
-
     /**
      * Creates a new instance.
      */
     public VmPipeAcceptor()
     {
+        super( new DefaultVmPipeSessionConfig() );
     }
 
     protected Class<? extends SocketAddress> getAddressType()
@@ -56,6 +54,12 @@
         return VmPipeAddress.class;
     }
 
+    @Override
+    protected Class<? extends IoSessionConfig> getSessionConfigType()
+    {
+        return VmPipeSessionConfig.class;
+    }
+
     protected void doBind() throws IOException
     {
         VmPipeAddress localAddress = ( VmPipeAddress ) getLocalAddress();
@@ -95,11 +99,6 @@
         }
         
         getListeners().fireServiceDeactivated();
-    }
-
-    public IoSessionConfig getSessionConfig()
-    {
-        return CONFIG;
     }
 
     public IoSession newSession( SocketAddress remoteAddress )

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=479536&r1=479535&r2=479536
==============================================================================
--- 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 Mon Nov 27 00:00:12 2006
@@ -29,7 +29,6 @@
 import org.apache.mina.common.IoSessionConfig;
 import org.apache.mina.common.support.AbstractIoFilterChain;
 import org.apache.mina.common.support.BaseIoConnector;
-import org.apache.mina.common.support.BaseIoSessionConfig;
 import org.apache.mina.common.support.DefaultConnectFuture;
 import org.apache.mina.transport.vmpipe.support.VmPipe;
 import org.apache.mina.transport.vmpipe.support.VmPipeIdleStatusChecker;
@@ -45,13 +44,13 @@
  */
 public class VmPipeConnector extends BaseIoConnector
 {
-    private static final IoSessionConfig CONFIG = new BaseIoSessionConfig() {};
 
     /**
      * Creates a new instance.
      */
     public VmPipeConnector()
     {
+        super( new DefaultVmPipeSessionConfig() );
     }
 
     protected Class<? extends SocketAddress> getAddressType()
@@ -59,6 +58,12 @@
         return VmPipeAddress.class;
     }
 
+    @Override
+    protected Class<? extends IoSessionConfig> getSessionConfigType()
+    {
+        return VmPipeSessionConfig.class;
+    }
+
     protected ConnectFuture doConnect( SocketAddress remoteAddress, SocketAddress localAddress )
     {
         VmPipe entry = VmPipeAcceptor.boundHandlers.get( remoteAddress );
@@ -114,10 +119,5 @@
         }
 
         return future;
-    }
-
-    public IoSessionConfig getSessionConfig()
-    {
-        return CONFIG;
     }
 }

Added: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java?view=auto&rev=479536
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java Mon Nov 27 00:00:12 2006
@@ -0,0 +1,32 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.mina.transport.vmpipe;
+
+import org.apache.mina.common.IoSessionConfig;
+
+/**
+ * An {@link IoSessionConfig} for vmpipe transport type.
+ *  
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ * @version $Rev$, $Date$
+ */
+public interface VmPipeSessionConfig extends IoSessionConfig
+{
+}

Propchange: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeSessionConfig.java
------------------------------------------------------------------------------
    svn:keywords = Id