Author: davsclaus
Date: Tue Jun 15 13:05:11 2010
New Revision: 954861

URL: http://svn.apache.org/viewvc?rev=954861&view=rev
Log:
CAMEL-2787: Introduced new contextScan for scanning context, eg spring registry 
for RouteBuilder.

Added:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ContextScanDefinition.java
      - copied, changed from r954744, 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java
   (with props)
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java
   (contents, props changed)
      - copied, changed from r954744, 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/
      - copied from r954744, 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/componentscan/
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/
      - copied from r954744, 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/componentscan2/
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan/
      - copied from r954744, 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/componentscan/
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan2/
      - copied from r954744, 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/componentscan2/
Removed:
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/componentscan/
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/componentscan2/
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/componentscan/
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/componentscan2/
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
    camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
    
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
    
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
    
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/AntPathMatcher.java
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/MyRoute.java
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.java
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/MyOtherRoute.java
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.java
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringPackageTest.xml
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.xml
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.xml

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultPackageScanClassResolver.java
 Tue Jun 15 13:05:11 2010
@@ -65,6 +65,12 @@ public class DefaultPackageScanClassReso
         scanFilters.add(filter);
     }
 
+    public void removeFilter(PackageScanFilter filter) {
+        if (scanFilters != null) {
+            scanFilters.remove(filter);
+        }
+    }
+
     public Set<ClassLoader> getClassLoaders() {
         if (classLoaders == null) {
             classLoaders = new HashSet<ClassLoader>();

Copied: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ContextScanDefinition.java
 (from r954744, 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ContextScanDefinition.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/model/ContextScanDefinition.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java&r1=954744&r2=954861&rev=954861&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ContextScanDefinition.java
 Tue Jun 15 13:05:11 2010
@@ -18,21 +18,17 @@ package org.apache.camel.model;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
 /**
- * <code>PackageScanDefinition</code> represents a &lt;package-scan/&gt 
element.
+ * <code>ContextScanDefinition</code> represents a &lt;contextScan/&gt element.
  */
-...@xmlrootelement(name = "packageScan")
+...@xmlrootelement(name = "contextScan")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class PackageScanDefinition {
-
-    @XmlElement(name = "package", required = true)
-    private List<String> packages = new ArrayList<String>();
+public class ContextScanDefinition {
 
     @XmlElement(name = "excludes", required = false)
     private List<String> excludes = new ArrayList<String>();
@@ -48,14 +44,6 @@ public class PackageScanDefinition {
         return includes;
     }
 
-    public List<String> getPackages() {
-        return packages;
-    }
-
-    public void setPackages(List<String> packages) {
-        this.packages = packages;
-    }
-
     public void setExcludes(List<String> excludes) {
         this.excludes = excludes;
     }
@@ -65,8 +53,7 @@ public class PackageScanDefinition {
     }
 
     protected void clear() {
-        packages.clear();
         excludes.clear();
         includes.clear();
     }
-}
+}
\ No newline at end of file

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java
 Tue Jun 15 13:05:11 2010
@@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlElem
 import javax.xml.bind.annotation.XmlRootElement;
 
 /**
- * <code>PackageScanDefinition</code> represents a &lt;package-scan/&gt 
element.
+ * <code>PackageScanDefinition</code> represents a &lt;packageScan/&gt element.
  */
 @XmlRootElement(name = "packageScan")
 @XmlAccessorType(XmlAccessType.FIELD)

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/PackageScanClassResolver.java
 Tue Jun 15 13:05:11 2010
@@ -77,13 +77,13 @@ public interface PackageScanClassResolve
     Set<Class<?>> findImplementations(Class<?> parent, String... packageNames);
 
     /**
-     * Attemsp to discover classes filter by the provided filter
+     * Attempts to discover classes filter by the provided filter
      *
-     * @param fiter  filter to filter desired classes.
+     * @param filter  filter to filter desired classes.
      * @param packageNames one or more package names to scan (including 
subpackages) for classes
      * @return the classes found, returns an empty set if none found
      */
-    Set<Class<?>> findByFilter(PackageScanFilter fiter, String... 
packageNames);
+    Set<Class<?>> findByFilter(PackageScanFilter filter, String... 
packageNames);
     
     /**
      * Add a filter that will be applied to all scan operations
@@ -91,4 +91,11 @@ public interface PackageScanClassResolve
      * @param filter filter to filter desired classes in all scan operations
      */
     void addFilter(PackageScanFilter filter);
+
+    /**
+     * Removes the filter
+     *
+     * @param filter filter to filter desired classes in all scan operations
+     */
+    void removeFilter(PackageScanFilter filter);
 }

Modified: 
camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index 
(original)
+++ camel/trunk/camel-core/src/main/resources/org/apache/camel/model/jaxb.index 
Tue Jun 15 13:05:11 2010
@@ -20,6 +20,7 @@ BeanDefinition
 CatchDefinition
 ChoiceDefinition
 ConvertBodyDefinition
+ContextScanDefinition
 DataFormatDefinition
 DelayDefinition
 DescriptionDefinition

Modified: 
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
 (original)
+++ 
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
 Tue Jun 15 13:05:11 2010
@@ -36,6 +36,7 @@ import org.apache.camel.core.xml.CamelJM
 import org.apache.camel.core.xml.CamelPropertyPlaceholderDefinition;
 import org.apache.camel.core.xml.CamelProxyFactoryDefinition;
 import org.apache.camel.core.xml.CamelServiceExporterDefinition;
+import org.apache.camel.model.ContextScanDefinition;
 import org.apache.camel.model.InterceptDefinition;
 import org.apache.camel.model.InterceptFromDefinition;
 import org.apache.camel.model.InterceptSendToEndpointDefinition;
@@ -48,6 +49,7 @@ import org.apache.camel.model.RouteDefin
 import org.apache.camel.model.ThreadPoolProfileDefinition;
 import org.apache.camel.model.config.PropertiesDefinition;
 import org.apache.camel.model.dataformat.DataFormatsDefinition;
+import org.apache.camel.spi.PackageScanFilter;
 import org.osgi.framework.BundleContext;
 import org.osgi.service.blueprint.container.BlueprintContainer;
 
@@ -89,6 +91,8 @@ public class CamelContextFactoryBean ext
     private String[] packages = {};
     @XmlElement(name = "packageScan", type = PackageScanDefinition.class, 
required = false)
     private PackageScanDefinition packageScan;
+    @XmlElement(name = "contextScan", type = ContextScanDefinition.class, 
required = false)
+    private ContextScanDefinition contextScan;
     @XmlElement(name = "jmxAgent", type = CamelJMXAgentDefinition.class, 
required = false)
     private CamelJMXAgentDefinition camelJMXAgent;
     @XmlElements({
@@ -180,7 +184,11 @@ public class CamelContextFactoryBean ext
     }
 
     @Override
-    protected void findRouteBuilders(String[] normalized, List<RoutesBuilder> 
builders) throws Exception {
+    protected void findRouteBuildersByPackageScan(String[] packages, 
PackageScanFilter filter, List<RoutesBuilder> builders) throws Exception {
+    }
+
+    @Override
+    protected void findRouteBuildersByContextScan(PackageScanFilter filter, 
List<RoutesBuilder> builders) throws Exception {
     }
 
     public String getDependsOn() {
@@ -311,6 +319,14 @@ public class CamelContextFactoryBean ext
         this.packageScan = packageScan;
     }
 
+    public ContextScanDefinition getContextScan() {
+        return contextScan;
+    }
+
+    public void setContextScan(ContextScanDefinition contextScan) {
+        this.contextScan = contextScan;
+    }
+
     public CamelJMXAgentDefinition getCamelJMXAgent() {
         return camelJMXAgent;
     }

Modified: 
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
 (original)
+++ 
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java
 Tue Jun 15 13:05:11 2010
@@ -17,6 +17,8 @@
 package org.apache.camel.core.xml;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -40,6 +42,7 @@ import org.apache.camel.management.Defau
 import org.apache.camel.management.DefaultManagementLifecycleStrategy;
 import org.apache.camel.management.DefaultManagementStrategy;
 import org.apache.camel.management.ManagedManagementStrategy;
+import org.apache.camel.model.ContextScanDefinition;
 import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.IdentifiedType;
 import org.apache.camel.model.InterceptDefinition;
@@ -72,6 +75,7 @@ import org.apache.camel.spi.InterceptStr
 import org.apache.camel.spi.LifecycleStrategy;
 import org.apache.camel.spi.ManagementStrategy;
 import org.apache.camel.spi.PackageScanClassResolver;
+import org.apache.camel.spi.PackageScanFilter;
 import org.apache.camel.spi.ShutdownStrategy;
 import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.util.CamelContextHelper;
@@ -90,71 +94,8 @@ import org.apache.commons.logging.LogFac
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class AbstractCamelContextFactoryBean<T extends CamelContext> 
extends IdentifiedType implements RouteContainer {
-
     private static final Log LOG = 
LogFactory.getLog(AbstractCamelContextFactoryBean.class);
 
-//    @XmlAttribute(name = "depends-on", required = false)
-//    private String dependsOn;
-//    @XmlAttribute(required = false)
-//    private String trace;
-//    @XmlAttribute(required = false)
-//    private String streamCache = "false";
-//    @XmlAttribute(required = false)
-//    private String delayer;
-//    @XmlAttribute(required = false)
-//    private String handleFault;
-//    @XmlAttribute(required = false)
-//    private String errorHandlerRef;
-//    @XmlAttribute(required = false)
-//    private String autoStartup = "true";
-//    @XmlAttribute(required = false)
-//    private ShutdownRoute shutdownRoute;
-//    @XmlAttribute(required = false)
-//    private ShutdownRunningTask shutdownRunningTask;
-//    @XmlElement(name = "properties", required = false)
-//    private PropertiesDefinition properties;
-//    @XmlElement(name = "propertyPlaceholder", type = 
CamelPropertyPlaceholderDefinition.class, required = false)
-//    private CamelPropertyPlaceholderDefinition camelPropertyPlaceholder;
-//    @XmlElement(name = "package", required = false)
-//    private String[] packages = {};
-//    @XmlElement(name = "packageScan", type = PackageScanDefinition.class, 
required = false)
-//    private PackageScanDefinition packageScan;
-//    @XmlElement(name = "jmxAgent", type = CamelJMXAgentDefinition.class, 
required = false)
-//    private CamelJMXAgentDefinition camelJMXAgent;
-////    @XmlElements({
-////        @XmlElement(name = "beanPostProcessor", type = 
CamelBeanPostProcessor.class, required = false),
-////        @XmlElement(name = "template", type = 
CamelProducerTemplateFactoryBean.class, required = false),
-////        @XmlElement(name = "consumerTemplate", type = 
CamelConsumerTemplateFactoryBean.class, required = false),
-////        @XmlElement(name = "proxy", type = 
CamelProxyFactoryDefinition.class, required = false),
-////        @XmlElement(name = "export", type = 
CamelServiceExporterDefinition.class, required = false),
-////        @XmlElement(name = "errorHandler", type = 
ErrorHandlerDefinition.class, required = false)})
-////    private List beans;
-//    @XmlElement(name = "routeBuilder", required = false)
-//    private List<RouteBuilderDefinition> builderRefs = new 
ArrayList<RouteBuilderDefinition>();
-//    @XmlElement(name = "routeContextRef", required = false)
-//    private List<RouteContextRefDefinition> routeRefs = new 
ArrayList<RouteContextRefDefinition>();
-//    @XmlElement(name = "threadPoolProfile", required = false)
-//    private List<ThreadPoolProfileDefinition> threadPoolProfiles;
-////    @XmlElement(name = "threadPool", required = false)
-////    private List<AbstractCamelThreadPoolFactoryBean> threadPools;
-////    @XmlElement(name = "endpoint", required = false)
-////    private List<AbstractCamelEndpointFactoryBean> endpoints;
-//    @XmlElement(name = "dataFormats", required = false)
-//    private DataFormatsDefinition dataFormats;
-//    @XmlElement(name = "onException", required = false)
-//    private List<OnExceptionDefinition> onExceptions = new 
ArrayList<OnExceptionDefinition>();
-//    @XmlElement(name = "onCompletion", required = false)
-//    private List<OnCompletionDefinition> onCompletions = new 
ArrayList<OnCompletionDefinition>();
-//    @XmlElement(name = "intercept", required = false)
-//    private List<InterceptDefinition> intercepts = new 
ArrayList<InterceptDefinition>();
-//    @XmlElement(name = "interceptFrom", required = false)
-//    private List<InterceptFromDefinition> interceptFroms = new 
ArrayList<InterceptFromDefinition>();
-//    @XmlElement(name = "interceptSendToEndpoint", required = false)
-//    private List<InterceptSendToEndpointDefinition> interceptSendToEndpoints 
= new ArrayList<InterceptSendToEndpointDefinition>();
-//    @XmlElement(name = "route", required = false)
-//    private List<RouteDefinition> routes = new ArrayList<RouteDefinition>();
-//    @XmlTransient
-//    private T context;
     @XmlTransient
     private List<RoutesBuilder> builders = new ArrayList<RoutesBuilder>();
     @XmlTransient
