You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2008/05/12 13:11:06 UTC

svn commit: r655469 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/MinaComponent.java test/java/org/apache/camel/component/mina/MinaConfigurationTest.java

Author: davsclaus
Date: Mon May 12 04:11:05 2008
New Revision: 655469

URL: http://svn.apache.org/viewvc?rev=655469&view=rev
Log:
CAMEL-433: using the new getAndRemoveParameter programming best practice

Removed:
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConfigurationTest.java
Modified:
    activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java

Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java?rev=655469&r1=655468&r2=655469&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java Mon May 12 04:11:05 2008
@@ -27,7 +27,6 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
-import org.apache.camel.converter.ObjectConverter;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -114,15 +113,18 @@
         SocketAddress address = new InetSocketAddress(connectUri.getHost(), connectUri.getPort());
         IoConnector connector = new SocketConnector();
 
-        boolean lazySessionCreation = ObjectConverter.toBool(parameters.get("lazySessionCreation"));
-        long timeout = getTimeoutParameter(parameters);
-        boolean transferExchange = ObjectConverter.toBool(parameters.get("transferExchange"));
-        boolean sync = ObjectConverter.toBool(parameters.get("sync"));
-        boolean minaLogger = ObjectConverter.toBool(parameters.get("minaLogger"));
+        boolean lazySessionCreation = getAndRemoveParameter(parameters, "lazySessionCreation", Boolean.class, false);
+        long timeout = getAndRemoveParameter(parameters, "timeout", Long.class, 0L);
+        boolean transferExchange = getAndRemoveParameter(parameters, "transferExchange", Boolean.class, false);
+        boolean sync = getAndRemoveParameter(parameters, "sync", Boolean.class, false);
+        boolean minaLogger = getAndRemoveParameter(parameters, "minaLogger", Boolean.class, false);
+        boolean textline = getAndRemoveParameter(parameters, "textline", Boolean.class, false);
+        String encoding = getAndRemoveParameter(parameters, "encoding", String.class);
+        String codec = getAndRemoveParameter(parameters, "codec", String.class);
 
         // connector config
         SocketConnectorConfig connectorConfig = new SocketConnectorConfig();
-        configureSocketCodecFactory("MinaProducer", connectorConfig, parameters);
+        configureSocketCodecFactory("MinaProducer", connectorConfig, textline, encoding, codec);
         if (minaLogger) {
             connectorConfig.getFilterChain().addLast("logger", new LoggingFilter());
         }
@@ -132,14 +134,13 @@
 
         // acceptor connectorConfig
         SocketAcceptorConfig acceptorConfig = new SocketAcceptorConfig();
-        configureSocketCodecFactory("MinaConsumer", acceptorConfig, parameters);
+        configureSocketCodecFactory("MinaConsumer", acceptorConfig, textline, encoding, codec);
         acceptorConfig.setReuseAddress(true);
         acceptorConfig.setDisconnectOnUnbind(true);
         if (minaLogger) {
             acceptorConfig.getFilterChain().addLast("logger", new LoggingFilter());
         }
 
-        removeKnownParameters(parameters);
         MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation, timeout, transferExchange);
 
         // set sync or async mode after endpoint is created
@@ -152,14 +153,13 @@
         return endpoint;
     }
 
