You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2011/08/26 13:54:05 UTC

svn commit: r1162072 - in /mina/trunk/core/src: main/java/org/apache/mina/api/ main/java/org/apache/mina/filterchain/ main/java/org/apache/mina/service/ main/java/org/apache/mina/service/client/ main/java/org/apache/mina/service/server/ test/java/org/a...

Author: jvermillard
Date: Fri Aug 26 11:54:04 2011
New Revision: 1162072

URL: http://svn.apache.org/viewvc?rev=1162072&view=rev
Log:
at the API level : using varargs for filter chain creation
at the implementation level : use array in place of List for managing chains
fixed a maven complain

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java
    mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterProcessor.java
    mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
    mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java
    mina/trunk/core/src/main/java/org/apache/mina/service/server/AbstractIoServer.java
    mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/NioAcceptorTest.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java?rev=1162072&r1=1162071&r2=1162072&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/api/IoService.java Fri Aug 26 11:54:04 2011
@@ -19,37 +19,33 @@
  */
 package org.apache.mina.api;
 
-import java.util.List;
 import java.util.Map;
 
 import org.apache.mina.service.IoHandler;
 
 /**
- * Base interface for all {@link IoServer}s and {@link IoClient}s
- * that provide I/O service and manage {@link IoSession}s.
- *
+ * Base interface for all {@link IoServer}s and {@link IoClient}s that provide I/O service and manage {@link IoSession}
+ * s.
+ * 
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
 public interface IoService {
 
     /**
-     * Returns the map of all sessions which are currently managed by this
-     * service.  The key of map is the {@link IoSession#getId() ID} of the
-     * session.
-     *
+     * Returns the map of all sessions which are currently managed by this service. The key of map is the
+     * {@link IoSession#getId() ID} of the session.
+     * 
      * @return the sessions. An empty collection if there's no session.
      */
     Map<Long, IoSession> getManagedSessions();
 
     /**
-     * Adds an {@link IoServiceListener} that listens any events related with
-     * this service.
+     * Adds an {@link IoServiceListener} that listens any events related with this service.
      */
     void addListener(IoServiceListener listener);
 
     /**
-     * Removed an existing {@link IoServiceListener} that listens any events
-     * related with this service.
+     * Removed an existing {@link IoServiceListener} that listens any events related with this service.
      */
     void removeListener(IoServiceListener listener);
 
@@ -60,20 +56,21 @@ public interface IoService {
     IoHandler getHandler();
 
     /**
-     * Sets the handler which will handle all connections managed by this service. The handler
-     * can only be set before the service is started.
+     * Sets the handler which will handle all connections managed by this service. The handler can only be set before
+     * the service is started.
      */
     void setHandler(IoHandler handler);
 
     /**
      * Get the list of filters installed on this service
+     * 
      * @return
      */
-    List<IoFilter> getFilters();
+    IoFilter[] getFilters();
 
     /**
      * Set the list of filters for this service. Must be called before the service is bound/connected
      */
-    void setFilters(List<IoFilter> filters);
+    void setFilters(IoFilter... filters);
 
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterProcessor.java?rev=1162072&r1=1162071&r2=1162072&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterProcessor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterProcessor.java Fri Aug 26 11:54:04 2011
@@ -19,8 +19,6 @@
  */
 package org.apache.mina.filterchain;
 
-import java.util.List;
-
 import org.apache.mina.api.IoFilter;
 import org.apache.mina.api.IoService;
 import org.apache.mina.api.IoSession;
@@ -35,12 +33,12 @@ public class DefaultIoFilterProcessor im
     /**
      * The list of {@link IoFilter} implementing this chain.
      */
-    private final List<IoFilter> chain;
+    private final IoFilter[] chain;
 
     /**
      * The instance of {@link DefaultIoFilterProcessor} with the {@link IoService} chain.
      */
-    public DefaultIoFilterProcessor(List<IoFilter> chain) {
+    public DefaultIoFilterProcessor(IoFilter[] chain) {
         this.chain = chain;
     }
 
@@ -73,12 +71,12 @@ public class DefaultIoFilterProcessor im
     @Override
     public void processMessageReceived(IoSession session, Object message) {
         LOG.debug("processing message '{}' received event ", message);
-        if (chain.isEmpty()) {
+        if (chain.length < 1) {
             LOG.debug("Nothing to do, the chain is empty");
         } else {
             readChainPosition = 0;
             // we call the first filter, it's supposed to call the next ones using the filter chain controller
-            chain.get(readChainPosition).messageReceived(session, message, this);
+            chain[readChainPosition].messageReceived(session, message, this);
         }
     }
 
@@ -87,33 +85,33 @@ public class DefaultIoFilterProcessor im
     @Override
     public void processMessageWriting(IoSession session, Object message) {
         LOG.debug("processing message '{}' writing event ", message);
-        if (chain.isEmpty()) {
+        if (chain.length < 1) {
             LOG.debug("Nothing to do, the chain is empty");
         } else {
-            writeChainPosition = chain.size() - 1;
+            writeChainPosition = chain.length - 1;
             // we call the first filter, it's supposed to call the next ones using the filter chain controller
-            chain.get(writeChainPosition).messageWriting(session, message, this);
+            chain[writeChainPosition].messageWriting(session, message, this);
         }
     }
 
     @Override
     public void callWriteNextFilter(IoSession session, Object message) {
         writeChainPosition--;
-        if (writeChainPosition < 0 || chain.size() == 0) {
+        if (writeChainPosition < 0 || chain.length == 0) {
             // end of chain processing
             session.enqueueWriteRequest(message);
         } else {
-            chain.get(writeChainPosition).messageWriting(session, message, this);
+            chain[writeChainPosition].messageWriting(session, message, this);
         }
     }
 
     @Override
     public void callReadNextFilter(IoSession session, Object message) {
         readChainPosition++;
-        if (readChainPosition >= chain.size()) {
+        if (readChainPosition >= chain.length) {
             // end of chain processing
         } else {
-            chain.get(readChainPosition).messageReceived(session, message, this);
+            chain[readChainPosition].messageReceived(session, message, this);
         }
     }
 

Modified: mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java?rev=1162072&r1=1162071&r2=1162072&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/service/AbstractIoService.java Fri Aug 26 11:54:04 2011
@@ -24,16 +24,16 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import org.apache.mina.api.IoFilter;
 import org.apache.mina.api.IoService;
 import org.apache.mina.api.IoServiceListener;
 import org.apache.mina.api.IoSession;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * Base implementation for {@link IoService}s.
- *
+ * 
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
 public abstract class AbstractIoService implements IoService {
@@ -86,7 +86,7 @@ public abstract class AbstractIoService 
     }
 
     /**
-     *
+     * 
      * {@inheritDoc}
      */
     @Override
@@ -100,7 +100,7 @@ public abstract class AbstractIoService 
     }
 
     /**
-     *
+     * 
      * {@inheritDoc}
      */
     @Override
@@ -128,11 +128,8 @@ public abstract class AbstractIoService 
         // TODO: check the service state, we should not be able to set the handler
         // if the service is already started
         /*
-        if (isActive()) {
-            throw new IllegalStateException(
-                    "handler cannot be set while the service is active.");
-        }
-        */
+         * if (isActive()) { throw new IllegalStateException( "handler cannot be set while the service is active."); }
+         */
 
         this.handler = handler;
     }
@@ -231,16 +228,28 @@ public abstract class AbstractIoService 
             listener.serviceInactivated(this);
         }
     }
-    
+
     public void fireSessionCreated(IoSession session) {
         for (IoServiceListener listener : listeners) {
             listener.sessionCreated(session);
         }
     }
-    
+
     public void fireSessionDestroyed(IoSession session) {
         for (IoServiceListener listener : listeners) {
             listener.sessionDestroyed(session);
         }
     }
+
+    private IoFilter[] filters;
+
+    @Override
+    public IoFilter[] getFilters() {
+        return filters;
+    }
+
+    @Override
+    public void setFilters(IoFilter... filters) {
+        this.filters = filters;
+    }
 }
\ No newline at end of file

Modified: mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java?rev=1162072&r1=1162071&r2=1162072&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/service/client/AbstractIoClient.java Fri Aug 26 11:54:04 2011
@@ -20,11 +20,9 @@
 package org.apache.mina.service.client;
 
 import java.net.SocketAddress;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.mina.api.IoClient;
-import org.apache.mina.api.IoFilter;
 import org.apache.mina.api.IoFuture;
 import org.apache.mina.api.IoServiceListener;
 import org.apache.mina.api.IoSession;
@@ -75,15 +73,4 @@ public abstract class AbstractIoClient e
         return null;
     }
 
