Author: trustin
Date: Sun Sep 30 11:42:14 2007
New Revision: 580764

URL: http://svn.apache.org/viewvc?rev=580764&view=rev
Log:
* Added sanity check to some filters that cannot be added more than once to the 
same chain


Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
    
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/AbstractExecutorFilter.java
    
mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=580764&r1=580763&r2=580764&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
 Sun Sep 30 11:42:14 2007
@@ -128,6 +128,15 @@
     public ProtocolDecoder getDecoder(IoSession session) {
         return (ProtocolDecoder) session.getAttribute(DECODER);
     }
+    
+    @Override
+    public void onPreAdd(IoFilterChain parent, String name,
+            NextFilter nextFilter) throws Exception {
+        if (parent.contains(this)) {
+            throw new IllegalArgumentException(
+                    "You can't add the same filter instance more than once.");
+        }
+    }
 
     @Override
     public void onPostRemove(IoFilterChain parent, String name,

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/AbstractExecutorFilter.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/executor/AbstractExecutorFilter.java?rev=580764&r1=580763&r2=580764&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/AbstractExecutorFilter.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/filter/executor/AbstractExecutorFilter.java
 Sun Sep 30 11:42:14 2007
@@ -31,6 +31,7 @@
 import org.apache.mina.common.IdleStatus;
 import org.apache.mina.common.IoEventType;
 import org.apache.mina.common.IoFilterAdapter;
+import org.apache.mina.common.IoFilterChain;
 import org.apache.mina.common.IoFilterEvent;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.WriteRequest;
@@ -94,6 +95,15 @@
     }
 
     protected abstract void fireEvent(IoFilterEvent event);
+
+    @Override
+    public void onPreAdd(IoFilterChain parent, String name,
+            NextFilter nextFilter) throws Exception {
+        if (parent.contains(this)) {
+            throw new IllegalArgumentException(
+                    "You can't add the same filter instance more than once.");
+        }
+    }
 
     @Override
     public final void sessionCreated(NextFilter nextFilter, IoSession session) 
{

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java?rev=580764&r1=580763&r2=580764&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/RequestResponseFilter.java
 Sun Sep 30 11:42:14 2007
@@ -84,6 +84,11 @@
     @Override
     public void onPreAdd(IoFilterChain parent, String name,
             NextFilter nextFilter) throws Exception {
+        if (parent.contains(this)) {
+            throw new IllegalArgumentException(
+                    "You can't add the same filter instance more than once.");
+        }
+
         IoSession session = parent.getSession();
         session.setAttribute(RESPONSE_INSPECTOR, responseInspectorFactory
                 .getResponseInspector());


Reply via email to