-    protected void configureSocketCodecFactory(String type, IoServiceConfig config, Map parameters) {
-        ProtocolCodecFactory codecFactory = getCodecFactory(type, parameters);
+    protected void configureSocketCodecFactory(String type, IoServiceConfig config, boolean textline, String encoding, String codec) {
+        ProtocolCodecFactory codecFactory = getCodecFactory(type, codec);
 
         if (codecFactory == null) {
-            boolean textline = ObjectConverter.toBool(parameters.get("textline"));
             if (textline) {
-                Charset encoding = getEncodingParameter(type, parameters);
-                codecFactory = new TextLineCodecFactory(encoding);
+                Charset charset = getEncodingParameter(type, encoding);
+                codecFactory = new TextLineCodecFactory(charset);
                 if (LOG.isDebugEnabled()) {
                     LOG.debug(type + ": Using TextLineCodecFactory: " + codecFactory + " using encoding: "
                               + encoding);
@@ -175,31 +175,21 @@
         addCodecFactory(config, codecFactory);
     }
 
-    private void removeKnownParameters(Map parameters) {
-        // remove the known parameters this component supports
-        parameters.remove("lazySessionCreation");
-        parameters.remove("timeout");
-        parameters.remove("transferExchange");
-        parameters.remove("sync");
-        parameters.remove("minaLogger");
-        parameters.remove("codec");
-        parameters.remove("textline");
-        parameters.remove("encoding");
-    }
-
     protected MinaEndpoint createDatagramEndpoint(String uri, URI connectUri, Map parameters) {
         IoAcceptor acceptor = new DatagramAcceptor();
         SocketAddress address = new InetSocketAddress(connectUri.getHost(), connectUri.getPort());
         IoConnector connector = new DatagramConnector();
 
-        boolean lazySessionCreation = ObjectConverter.toBool(parameters.get("lazySessionCreation"));
-        long timeout = getTimeoutParameter(parameters);
+        boolean lazySessionCreation = getAndRemoveParameter(parameters, "lazySessionCreation", Boolean.class, false);
+        long timeout = getAndRemoveParameter(parameters, "timeout", Long.class, 0L);
         boolean transferExchange = false; // transfer exchange is not supported for datagram protocol
-        boolean sync = ObjectConverter.toBool(parameters.get("sync"));
-        boolean minaLogger = ObjectConverter.toBool(parameters.get("minaLogger"));
+        boolean sync = getAndRemoveParameter(parameters, "sync", Boolean.class, false);
+        boolean minaLogger = getAndRemoveParameter(parameters, "minaLogger", Boolean.class, false);
+        String encoding = getAndRemoveParameter(parameters, "encoding", String.class);
+        String codec = getAndRemoveParameter(parameters, "codec", String.class);
 
         DatagramConnectorConfig connectorConfig = new DatagramConnectorConfig();
-        configureDataGramCodecFactory("MinaProducer", connectorConfig, parameters);
+        configureDataGramCodecFactory("MinaProducer", connectorConfig, encoding, codec);
         if (minaLogger) {
             connectorConfig.getFilterChain().addLast("logger", new LoggingFilter());
         }
@@ -208,14 +198,13 @@
         connectorConfig.setConnectTimeout((int)(connectTimeout / 1000));
 
         DatagramAcceptorConfig acceptorConfig = new DatagramAcceptorConfig();
-        configureDataGramCodecFactory("MinaConsumer", acceptorConfig, parameters);
+        configureDataGramCodecFactory("MinaConsumer", acceptorConfig, encoding, codec);
         acceptorConfig.setDisconnectOnUnbind(true);
         // reuse address is default true for datagram
         if (minaLogger) {
             acceptorConfig.getFilterChain().addLast("logger", new LoggingFilter());
         }
 
-        removeKnownParameters(parameters);
         MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation, timeout, transferExchange);
 
         // set sync or async mode after endpoint is created
@@ -228,8 +217,7 @@
         return endpoint;
     }
 
-    private Charset getEncodingParameter(String type, Map parameters) {
-        String encoding = (String) parameters.get("encoding");
+    private Charset getEncodingParameter(String type, String encoding) {
         if (encoding == null) {
             encoding = Charset.defaultCharset().name();
             if (LOG.isDebugEnabled()) {
@@ -243,26 +231,12 @@
         return Charset.forName(encoding);
     }
 
-    private static long getTimeoutParameter(Map parameters) throws IllegalArgumentException {
-        long timeout = 0;
-        String value = (String) parameters.get("timeout");
-        if (value != null) {
-            try {
-                timeout = ObjectConverter.toLong(value);
-            } catch (NumberFormatException e) {
-                throw new IllegalArgumentException("The timeout parameter is not a number: " + value);
-            }
-        }
-
-        return timeout;
-    }
-
     /**
      * For datagrams the entire message is available as a single ByteBuffer so lets just pass those around by default
      * and try converting whatever they payload is into ByteBuffers unless some custom converter is specified
      */
-    protected void configureDataGramCodecFactory(String type, IoServiceConfig config, Map parameters) {
-        ProtocolCodecFactory codecFactory = getCodecFactory(type, parameters);
+    protected void configureDataGramCodecFactory(String type, IoServiceConfig config, String encoding, String codec) {
+        ProtocolCodecFactory codecFactory = getCodecFactory(type, codec);
         if (codecFactory == null) {
             codecFactory = new ProtocolCodecFactory() {
                 public ProtocolEncoder getEncoder() throws Exception {
@@ -298,8 +272,8 @@
             };
 
             // set the encoder used for this datagram codec factory
-            Charset encoding = getEncodingParameter(type, parameters);
-            encoder = encoding.newEncoder();
+            Charset charset = getEncodingParameter(type, encoding);
+            encoder = charset.newEncoder();
 
             if (LOG.isDebugEnabled()) {
                 LOG.debug(type + ": Using CodecFactory: " + codecFactory + " using encoding: " + encoding);
@@ -319,9 +293,8 @@
         return answer;
     }
 
-    protected ProtocolCodecFactory getCodecFactory(String type, Map parameters) {
+    protected ProtocolCodecFactory getCodecFactory(String type, String codec) {
         ProtocolCodecFactory codecFactory = null;
-        String codec = (String) parameters.get("codec");
         if (codec != null) {
             codecFactory = getCamelContext().getRegistry().lookup(codec, ProtocolCodecFactory.class);
             if (LOG.isDebugEnabled()) {