You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2013/04/23 10:02:18 UTC

svn commit: r1470842 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/component/bean/ camel-core/src/main/java/org/apache/camel/component/timer/ components/camel-jms/src/main/java/org/apache/camel/component/jms/ components/camel-jms/src/tes...

Author: jstrachan
Date: Tue Apr 23 08:02:18 2013
New Revision: 1470842

URL: http://svn.apache.org/r1470842
Log:
port a bunch of components to use the new  UriEndpointComponent base class for Component implementations which makes use of the new @UriEndpoint / @UriParam annotations to provide better metadata in their ComponentConfiguration implementation; see CAMEL-6306 and CAMEL-6304

Added:
    camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsComponentConfigurationTest.java   (with props)
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
    camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
    camel/trunk/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java
    camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
    camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java?rev=1470842&r1=1470841&r2=1470842&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java Tue Apr 23 08:02:18 2013
@@ -16,23 +16,23 @@
  */
 package org.apache.camel.component.bean;
 
-import java.util.Map;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
-import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.impl.ProcessorEndpoint;
+import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.LRUSoftCache;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+
 /**
  * The <a href="http://camel.apache.org/bean.html">Bean Component</a>
  * will look up the URI in the {@link org.apache.camel.spi.Registry} and use that to handle message dispatching.
  *
  * @version 
  */
