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 <package-scan/>
element.
+ * <code>ContextScanDefinition</code> represents a <contextScan/> 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 <package-scan/>
element.
+ * <code>PackageScanDefinition</code> represents a <packageScan/> 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>