@@ -692,6 +633,10 @@ public abstract class AbstractCamelConte
 
     public abstract void setPackageScan(PackageScanDefinition packageScan);
 
+    public abstract ContextScanDefinition getContextScan();
+
+    public abstract void setContextScan(ContextScanDefinition contextScan);
+
     public abstract CamelPropertyPlaceholderDefinition 
getCamelPropertyPlaceholder();
 
     public abstract String getTrace();
@@ -846,9 +791,8 @@ public abstract class AbstractCamelConte
      * Strategy method to try find {...@link 
org.apache.camel.builder.RouteBuilder} instances on the classpath
      */
     protected void findRouteBuilders() throws Exception {
-        PackageScanClassResolver resolver = 
getContext().getPackageScanClassResolver();
+        // package scan
         addPackageElementContentsToScanDefinition();
-
         PackageScanDefinition packageScanDef = getPackageScan();
         if (packageScanDef != null && packageScanDef.getPackages().size() > 0) 
{
             // use package scan filter
@@ -862,14 +806,32 @@ public abstract class AbstractCamelConte
                 exclude = getContext().resolvePropertyPlaceholders(exclude);
                 filter.addExcludePattern(exclude);
             }
-            resolver.addFilter(filter);
 
             String[] normalized = normalizePackages(getContext(), 
packageScanDef.getPackages());
-            findRouteBuilders(normalized, builders);
+            findRouteBuildersByPackageScan(normalized, filter, builders);
+        }
+
+        // context scan
+        ContextScanDefinition contextScanDef = getContextScan();
+        if (contextScanDef != null) {
+            // use package scan filter
+            PatternBasedPackageScanFilter filter = new 
PatternBasedPackageScanFilter();
+            // support property placeholders in include and exclude
+            for (String include : contextScanDef.getIncludes()) {
+                include = getContext().resolvePropertyPlaceholders(include);
+                filter.addIncludePattern(include);
+            }
+            for (String exclude : contextScanDef.getExcludes()) {
+                exclude = getContext().resolvePropertyPlaceholders(exclude);
+                filter.addExcludePattern(exclude);
+            }
+            findRouteBuildersByContextScan(filter, builders);
         }
     }
 
