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 2015/12/25 11:39:15 UTC

camel git commit: CAMEL-9325: camel-spring-boot - Allow to configure directory to scan for xml routes, and to turn it off.

Repository: camel
Updated Branches:
  refs/heads/master 5cfea2cac -> 69421bf3d


CAMEL-9325: camel-spring-boot - Allow to configure directory to scan for xml routes, and to turn it off.


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

Branch: refs/heads/master
Commit: 69421bf3d45899f09510ab3873a1656cbc83ec41
Parents: 5cfea2c
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Dec 25 11:35:17 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Dec 25 11:35:17 2015 +0100

----------------------------------------------------------------------
 .../spring/boot/CamelAutoConfiguration.java     |  4 ++--
 .../boot/CamelConfigurationProperties.java      | 13 ++++++++++++
 .../camel/spring/boot/RoutesCollector.java      | 22 +++++++++++++-------
 3 files changed, 30 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/69421bf3/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
index e1bd003..b3c58ab 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java
@@ -67,9 +67,9 @@ public class CamelAutoConfiguration {
 
     @Bean
     @ConditionalOnMissingBean(RoutesCollector.class)
-    RoutesCollector routesCollector(ApplicationContext applicationContext) {
+    RoutesCollector routesCollector(ApplicationContext applicationContext, CamelConfigurationProperties configurationProperties) {
         Collection<CamelContextConfiguration> configurations = applicationContext.getBeansOfType(CamelContextConfiguration.class).values();
-        return new RoutesCollector(applicationContext, new ArrayList<CamelContextConfiguration>(configurations));
+        return new RoutesCollector(applicationContext, new ArrayList<CamelContextConfiguration>(configurations), configurationProperties);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/69421bf3/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
index 24dfd59..0aa0da3 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelConfigurationProperties.java
@@ -48,6 +48,12 @@ public class CamelConfigurationProperties {
      */
     private String name;
 
+    /**
+     * Directory to scan for adding additional XML routes.
+     * You can turn this off by setting the value to <tt>false</tt>
+     */
+    private String xmlRoutes = "classpath:camel/*.xml";
+
     // Getters & setters
 
     public boolean isJmxEnabled() {
@@ -90,4 +96,11 @@ public class CamelConfigurationProperties {
         this.name = name;
     }
 
+    public String getXmlRoutes() {
+        return xmlRoutes;
+    }
+
+    public void setXmlRoutes(String xmlRoutes) {
+        this.xmlRoutes = xmlRoutes;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/69421bf3/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
index bf15018..49a9015 100644
--- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
+++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/RoutesCollector.java
@@ -47,11 +47,15 @@ public class RoutesCollector implements ApplicationListener<ContextRefreshedEven
 
     private final List<CamelContextConfiguration> camelContextConfigurations;
 
+    private final CamelConfigurationProperties configurationProperties;
+
     // Constructors
 
-    public RoutesCollector(ApplicationContext applicationContext, List<CamelContextConfiguration> camelContextConfigurations) {
+    public RoutesCollector(ApplicationContext applicationContext, List<CamelContextConfiguration> camelContextConfigurations,
+                           CamelConfigurationProperties configurationProperties) {
         this.applicationContext = applicationContext;
         this.camelContextConfigurations = new ArrayList<CamelContextConfiguration>(camelContextConfigurations);
+        this.configurationProperties = configurationProperties;
     }
 
     // Overridden
@@ -59,7 +63,7 @@ public class RoutesCollector implements ApplicationListener<ContextRefreshedEven
     @Override
     public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
         ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();
-        // only listen to context refreshs of "my" applicationContext
+        // only listen to context refresh of "my" applicationContext
         if (this.applicationContext.equals(applicationContext)) {
             CamelContext camelContext = contextRefreshedEvent.getApplicationContext().getBean(CamelContext.class);
 
@@ -82,7 +86,10 @@ public class RoutesCollector implements ApplicationListener<ContextRefreshedEven
                 }
 
                 try {
-                    loadXmlRoutes(applicationContext, camelContext);
+                    boolean scan = !configurationProperties.getXmlRoutes().equals("false");
+                    if (scan) {
+                        loadXmlRoutes(applicationContext, camelContext, configurationProperties.getXmlRoutes());
+                    }
 
                     for (CamelContextConfiguration camelContextConfiguration : camelContextConfigurations) {
                         LOG.debug("CamelContextConfiguration found. Invoking: {}", camelContextConfiguration);
@@ -108,16 +115,17 @@ public class RoutesCollector implements ApplicationListener<ContextRefreshedEven
 
     // Helpers
 
-    private void loadXmlRoutes(ApplicationContext applicationContext, CamelContext camelContext) throws Exception {
-        LOG.debug("Started XML routes detection. Scanning classpath (/camel/*.xml)...");
+    private void loadXmlRoutes(ApplicationContext applicationContext, CamelContext camelContext, String directory) throws Exception {
+        LOG.info("Loading additional Camel XML routes from: {}", directory);
         try {
-            Resource[] xmlRoutes = applicationContext.getResources("classpath:camel/*.xml");
+            Resource[] xmlRoutes = applicationContext.getResources(directory);
             for (Resource xmlRoute : xmlRoutes) {
+                LOG.debug("Found XML route: {}", xmlRoute);
                 RoutesDefinition xmlDefinition = camelContext.loadRoutesDefinition(xmlRoute.getInputStream());
                 camelContext.addRouteDefinitions(xmlDefinition.getRoutes());
             }
         } catch (FileNotFoundException e) {
-            LOG.debug("No XMl routes found in the classpath (/camel/*.xml). Skipping XML routes detection.");
+            LOG.debug("No XMl routes found in {}. Skipping XML routes detection.", directory);
         }
     }