Repository: camel
Updated Branches:
  refs/heads/camel-2.17.x 2cab1a1c2 -> a1a81ddd7


CAMEL-9769: camel-spring-javaconfig - Make the main class easier


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a1a81ddd
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a1a81ddd
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a1a81ddd

Branch: refs/heads/camel-2.17.x
Commit: a1a81ddd7b7949a989237040deebf4a98d0f1ec3
Parents: 2cab1a1
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Mar 28 13:25:42 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Mar 28 13:28:56 2016 +0200

----------------------------------------------------------------------
 .../spring/javaconfig/CamelConfiguration.java   | 16 ++--
 .../apache/camel/spring/javaconfig/Main.java    | 77 +++++++++++++++-----
 .../SingleRouteCamelConfiguration.java          |  4 +
 3 files changed, 71 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a1a81ddd/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java
 
b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java
index cf4d6e6..d8aaf23 100644
--- 
a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java
+++ 
b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/CamelConfiguration.java
@@ -42,15 +42,13 @@ import org.springframework.context.annotation.Configuration;
  * <a
  * 
href="http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-annotation-config";>
  * Spring annotation-based</a> configurations for working with Camel. Unless 
{@link #routes()} method is overridden, this configuration
- * automagically load all the {@link org.apache.camel.builder.RouteBuilder} 
instances available in the Spring context.
+ * automatically load all the {@link org.apache.camel.builder.RouteBuilder} 
instances available in the Spring context.
  */
 @Configuration
 public abstract class CamelConfiguration implements BeanFactoryAware, 
ApplicationContextAware {
     
     private BeanFactory beanFactory;
-
     private AutowireCapableBeanFactory autowireCapableBeanFactory;
-
     private ApplicationContext applicationContext;
 
     public void setBeanFactory(BeanFactory beanFactory) {
@@ -134,7 +132,7 @@ public abstract class CamelConfiguration implements 
BeanFactoryAware, Applicatio
     }
 
     /**
-     * Returns the CamelContext
+     * Get's the {@link CamelContext} to be used.
      */
     @Bean
     public CamelContext camelContext() throws Exception {
@@ -143,13 +141,15 @@ public abstract class CamelConfiguration implements 
BeanFactoryAware, Applicatio
         List<RouteBuilder> routes = routes();
         for (RoutesBuilder route : routes) {
             camelContext.addRoutes(route);
-        }        
+        }
         return camelContext;
     }
-    
-    // Can register the camel component, language here
+
+    /**
+     * Callback to setup {@link CamelContext} before its started
+     */
     protected void setupCamelContext(CamelContext camelContext) throws 
Exception {
-        
+        // noop
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/a1a81ddd/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
 
b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
index 0d63c4e..1d6997f 100644
--- 
a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
+++ 
b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/Main.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.spring.javaconfig;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
+
 import org.apache.camel.util.ObjectHelper;
 import org.springframework.context.ApplicationContext;
 import 
org.springframework.context.annotation.AnnotationConfigApplicationContext;
@@ -31,22 +31,22 @@ import 
org.springframework.context.support.AbstractApplicationContext;
 public class Main extends org.apache.camel.spring.Main {
     
     private String basedPackages;
-    
-    private String configClassesString;
-    
+    private String configClasses;
+    private Class[] configClass;
+
     public Main() {
 
         addOption(new ParameterOption("bp", "basedPackages",
-            "Sets the based packages of spring java config 
ApplicationContext", "basedPackages") {
+            "Sets the based packages of Spring java config 
ApplicationContext", "basedPackages") {
             protected void doProcess(String arg, String parameter, 
LinkedList<String> remainingArgs) {
                 setBasedPackages(parameter);
             }
         });
 
         addOption(new ParameterOption("cc", "configClasses",
-            "Sets the config Class of spring java config ApplicationContext", 
"configureClasses") {
+            "Sets the config of Spring java config ApplicationContext", 
"configureClasses") {
             protected void doProcess(String arg, String parameter, 
LinkedList<String> remainingArgs) {
-                setConfigClassesString(parameter);
+                setConfigClasses(parameter);
             }
         });
     }
@@ -56,27 +56,63 @@ public class Main extends org.apache.camel.spring.Main {
         instance = main;
         main.run(args);
     }
-    
+
+    /**
+     * Sets the base packages where Spring annotation scanning is performed.
+     * You can separate multiple packages using comma or semi colon.
+     */
     public void setBasedPackages(String config) {
         basedPackages = config;
     }
-    
+
     public String getBasedPackages() {
         return basedPackages;
     }
+
+    /**
+     * Sets the name of Spring <tt>@Configuration</tt> classes to use.
+     * You can separate multiple classes using comma or semi colon.
+     */
+    public void setConfigClasses(String config) {
+        configClasses = config;
+    }
     
+    public String getConfigClasses() {
+        return configClasses;
+    }
+
+    /**
+     * @deprecated use {@link #setConfigClasses(String)}
+     */
+    @Deprecated
     public void setConfigClassesString(String config) {
-        configClassesString = config;
+        setConfigClasses(config);
     }
-    
+
+    /**
+     * @deprecated use {@link #getConfigClasses()}
+     */
+    @Deprecated
     public String getConfigClassesString() {
-        return configClassesString;
+        return getConfigClasses();
     }
-    
+
+    public Class[] getConfigClass() {
+        return configClass;
+    }
+
+    /**
+     * Sets the Spring <tt>@Configuration</tt> classes to use.
+     */
+    public void setConfigClass(Class... configClass) {
+        this.configClass = configClass;
+    }
+
     private Class<?>[] getConfigClasses(String configureClasses) {
         List<Class<?>> answer = new ArrayList<Class<?>>();
-        String[] classes =  configureClasses.split(";");
+        String[] classes =  configureClasses.split("(;|,)");
         for (String className :  classes) {
+            className = className.trim();
             Class<?> configClass = ObjectHelper.loadClass(className);
             if (configClass != null) {
                 answer.add(configClass);
@@ -91,21 +127,26 @@ public class Main extends org.apache.camel.spring.Main {
         if (parentContext != null) {
             acApplicationContext.setParent(parentContext);
         }
-        if (getConfigClassesString() != null) {
-            Class<?>[] configClasses = 
getConfigClasses(getConfigClassesString());
+        if (getConfigClasses() != null) {
+            Class<?>[] configClasses = getConfigClasses(getConfigClasses());
             for (Class<?> cls : configClasses) {
                 acApplicationContext.register(cls);
             }
         }
+        if (getConfigClass() != null) {
+            for (Class<?> cls : getConfigClass()) {
+                acApplicationContext.register(cls);
+            }
+        }
         if (getBasedPackages() != null) {
-            String[] basePackages = getBasedPackages().split(";");
+            String[] basePackages = getBasedPackages().split("(;|,)");
             for (String basePackage : basePackages) {
+                basePackage = basePackage.trim();
                 acApplicationContext.scan(basePackage);
             }
         }
         acApplicationContext.refresh();
         return acApplicationContext;
-        
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a1a81ddd/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/SingleRouteCamelConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/SingleRouteCamelConfiguration.java
 
b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/SingleRouteCamelConfiguration.java
index fd378ab..6be3d5a 100644
--- 
a/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/SingleRouteCamelConfiguration.java
+++ 
b/components/camel-spring-javaconfig/src/main/java/org/apache/camel/spring/javaconfig/SingleRouteCamelConfiguration.java
@@ -28,6 +28,10 @@ import org.springframework.context.annotation.Bean;
  * 
href="http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-annotation-config";>
  * Spring annotation-based</a> configurations to configure a {@link 
org.apache.camel.CamelContext} with a single
  * {@link RouteBuilder} instance.
+ * <p/>
+ * You may want to use Spring's {@link 
org.springframework.stereotype.Component} annotation and mark your Camel
+ * {@link RouteBuilder} classes using this annotation and have it automatic 
discovered, if you are using
+ * Spring's annotation scanner.
  */
 public abstract class SingleRouteCamelConfiguration extends CamelConfiguration 
{
 

Reply via email to