Author: krasserm
Date: Tue Dec  1 14:31:00 2009
New Revision: 885768

URL: http://svn.apache.org/viewvc?rev=885768&view=rev
Log:
CAMEL-2237

Added:
    
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoDefaultCodecTest.java
   (with props)
Modified:
    
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
    
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConfiguration.java
    
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFiltersTest.java

Modified: 
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java?rev=885768&r1=885767&r2=885768&view=diff
==============================================================================
--- 
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
 (original)
+++ 
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
 Tue Dec  1 14:31:00 2009
@@ -87,6 +87,7 @@
         config.setHost(u.getHost());
         config.setPort(u.getPort());
         config.setProtocol(u.getScheme());
+        config.setFilters(resolveAndRemoveReferenceListParameter(parameters, 
"filters", IoFilter.class));
         setProperties(config, parameters);
 
         return createEndpoint(uri, config);
@@ -214,38 +215,42 @@
     }
 
     protected void configureCodecFactory(String type, IoServiceConfig config, 
MinaConfiguration configuration) {
-        ProtocolCodecFactory codecFactory = configuration.getCodec();
+        if (configuration.getCodec() != null) {
+            addCodecFactory(config, configuration.getCodec());
+        } else if (configuration.isAllowDefaultCodec()) {
+            configureDefaultCodecFactory(type, config, configuration);
+        }
+    }
 