-    private List<IoFilter> filters;
-
-    @Override
-    public List<IoFilter> getFilters() {
-        return filters;
-    }
-
-    @Override
-    public void setFilters(List<IoFilter> filters) {
-        this.filters = filters;
-    }
 }

Modified: mina/trunk/core/src/main/java/org/apache/mina/service/server/AbstractIoServer.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/service/server/AbstractIoServer.java?rev=1162072&r1=1162071&r2=1162072&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/service/server/AbstractIoServer.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/service/server/AbstractIoServer.java Fri Aug 26 11:54:04 2011
@@ -19,16 +19,12 @@
  */
 package org.apache.mina.service.server;
 
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.mina.api.IoFilter;
 import org.apache.mina.api.IoServer;
 import org.apache.mina.service.AbstractIoService;
 
 /**
  * Base implementation for {@link IoServer}s.
- *
+ * 
  * @author <a href="http://mina.apache.org">Apache MINA Project</a>
  */
 public abstract class AbstractIoServer extends AbstractIoService implements IoServer {
@@ -39,15 +35,4 @@ public abstract class AbstractIoServer e
         super();
     }
 
-    private List<IoFilter> filters;
-
-    @Override
-    public List<IoFilter> getFilters() {
-        return filters;
-    }
-
-    @Override
-    public void setFilters(List<IoFilter> filters) {
-        this.filters = Collections.unmodifiableList(filters);
-    }
 }

Modified: mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/NioAcceptorTest.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/NioAcceptorTest.java?rev=1162072&r1=1162071&r2=1162072&view=diff
==============================================================================
--- mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/NioAcceptorTest.java (original)
+++ mina/trunk/core/src/test/java/org/apache/mina/transport/socket/nio/NioAcceptorTest.java Fri Aug 26 11:54:04 2011
@@ -24,12 +24,9 @@ import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
 
 import junit.framework.Assert;
 
-import org.apache.mina.api.IoFilter;
 import org.apache.mina.api.IoService;
 import org.apache.mina.api.IoServiceListener;
 import org.apache.mina.api.IoSession;
@@ -61,9 +58,7 @@ public class NioAcceptorTest {
         NioTcpServer acceptor = new NioTcpServer(strategy);
 
         // create the fitler chain for this service
-        List<IoFilter> filters = new ArrayList<IoFilter>();
-        filters.add(new LoggingFilter("TestLoggingFilter"));
-        acceptor.setFilters(filters);
+        acceptor.setFilters(new LoggingFilter("LoggingFilter1"), new LoggingFilter("LoggingFilter2"));
 
         acceptor.addListener(new IoServiceListener() {