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