-        if (codecFactory == null) {
-            if (configuration.isTextline()) {
-                Charset charset = getEncodingParameter(type, configuration);
-                LineDelimiter delimiter = 
getLineDelimiterParameter(configuration.getTextlineDelimiter());
-                TextLineCodecFactory tmpCodecFactory = new 
TextLineCodecFactory(charset, delimiter);
-                if (configuration.getEncoderMaxLineLength() > 0) {
-                    
tmpCodecFactory.setEncoderMaxLineLength(configuration.getEncoderMaxLineLength());
-                }
-                if (configuration.getDecoderMaxLineLength() > 0) {
-                    
tmpCodecFactory.setDecoderMaxLineLength(configuration.getDecoderMaxLineLength());
-                }
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(type + ": Using TextLineCodecFactory: " + 
codecFactory + " using encoding: "
-                            + charset + " line delimiter: " + 
configuration.getTextlineDelimiter()
-                            + "(" + delimiter + ")");
-                    LOG.debug("Encoder maximum line length: " + 
tmpCodecFactory.getEncoderMaxLineLength()
-                            + "Decoder maximum line length: " + 
tmpCodecFactory.getDecoderMaxLineLength());
-                }
-                codecFactory = tmpCodecFactory;
-            } else {
-                codecFactory = new ObjectSerializationCodecFactory();
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug(type + ": Using ObjectSerializationCodecFactory: 
" + codecFactory);
-                }
+    protected void configureDefaultCodecFactory(String type, IoServiceConfig 
config, MinaConfiguration configuration) {
+        if (configuration.isTextline()) {
+            Charset charset = getEncodingParameter(type, configuration);
+            LineDelimiter delimiter = 
getLineDelimiterParameter(configuration.getTextlineDelimiter());
+            TextLineCodecFactory codecFactory = new 
TextLineCodecFactory(charset, delimiter);
+            if (configuration.getEncoderMaxLineLength() > 0) {
+                
codecFactory.setEncoderMaxLineLength(configuration.getEncoderMaxLineLength());
+            }
+            if (configuration.getDecoderMaxLineLength() > 0) {
+                
codecFactory.setDecoderMaxLineLength(configuration.getDecoderMaxLineLength());
+            }
+            addCodecFactory(config, codecFactory);
+            if (LOG.isDebugEnabled()) {
+                LOG.debug(type + ": Using TextLineCodecFactory: " + 
codecFactory + " using encoding: "
+                        + charset + " line delimiter: " + 
configuration.getTextlineDelimiter()
+                        + "(" + delimiter + ")");
+                LOG.debug("Encoder maximum line length: " + 
codecFactory.getEncoderMaxLineLength()
+                        + "Decoder maximum line length: " + 
codecFactory.getDecoderMaxLineLength());
+            }
+        } else {
+            ObjectSerializationCodecFactory codecFactory = new 
ObjectSerializationCodecFactory();
+            addCodecFactory(config, codecFactory);
+            if (LOG.isDebugEnabled()) {
+                LOG.debug(type + ": Using ObjectSerializationCodecFactory: " + 
codecFactory);
             }
         }
-
-        addCodecFactory(config, codecFactory);
+        
     }
-
+    
     protected MinaEndpoint createDatagramEndpoint(String uri, 
MinaConfiguration configuration) {
         boolean minaLogger = configuration.isMinaLogger();
         long timeout = configuration.getTimeout();

Modified: 
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConfiguration.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConfiguration.java?rev=885768&r1=885767&r2=885768&view=diff
==============================================================================
--- 
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConfiguration.java
 (original)
+++ 
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConfiguration.java
 Tue Dec  1 14:31:00 2009
@@ -42,6 +42,7 @@
     private int encoderMaxLineLength = -1;
     private int decoderMaxLineLength = -1;
     private List<IoFilter> filters;
+    private boolean allowDefaultCodec = true;
 
     /**
      * Returns a copy of this configuration
@@ -190,4 +191,11 @@
         return protocol.equals("udp") || protocol.equals("mcast") || 
protocol.equals("multicast");
     }
     
+    public void setAllowDefaultCodec(boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public boolean isAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
 }

Modified: 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFiltersTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFiltersTest.java?rev=885768&r1=885767&r2=885768&view=diff
==============================================================================
--- 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFiltersTest.java
 (original)
+++ 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFiltersTest.java
 Tue Dec  1 14:31:00 2009
@@ -37,8 +37,19 @@
  */
 public class MinaFiltersTest extends ContextTestSupport {
 
-    public void testFilter() throws Exception {
-        final String uri = 
"mina:tcp://localhost:6321?textline=true&minaLogger=true&sync=false&filters=#myFilters";
+    public void testFilterListRef() throws Exception {
+        
testFilter("mina:tcp://localhost:6321?textline=true&minaLogger=true&sync=false&filters=#myFilters");
+    }
+    
+    public void testFilterElementRef() throws Exception {
+        
testFilter("mina:tcp://localhost:6322?textline=true&minaLogger=true&sync=false&filters=#myFilter");
+    }
+    
+    protected void tearDown() {
+        TestFilter.called = 0;
+    }
+    
+    private void testFilter(final String uri) throws Exception {
         context.addRoutes(new RouteBuilder() {
 
             public void configure() throws Exception {
@@ -73,10 +84,12 @@
     @Override
     protected Context createJndiContext() throws Exception {
         JndiContext answer = new JndiContext();
+        IoFilter myFilter = new TestFilter();
         List<IoFilter> myFilters = new ArrayList<IoFilter>();
-        myFilters.add(new TestFilter());
+        myFilters.add(myFilter);
 
         answer.bind("myFilters", myFilters);
+        answer.bind("myFilter", myFilter);
         return answer;
     }
 }

Added: 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoDefaultCodecTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoDefaultCodecTest.java?rev=885768&view=auto
==============================================================================
--- 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoDefaultCodecTest.java
 (added)
+++ 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoDefaultCodecTest.java
 Tue Dec  1 14:31:00 2009
@@ -0,0 +1,49 @@
+/**
+ * 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.camel.component.mina;
+
+import java.util.List;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.mina.common.IoFilterChain.Entry;
+
+/**
+ * For unit testing the <tt>noDefaultCodec</tt> option.
+ */
+public class MinaNoDefaultCodecTest extends ContextTestSupport {
+
+    public void testFilter() throws Exception {
+        final String uri1 = 
"mina:tcp://localhost:6321?allowDefaultCodec=false";
+        final String uri2 = "mina:tcp://localhost:6322";
+        context.addRoutes(new RouteBuilder() {
+
+            public void configure() throws Exception {
+                from(uri1).to("mock:result");
+                from(uri2).to("mock:result");
+            }
+        });
+
+        MinaEndpoint endpoint1 = (MinaEndpoint)context.getEndpoint(uri1);
+        MinaEndpoint endpoint2 = (MinaEndpoint)context.getEndpoint(uri2);
+        List<Entry> filters1 = 
endpoint1.getAcceptorConfig().getFilterChain().getAll();
+        List<Entry> filters2 = 
endpoint2.getAcceptorConfig().getFilterChain().getAll();
+        assertTrue(filters1.size() < filters2.size());
+    }
+
+}
+

Propchange: 
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoDefaultCodecTest.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to