-    protected abstract void findRouteBuilders(String[] normalized, 
List<RoutesBuilder> builders) throws Exception;
+    protected abstract void findRouteBuildersByPackageScan(String[] packages, 
PackageScanFilter filter, List<RoutesBuilder> builders) throws Exception;
+
+    protected abstract void findRouteBuildersByContextScan(PackageScanFilter 
filter, List<RoutesBuilder> builders) throws Exception;
 
     private void addPackageElementContentsToScanDefinition() {
         PackageScanDefinition packageScanDef = getPackageScan();

Modified: 
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/AntPathMatcher.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/AntPathMatcher.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/AntPathMatcher.java
 (original)
+++ 
camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/AntPathMatcher.java
 Tue Jun 15 13:05:11 2010
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.core.xml.scan;
 
 import java.util.ArrayList;

Modified: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
 Tue Jun 15 13:05:11 2010
@@ -18,7 +18,6 @@ package org.apache.camel.spring;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
@@ -37,6 +36,7 @@ import org.apache.camel.core.xml.CamelJM
 import org.apache.camel.core.xml.CamelPropertyPlaceholderDefinition;
 import org.apache.camel.core.xml.CamelProxyFactoryDefinition;
 import org.apache.camel.core.xml.CamelServiceExporterDefinition;
+import org.apache.camel.model.ContextScanDefinition;
 import org.apache.camel.model.InterceptDefinition;
 import org.apache.camel.model.InterceptFromDefinition;
 import org.apache.camel.model.InterceptSendToEndpointDefinition;
@@ -49,6 +49,7 @@ import org.apache.camel.model.RouteDefin
 import org.apache.camel.model.ThreadPoolProfileDefinition;
 import org.apache.camel.model.config.PropertiesDefinition;
 import org.apache.camel.model.dataformat.DataFormatsDefinition;
+import org.apache.camel.spi.PackageScanFilter;
 import org.apache.camel.spi.Registry;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -75,8 +76,8 @@ import static org.apache.camel.util.Obje
 @XmlRootElement(name = "camelContext")
 @XmlAccessorType(XmlAccessType.FIELD)
 @SuppressWarnings("unused")
-public class CamelContextFactoryBean extends 
AbstractCamelContextFactoryBean<SpringCamelContext> 
-    implements FactoryBean, InitializingBean, DisposableBean, 
ApplicationContextAware, ApplicationListener {
+public class CamelContextFactoryBean extends 
AbstractCamelContextFactoryBean<SpringCamelContext>
+        implements FactoryBean, InitializingBean, DisposableBean, 
ApplicationContextAware, ApplicationListener {
     private static final Log LOG = 
LogFactory.getLog(CamelContextFactoryBean.class);
 
     @XmlAttribute(name = "depends-on", required = false)
@@ -105,15 +106,17 @@ public class CamelContextFactoryBean ext
     private String[] packages = {};
     @XmlElement(name = "packageScan", type = PackageScanDefinition.class, 
required = false)
     private PackageScanDefinition packageScan;
+    @XmlElement(name = "contextScan", type = ContextScanDefinition.class, 
required = false)
+    private ContextScanDefinition contextScan;
     @XmlElement(name = "jmxAgent", type = CamelJMXAgentDefinition.class, 
required = false)
     private CamelJMXAgentDefinition camelJMXAgent;
     @XmlElements({
-        @XmlElement(name = "beanPostProcessor", type = 
CamelBeanPostProcessor.class, required = false),
-        @XmlElement(name = "template", type = 
CamelProducerTemplateFactoryBean.class, required = false),
-        @XmlElement(name = "consumerTemplate", type = 
CamelConsumerTemplateFactoryBean.class, required = false),
-        @XmlElement(name = "proxy", type = CamelProxyFactoryDefinition.class, 
required = false),
-        @XmlElement(name = "export", type = 
CamelServiceExporterDefinition.class, required = false),
-        @XmlElement(name = "errorHandler", type = 
ErrorHandlerDefinition.class, required = false)})
+            @XmlElement(name = "beanPostProcessor", type = 
CamelBeanPostProcessor.class, required = false),
+            @XmlElement(name = "template", type = 
CamelProducerTemplateFactoryBean.class, required = false),
+            @XmlElement(name = "consumerTemplate", type = 
CamelConsumerTemplateFactoryBean.class, required = false),
+            @XmlElement(name = "proxy", type = 
CamelProxyFactoryDefinition.class, required = false),
+            @XmlElement(name = "export", type = 
CamelServiceExporterDefinition.class, required = false),
+            @XmlElement(name = "errorHandler", type = 
ErrorHandlerDefinition.class, required = false)})
     private List beans;
     @XmlElement(name = "routeBuilder", required = false)
     private List<RouteBuilderDefinition> builderRefs = new 
ArrayList<RouteBuilderDefinition>();
@@ -172,19 +175,32 @@ public class CamelContextFactoryBean ext
         return bean;
     }
 
