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