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 10:42:34 UTC

svn commit: r655440 - in /activemq/camel/trunk/camel-core/src: main/java/org/apache/camel/component/log/ main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/component/seda/ main/java/org/apache/camel/impl/ main/java/org/apache/camel/p...

Author: davsclaus
Date: Mon May 12 01:42:34 2008
New Revision: 655440

URL: http://svn.apache.org/viewvc?rev=655440&view=rev
Log:
CAMEL-433: Added getAndRemoveParameter helper methods to follow Camel components programming idiom where used parameters must be removed from the parameters map

Added:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java   (with props)
Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingLevel.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java?rev=655440&r1=655439&r2=655440&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java Mon May 12 01:42:34 2008
@@ -26,8 +26,6 @@
 import org.apache.camel.processor.Logger;
 import org.apache.camel.processor.LoggingLevel;
 import org.apache.camel.processor.ThroughputLogger;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * The <a href="http://activemq.apache.org/camel/log.html">Log Component</a>
@@ -36,15 +34,14 @@
  * @version $Revision$
  */
 public class LogComponent extends DefaultComponent<Exchange> {
-    private static final Log LOG = LogFactory.getLog(LogComponent.class);
 
     protected Endpoint<Exchange> createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         LoggingLevel level = getLoggingLevel(parameters);
-        Object value = parameters.remove("groupSize");
+        Integer groupSize = getAndRemoveParameter(parameters, "groupSize", Integer.class);
 
         Logger logger;
-        if (value != null) {
-            logger = new ThroughputLogger(remaining, level, ObjectConverter.toInteger(value));
+        if (groupSize != null) {
+            logger = new ThroughputLogger(remaining, level, ObjectConverter.toInteger(groupSize));
         } else {
             logger = new Logger(remaining, level);
         }
@@ -53,18 +50,8 @@
     }
 
     protected LoggingLevel getLoggingLevel(Map parameters) {
-        String levelText = (String) parameters.get("level");
-        parameters.remove("level");
-        LoggingLevel level = null;
-        if (levelText != null) {
-            level = LoggingLevel.valueOf(levelText.toUpperCase());
-            if (level == null) {
-                LOG.warn("Could not convert level text: " + levelText + " to a valid logging level so defaulting to WARN");
-            }
-        }
-        if (level == null) {
-            level = LoggingLevel.INFO;
-        }
-        return level;
+        String levelText = getAndRemoveParameter(parameters, "level", String.class, "INFO");
+        return LoggingLevel.valueOf(levelText.toUpperCase());
     }
+
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java?rev=655440&r1=655439&r2=655440&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java Mon May 12 01:42:34 2008
@@ -21,7 +21,6 @@
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
-import org.apache.camel.converter.ObjectConverter;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.ThroughputLogger;
 
@@ -35,7 +34,7 @@
     @Override
     protected Endpoint<Exchange> createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         MockEndpoint endpoint = new MockEndpoint(uri, this);
-        Integer value = ObjectConverter.toInteger(parameters.remove("reportGroup"));
+        Integer value = getAndRemoveParameter(parameters, "reportGroup", Integer.class);
         if (value != null) {
             Processor reporter = new ThroughputLogger("org.apache.camel.mock:" + remaining, value);
             endpoint.setReporter(reporter);

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java?rev=655440&r1=655439&r2=655440&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/seda/SedaComponent.java Mon May 12 01:42:34 2008
@@ -22,7 +22,6 @@
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.converter.ObjectConverter;
 import org.apache.camel.impl.DefaultComponent;
 
 /**
@@ -34,14 +33,7 @@
 public class SedaComponent extends DefaultComponent<Exchange> {
 
     public BlockingQueue<Exchange> createQueue(String uri, Map parameters) {
-        int size = 1000;
-        Object value = parameters.remove("size");
-        if (value != null) {
-            Integer i = convertTo(Integer.class, value);
-            if (i != null) {
-                size = i;
-            }
-        }
+        int size = getAndRemoveParameter(parameters, "size", Integer.class, 1000);
         return new LinkedBlockingQueue<Exchange>(size);
     }
 

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java?rev=655440&r1=655439&r2=655440&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java Mon May 12 01:42:34 2008
@@ -237,7 +237,7 @@
      * {@link CamelContext} or throws
      */
     public Object mandatoryLookup(String name) {
-        return  CamelContextHelper.mandatoryLookup(getCamelContext(), name);
+        return CamelContextHelper.mandatoryLookup(getCamelContext(), name);
     }
 
     /**
@@ -245,8 +245,39 @@
      * {@link CamelContext}
      */
     public <T> T mandatoryLookup(String name, Class<T> beanType) {
-        return  CamelContextHelper.mandatoryLookup(getCamelContext(), name, beanType);
+        return CamelContextHelper.mandatoryLookup(getCamelContext(), name, beanType);
     }
 
+    /**
+     * Gets the parameter and remove it from the parameter map.
+     * 
+     * @param parameters  the parameters
+     * @param key        the key
+     * @param type       the requested type to convert the value from the parameter
+     * @return  the converted value parameter, <tt>null</tt> if parameter does not exists.
+     */
+    public <T> T getAndRemoveParameter(Map parameters, String key, Class<T> type) {
+        return getAndRemoveParameter(parameters, key, type, null);
+    }
+
+    /**
+     * Gets the parameter and remove it from the parameter map.
+     *
+     * @param parameters     the parameters
+     * @param key           the key
+     * @param type          the requested type to convert the value from the parameter
+     * @param defaultValue  use this default value if the parameter does not contain the key
+     * @return  the converted value parameter
+     */
+    public <T> T getAndRemoveParameter(Map parameters, String key, Class<T> type, T defaultValue) {
+        Object value = parameters.remove(key);
+        if (value == null) {
+            value = defaultValue;
+        }
+        if (value == null) {
+            return null;
+        }
+        return convertTo(type, value);
+    }
 
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingLevel.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingLevel.java?rev=655440&r1=655439&r2=655440&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingLevel.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingLevel.java Mon May 12 01:42:34 2008
@@ -22,5 +22,5 @@
  * @version $Revision$
  */
 public enum LoggingLevel {
-    DEBUG, ERROR, FATAL, INFO, TRACE, WARN;
+    DEBUG, ERROR, FATAL, INFO, TRACE, WARN
 }

Added: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java?rev=655440&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java (added)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java Mon May 12 01:42:34 2008
@@ -0,0 +1,80 @@
+/**
+ * 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.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Endpoint;
+
+/**
+ * Unit test for helper methods on the DefaultComponent.
+ */
+public class DefaultComponentTest extends ContextTestSupport {
+
+    private class MyComponent extends DefaultComponent<DefaultExchange> {
+
+        private MyComponent(CamelContext context) {
+            super(context);
+        }
+
+        protected Endpoint<DefaultExchange> createEndpoint(String uri, String remaining, Map parameters)
+            throws Exception {
+            return null;
+        }
+    }
+
+    public void testGetAndRemoveParameterEmptyMap() {
+        Map parameters = new HashMap();
+        MyComponent my = new MyComponent(this.context);
+        Integer value = my.getAndRemoveParameter(parameters, "size", Integer.class);
+        assertNull(value);
+    }
+
+    public void testGetAndRemoveParameterEmptyMapDefault() {
+        Map parameters = new HashMap();
+        MyComponent my = new MyComponent(this.context);
+        Integer value = my.getAndRemoveParameter(parameters, "size", Integer.class, 5);
+        assertEquals(value.intValue(), 5);
+    }
+
+    public void testGetAndRemoveParameterEmptyMapDefaultIsNull() {
+        Map parameters = new HashMap();
+        MyComponent my = new MyComponent(this.context);
+        Integer value = my.getAndRemoveParameter(parameters, "size", Integer.class, null);
+        assertNull(value);
+    }
+
+    public void testGetAndRemoveParameterToInteger() {
+        Map parameters = new HashMap();
+        parameters.put("size", 200);
+        MyComponent my = new MyComponent(this.context);
+        Integer value = my.getAndRemoveParameter(parameters, "size", Integer.class);
+        assertEquals(value.intValue(), 200);
+    }
+
+    public void testGetAndRemoveParameterToIntegerDefault() {
+        Map parameters = new HashMap();
+        parameters.put("size", 200);
+        MyComponent my = new MyComponent(this.context);
+        Integer value = my.getAndRemoveParameter(parameters, "level", Integer.class, 4);
+        assertEquals(value.intValue(), 4);
+    }
+
+}

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date