-    protected void findRouteBuilders(String[] normalized, List<RoutesBuilder> 
builders) throws Exception {
-        RouteBuilderFinder finder = new RouteBuilderFinder(getContext(), 
normalized, getContextClassLoaderOnStart(),
-                getBeanPostProcessor(), 
getContext().getPackageScanClassResolver());
+    @Override
+    protected void findRouteBuildersByPackageScan(String[] packages, 
PackageScanFilter filter, List<RoutesBuilder> builders) throws Exception {
+        // add filter to class resolver which then will filter
+        getContext().getPackageScanClassResolver().addFilter(filter);
+
+        PackageScanRouteBuilderFinder finder = new 
PackageScanRouteBuilderFinder(getContext(), packages, 
getContextClassLoaderOnStart(),
+                                                                               
  getBeanPostProcessor(), getContext().getPackageScanClassResolver());
+        finder.appendBuilders(builders);
+
+        // and remove the filter
+        getContext().getPackageScanClassResolver().removeFilter(filter);
+    }
+
+    @Override
+    protected void findRouteBuildersByContextScan(PackageScanFilter filter, 
List<RoutesBuilder> builders) throws Exception {
+        ContextScanRouteBuilderFinder finder = new 
ContextScanRouteBuilderFinder(getContext(), filter);
         finder.appendBuilders(builders);
     }
 
     protected void initBeanPostProcessor(SpringCamelContext context) {
         if (beanPostProcessor != null) {
             if (beanPostProcessor instanceof ApplicationContextAware) {
-                
((ApplicationContextAware)beanPostProcessor).setApplicationContext(applicationContext);
+                ((ApplicationContextAware) 
beanPostProcessor).setApplicationContext(applicationContext);
             }
             if (beanPostProcessor instanceof CamelBeanPostProcessor) {
-                
((CamelBeanPostProcessor)beanPostProcessor).setCamelContext(getContext());
+                ((CamelBeanPostProcessor) 
beanPostProcessor).setCamelContext(getContext());
             }
         }
     }
@@ -233,6 +249,7 @@ public class CamelContextFactoryBean ext
 
     // Properties
     // 
-------------------------------------------------------------------------
+
     public ApplicationContext getApplicationContext() {
         if (applicationContext == null) {
             throw new IllegalArgumentException("No applicationContext has been 
injected!");
@@ -243,7 +260,7 @@ public class CamelContextFactoryBean ext
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
     }
-    
+
     public void setBeanPostProcessor(BeanPostProcessor postProcessor) {
         this.beanPostProcessor = postProcessor;
     }
@@ -353,6 +370,21 @@ public class CamelContextFactoryBean ext
         this.packageScan = packageScan;
     }
 
+    public ContextScanDefinition getContextScan() {
+        return contextScan;
+    }
+
+    /**
+     * Sets the context scanning (eg Spring's ApplicationContext) information.
+     * Context scanning allows for the automatic discovery of Camel routes 
runtime for inclusion
+     * e.g. {...@link org.apache.camel.builder.RouteBuilder} implementations
+     *
+     * @param contextScan the context scan
+     */
+    public void setContextScan(ContextScanDefinition contextScan) {
+        this.contextScan = contextScan;
+    }
+
     public CamelPropertyPlaceholderDefinition getCamelPropertyPlaceholder() {
         return camelPropertyPlaceholder;
     }

Added: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java?rev=954861&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java
 (added)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java
 Tue Jun 15 13:05:11 2010
@@ -0,0 +1,91 @@
+/**
+ * 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.spring;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.spi.PackageScanFilter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * A helper class which will find all {...@link 
org.apache.camel.builder.RouteBuilder} instances on the
+ * Spring {...@link org.springframework.context.ApplicationContext}.
+ *
+ * @version $Revision$
+ */
+public class ContextScanRouteBuilderFinder {
+    private static final transient Log LOG = 
LogFactory.getLog(ContextScanRouteBuilderFinder.class);
+    private final ApplicationContext applicationContext;
+    private final PackageScanFilter filter;
+
+    public ContextScanRouteBuilderFinder(SpringCamelContext camelContext, 
PackageScanFilter filter) {
+        this.applicationContext = camelContext.getApplicationContext();
+        this.filter = filter;
+    }
+
+    /**
+     * Appends all the {...@link org.apache.camel.builder.RouteBuilder} 
instances that can be found in the context
+     */
+    public void appendBuilders(List<RoutesBuilder> list) {
+        Map beans = applicationContext.getBeansOfType(RoutesBuilder.class, 
true, true);
+
+        for (Object key : beans.keySet()) {
+            Object bean = beans.get(key);
+
+            if (LOG.isTraceEnabled()) {
+                LOG.trace("Found RouteBuilder with id: " + key + " -> " + 
bean);
+            }
+
+            // certain beans should be ignored
+            if (shouldIgnoreBean(bean)) {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Ignoring RouteBuilder id: " + key);
+                }
+                continue;
+            }
+
+            if (!isFilteredClass(bean)) {
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Ignoring filtered RouteBuilder id: " + key + " 
as class: " + bean.getClass());
+                }
+                continue;
+            }
+
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Adding instantiated RouteBuilder id: " + key + " as 
class: " + bean.getClass());
+            }
+            list.add((RoutesBuilder) bean);
+        }
+    }
+
+    protected boolean shouldIgnoreBean(Object bean) {
+        return false;
+    }
+
+    protected boolean isFilteredClass(Object bean) {
+        if (filter != null) {
+            return filter.matches(bean.getClass());
+        } else {
+            return false;
+        }
+    }
+
+}
\ No newline at end of file