-public class BeanComponent extends DefaultComponent {
+public class BeanComponent extends UriEndpointComponent {
 
     private static final transient Logger LOG = LoggerFactory.getLogger(BeanComponent.class);
     // use an internal soft cache for BeanInfo as they are costly to introspect
@@ -40,6 +40,7 @@ public class BeanComponent extends Defau
     private final LRUSoftCache<BeanInfoCacheKey, BeanInfo> cache = new LRUSoftCache<BeanInfoCacheKey, BeanInfo>(1000);
 
     public BeanComponent() {
+        super(BeanEndpoint.class);
     }
     
     /**

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java?rev=1470842&r1=1470841&r2=1470842&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java Tue Apr 23 08:02:18 2013
@@ -25,6 +25,7 @@ import java.util.Timer;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 
 /**
  * Represents the component that manages {@link TimerEndpoint}.  It holds the
@@ -32,9 +33,13 @@ import org.apache.camel.impl.DefaultComp
  *
  * @version 
  */
-public class TimerComponent extends DefaultComponent {
+public class TimerComponent extends UriEndpointComponent {
     private final Map<String, Timer> timers = new HashMap<String, Timer>();
 
+    public TimerComponent() {
+        super(TimerEndpoint.class);
+    }
+
     public Timer getTimer(TimerEndpoint endpoint) {
         String key = endpoint.getTimerName();
         if (!endpoint.isDaemon()) {

Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=1470842&r1=1470841&r2=1470842&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Tue Apr 23 08:02:18 2013
@@ -25,7 +25,7 @@ import javax.jms.Session;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.LoggingLevel;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
 import org.springframework.beans.BeansException;
@@ -47,7 +47,7 @@ import static org.apache.camel.util.Obje
  *
  * @version 
  */
-public class JmsComponent extends DefaultComponent implements ApplicationContextAware, HeaderFilterStrategyAware {
+public class JmsComponent extends UriEndpointComponent implements ApplicationContextAware, HeaderFilterStrategyAware {
 
     private static final String KEY_FORMAT_STRATEGY_PARAM = "jmsKeyFormatStrategy";
     private JmsConfiguration configuration;
@@ -58,13 +58,15 @@ public class JmsComponent extends Defaul
     private MessageListenerContainerFactory messageListenerContainerFactory;
 
     public JmsComponent() {
+        super(JmsEndpoint.class);
     }
 
     public JmsComponent(CamelContext context) {
-        super(context);
+        super(context, JmsEndpoint.class);
     }
 
     public JmsComponent(JmsConfiguration configuration) {
+        this();
         this.configuration = configuration;
     }
 

Added: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsComponentConfigurationTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsComponentConfigurationTest.java?rev=1470842&view=auto
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsComponentConfigurationTest.java (added)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsComponentConfigurationTest.java Tue Apr 23 08:02:18 2013
@@ -0,0 +1,98 @@
+/**
+ *
+ * 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.jms;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.ComponentConfiguration;
+import org.apache.camel.Endpoint;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.ParameterConfiguration;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+import javax.jms.ConnectionFactory;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+
+/**
+ * Lets test the use of the ComponentConfiguration on the JMS endpoint
+ */
+public class JmsComponentConfigurationTest extends CamelTestSupport {
+    protected String componentName = "activemq456";
+    protected boolean verbose = false;
+
+    @Test
+    public void testConfiguration() throws Exception {
+        Component component = context().getComponent(componentName);
+        ComponentConfiguration configuration = component.createComponentConfiguration();
+        SortedMap<String,ParameterConfiguration> parameterConfigurationMap = configuration.getParameterConfigurationMap();
+        if (verbose) {
+            Set<Map.Entry<String, ParameterConfiguration>> entries = parameterConfigurationMap.entrySet();
+            for (Map.Entry<String, ParameterConfiguration> entry : entries) {
+                String name = entry.getKey();
+                ParameterConfiguration config = entry.getValue();
+                System.out.println("Has name: " + name + " with type " + config.getParameterType().getName());
+            }
+        }
+
+        assertParameterConfig(configuration, "concurrentConsumers", int.class);
+        assertParameterConfig(configuration, "clientId", String.class);
+        assertParameterConfig(configuration, "disableReplyTo", boolean.class);
+        assertParameterConfig(configuration, "timeToLive", long.class);
+
+        configuration.setParameter("concurrentConsumers", 10);
+        configuration.setParameter("clientId", "foo");
+        configuration.setParameter("disableReplyTo", true);
+        configuration.setParameter("timeToLive", 1000L);
+
+        JmsEndpoint endpoint = assertIsInstanceOf(JmsEndpoint.class, configuration.createEndpoint());
+        assertEquals("endpoint.concurrentConsumers", 10, endpoint.getConcurrentConsumers());
+        assertEquals("endpoint.clientId", "foo", endpoint.getClientId());
+        assertEquals("endpoint.disableReplyTo", true, endpoint.isDisableReplyTo());
+        assertEquals("endpoint.timeToLive", 1000L, endpoint.getTimeToLive());
+    }
+
+    public static void assertParameterConfig(ComponentConfiguration configuration, String name,
+                                       Class<?> parameterType) {
+        ParameterConfiguration config = configuration.getParameterConfiguration(name);
+        assertNotNull("ParameterConfiguration should exist for parameter name " + name, config);
+        assertEquals("ParameterConfiguration." + name + ".getName()", name, config.getName());
+        assertEquals("ParameterConfiguration." + name + ".getParameterType()", parameterType,
+                config.getParameterType());
+    }
+
+    protected CamelContext createCamelContext() throws Exception {
+        CamelContext camelContext = super.createCamelContext();
+        ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
+        JmsComponent comp = jmsComponentAutoAcknowledge(connectionFactory);
+        camelContext.addComponent(componentName, comp);
+        return camelContext;
+    }
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+            }
+        };
+    }
+}

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

Modified: camel/trunk/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java?rev=1470842&r1=1470841&r2=1470842&view=diff
==============================================================================
--- camel/trunk/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java (original)
+++ camel/trunk/components/camel-sjms/src/main/java/org/apache/camel/component/sjms/SjmsComponent.java Tue Apr 23 08:02:18 2013
@@ -27,6 +27,7 @@ import org.apache.camel.component.sjms.j
 import org.apache.camel.component.sjms.jms.KeyFormatStrategy;
 import org.apache.camel.component.sjms.taskmanager.TimedTaskManager;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spi.HeaderFilterStrategyAware;
 import org.apache.camel.util.ObjectHelper;
@@ -36,7 +37,7 @@ import org.slf4j.LoggerFactory;
 /**
  * The <a href="http://camel.apache.org/sjms">Simple JMS</a> component.
  */
-public class SjmsComponent extends DefaultComponent implements HeaderFilterStrategyAware {
+public class SjmsComponent extends UriEndpointComponent implements HeaderFilterStrategyAware {
     private static final transient Logger LOGGER = LoggerFactory.getLogger(SjmsComponent.class);
 
     private ConnectionFactory connectionFactory;
@@ -47,6 +48,10 @@ public class SjmsComponent extends Defau
     private TransactionCommitStrategy transactionCommitStrategy;
     private TimedTaskManager timedTaskManager;
 
+    public SjmsComponent() {
+        super(SjmsEndpoint.class);
+    }
+
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         validateMepAndReplyTo(parameters);

Modified: camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java?rev=1470842&r1=1470841&r2=1470842&view=diff
==============================================================================
--- camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java (original)
+++ camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlComponent.java Tue Apr 23 08:02:18 2013
@@ -21,7 +21,7 @@ import javax.sql.DataSource;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.IntrospectionSupport;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -29,15 +29,16 @@ import org.springframework.jdbc.core.Jdb
 /**
  * @version 
  */
-public class SqlComponent extends DefaultComponent {
+public class SqlComponent extends UriEndpointComponent {
     private DataSource dataSource;
     private boolean usePlaceholder = true;
 
     public SqlComponent() {
+        super(SqlEndpoint.class);
     }
 
     public SqlComponent(CamelContext context) {
-        super(context);
+        super(context, SqlEndpoint.class);
     }
 
     @Override

Modified: camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java?rev=1470842&r1=1470841&r2=1470842&view=diff
==============================================================================
--- camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java (original)
+++ camel/trunk/components/camel-ssh/src/main/java/org/apache/camel/component/ssh/SshComponent.java Tue Apr 23 08:02:18 2013
@@ -20,15 +20,19 @@ import java.net.URI;
 import java.util.Map;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.sshd.common.KeyPairProvider;
 
 /**
  * Represents the component that manages {@link SshEndpoint}.
  */
-public class SshComponent extends DefaultComponent {
+public class SshComponent extends UriEndpointComponent {
     private SshConfiguration configuration;
 
+    public SshComponent() {
+        super(SshEndpoint.class);
+    }
+
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         SshConfiguration newConfig;