Propchange: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ContextScanRouteBuilderFinder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java
 (from r954744, 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java?p2=camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java&p1=camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java&r1=954744&r2=954861&rev=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java
 Tue Jun 15 13:05:11 2010
@@ -22,30 +22,27 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.spi.PackageScanClassResolver;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
 
 /**
  * A helper class which will find all {...@link 
org.apache.camel.builder.RouteBuilder} instances on the classpath
  *
  * @version $Revision$
  */
-public class RouteBuilderFinder {
-    private static final transient Log LOG = 
LogFactory.getLog(RouteBuilderFinder.class);
+public class PackageScanRouteBuilderFinder {
+    private static final transient Log LOG = 
LogFactory.getLog(PackageScanRouteBuilderFinder.class);
     private final SpringCamelContext camelContext;
     private final String[] packages;
-    private PackageScanClassResolver resolver;
-    private ApplicationContext applicationContext;    
-    private BeanPostProcessor beanPostProcessor;
+    private final PackageScanClassResolver resolver;
+    private final ApplicationContext applicationContext;
+    private final BeanPostProcessor beanPostProcessor;
 
-    public RouteBuilderFinder(SpringCamelContext camelContext, String[] 
packages, ClassLoader classLoader,
-                              BeanPostProcessor postProcessor, 
PackageScanClassResolver resolver) {
+    public PackageScanRouteBuilderFinder(SpringCamelContext camelContext, 
String[] packages, ClassLoader classLoader,
+                                         BeanPostProcessor postProcessor, 
PackageScanClassResolver resolver) {
         this.camelContext = camelContext;
         this.applicationContext = camelContext.getApplicationContext();
         this.packages = packages;
@@ -65,16 +62,6 @@ public class RouteBuilderFinder {
                 LOG.trace("Found RouteBuilder class: " + aClass);
             }
 
-            // check whether the class has already been instantiate by Spring 
as it was @Component annotated
-            // and its already enlisted in the Spring registry
-            RouteBuilder existing = 
isRouteBuilderAlreadyRegisteredByComponentAnnotation(aClass);
-            if (existing != null) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Adding existing @Component annotated 
RouteBuilder: " + aClass);
-                }
-                list.add(existing);
-                continue;
-            }
             // certain beans should be ignored
             if (shouldIgnoreBean(aClass)) {
                 if (LOG.isDebugEnabled()) {
@@ -104,43 +91,6 @@ public class RouteBuilderFinder {
     }
 
     /**
-     * Lookup if the given class has already been enlisted in Spring registry 
since the class
-     * has been @Component annotated.
-     * 
-     * @param type  the class type
-     * @return the existing route builder instance, or <tt>null</tt> if none 
existed
-     */
-    protected RouteBuilder 
isRouteBuilderAlreadyRegisteredByComponentAnnotation(Class<?> type) {
-        Component ann = type.getAnnotation(Component.class);
-        if (ann != null) {
-            String id = ann.value();
-            if (ObjectHelper.isEmpty(id)) {
-                // no explicit id set, so Spring auto assigns the id, so lets 
try to find that id then
-                String[] names = applicationContext.getBeanNamesForType(type, 
true, true);
-                if (names != null && names.length == 1) {
-                    id = names[0];
-                }
-            }
-            if (ObjectHelper.isNotEmpty(id)) {
-                boolean match = applicationContext.isTypeMatch(id, type);
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Is there already a RouteBuilder registering in 
Spring with id " + id + ": " + match);
-                }
-                if (match) {
-                    Object existing = applicationContext.getBean(id, type);
-                    if (existing instanceof RouteBuilder) {
-                        if (LOG.isDebugEnabled()) {
-                            LOG.debug("Found existing @Component annotated 
RouteBuilder with id " + id);
-                        }
-                        return RouteBuilder.class.cast(existing);
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
      * Lets ignore beans that are explicitly configured in the Spring XML files
      */
     protected boolean shouldIgnoreBean(Class<?> type) {

Propchange: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PackageScanRouteBuilderFinder.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
 Tue Jun 15 13:05:11 2010
@@ -270,6 +270,7 @@ public class CamelNamespaceHandler exten
                 builder.addPropertyValue("routeRefs", 
factoryBean.getRouteRefs());
                 builder.addPropertyValue("properties", 
factoryBean.getProperties());
                 builder.addPropertyValue("packageScan", 
factoryBean.getPackageScan());
+                builder.addPropertyValue("contextScan", 
factoryBean.getContextScan());
                 if (factoryBean.getPackages().length > 0) {
                     builder.addPropertyValue("packages", 
factoryBean.getPackages());
                 }

Modified: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/MyRoute.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/MyRoute.java?rev=954861&r1=954744&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/MyRoute.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/MyRoute.java
 Tue Jun 15 13:05:11 2010
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.issues.componentscan;
+package org.apache.camel.spring.issues.contextscan;
 
 import org.apache.camel.spring.SpringRouteBuilder;
 import org.springframework.stereotype.Component;

Modified: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.java?rev=954861&r1=954744&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.java
 Tue Jun 15 13:05:11 2010
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.issues.componentscan;
+package org.apache.camel.spring.issues.contextscan;
 
 import org.apache.camel.spring.SpringTestSupport;
 import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -27,7 +27,7 @@ public class SpringRouteIsComponentAnnot
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
-        return new 
ClassPathXmlApplicationContext("org/apache/camel/spring/issues/componentscan/SpringRouteIsComponentAnnotatedTest.xml");
+        return new 
ClassPathXmlApplicationContext("org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.xml");
     }
 
     public void testSpringRouteIsComponentAnnotated() throws Exception {

Modified: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/MyOtherRoute.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/MyOtherRoute.java?rev=954861&r1=954744&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/MyOtherRoute.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/MyOtherRoute.java
 Tue Jun 15 13:05:11 2010
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.issues.componentscan2;
+package org.apache.camel.spring.issues.contextscan2;
 
 import org.apache.camel.spring.SpringRouteBuilder;
 import org.springframework.stereotype.Component;

Modified: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.java?rev=954861&r1=954744&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.java
 Tue Jun 15 13:05:11 2010
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.spring.issues.componentscan2;
+package org.apache.camel.spring.issues.contextscan2;
 
 import org.apache.camel.spring.SpringTestSupport;
 import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -27,7 +27,7 @@ public class SpringRouteIsComponentAnnot
 
     @Override
     protected AbstractXmlApplicationContext createApplicationContext() {
-        return new 
ClassPathXmlApplicationContext("org/apache/camel/spring/issues/componentscan2/SpringRouteIsComponentAnnotated2Test.xml");
+        return new 
ClassPathXmlApplicationContext("org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.xml");
     }
 
     public void testSpringRouteIsComponentAnnotated() throws Exception {

Modified: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringPackageTest.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringPackageTest.xml?rev=954861&r1=954860&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringPackageTest.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/SpringPackageTest.xml
 Tue Jun 15 13:05:11 2010
@@ -26,7 +26,7 @@
         <packageScan>
             <package>org.apache.camel.spring.issues</package>
             <excludes>**/*MyInjectionRouteBuilder*</excludes>
-            <excludes>*componentscan*</excludes>
+            <excludes>*contextscan*</excludes>
         </packageScan>
     </camelContext>
 

Modified: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.xml?rev=954861&r1=954744&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan/SpringRouteIsComponentAnnotatedTest.xml
 Tue Jun 15 13:05:11 2010
@@ -26,11 +26,11 @@
 
     <!-- START SNIPPET: e1 -->
     <!-- enable Spring @Component scan -->
-    <context:component-scan 
base-package="org.apache.camel.spring.issues.componentscan"/>
+    <context:component-scan 
base-package="org.apache.camel.spring.issues.contextscan"/>
 
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
-        <!-- and then let Camel find the route builders as well -->
-        <package>org.apache.camel.spring.issues.componentscan</package>
+        <!-- and then let Camel use those @Component scanned route builders -->
+        <contextScan/>
     </camelContext>
     <!-- END SNIPPET: e1 -->
 

Modified: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.xml?rev=954861&r1=954744&r2=954861&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/issues/contextscan2/SpringRouteIsComponentAnnotated2Test.xml
 Tue Jun 15 13:05:11 2010
@@ -25,11 +25,14 @@
     ">
 
     <!-- enable Spring @Component scan -->
-    <context:component-scan 
base-package="org.apache.camel.spring.issues.componentscan2"/>
+    <context:component-scan 
base-package="org.apache.camel.spring.issues.contextscan2"/>
 
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
-        <!-- and then let Camel find the route builders as well -->
-        <package>org.apache.camel.spring.issues.componentscan2</package>
+        <!-- and then let Camel use those @Component scanned route builders -->
+        <contextScan>
+            <!-- and you can use includes/excludes to filter which classes to 
match -->
+            <includes>org.apache.camel.spring.issues.contextscan2.*</includes>
+        </contextScan>
     </camelContext>
 
 </beans>


Reply via email to