Author: davsclaus
Date: Fri Feb 19 14:09:58 2010
New Revision: 911816

URL: http://svn.apache.org/viewvc?rev=911816&view=rev
Log:
CAMEL-2358: package and packageScan now supports property placeholders.

Added:
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertyPlaceholderDefinition.java
   (with props)
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java
   (with props)
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java
   (with props)
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java
   (with props)
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackagePropertiesTest.xml
      - copied, changed from r911715, 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolverTest.xml
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
   (with props)
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/myprop.properties
      - copied, changed from r911715, 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/cheese.properties
Removed:
    
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertiesComponentFactoryBean.java
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.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/main/resources/org/apache/camel/spring/jaxb.index
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/SpringComponentScanTest.java
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesComponent2Test.xml
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolver2Test.xml

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=911816&r1=911815&r2=911816&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java 
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Fri 
Feb 19 14:09:58 2010
@@ -403,6 +403,15 @@
     Language resolveLanguage(String language);
 
     /**
+     * Parses the given text and resolve any property placeholders - using 
#{key}.
+     *
+     * @param text the text such as an endpoint uri or the likes
+     * @return the text with resolved property placeholders
+     * @throws Exception is thrown if property placeholders was used and there 
was an error resolving them
+     */
+    String resolvePropertyPlaceholders(String text) throws Exception;
+
+    /**
      * Gets a readonly list with the names of the languages currently 
registered.
      *
      * @return a readonly list with the names of the the languages

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=911816&r1=911815&r2=911816&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
 Fri Feb 19 14:09:58 2010
@@ -685,6 +685,26 @@
         return answer;
     }
 
+    public String resolvePropertyPlaceholders(String uri) throws Exception {
+        // do not parse uris that are designated for the properties component 
as it will handle that itself
+        if (!uri.startsWith("properties:") && uri.contains("#{")) {
+            // the uri contains property placeholders so lookup mandatory 
properties component and let it parse it
+            Component component = hasComponent("properties");
+            if (component == null) {
+                throw new IllegalArgumentException("PropertiesComponent with 
name properties must be defined"
+                        + " in CamelContext to support property placeholders 
in endpoint URIs");
+            }
+            PropertiesComponent pc = 
getTypeConverter().mandatoryConvertTo(PropertiesComponent.class, component);
+            // the parser will throw exception if property key was not found
+            String answer = pc.parseUri(uri);
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Resolved uri: " + uri + " --> " + answer);
+            }
+            return answer;
+        }
+        return uri;
+    }
+
     // Properties
     // -----------------------------------------------------------------------
 
@@ -1511,26 +1531,6 @@
         return answer;
     }
 
-    protected String resolvePropertyPlaceholders(String uri) throws Exception {
-        // do not parse uris that are designated for the properties component 
as it will handle that itself
-        if (!uri.startsWith("properties:") && uri.contains("#{")) {
-            // the uri contains property placeholders so lookup mandatory 
properties component and let it parse it
-            Component component = hasComponent("properties");
-            if (component == null) {
-                throw new IllegalArgumentException("PropertiesComponent with 
name properties must be defined"
-                        + " in CamelContext to support property placeholders 
in endpoint URIs");
-            }
-            PropertiesComponent pc = 
getTypeConverter().mandatoryConvertTo(PropertiesComponent.class, component);
-            // the parser will throw exception if property key was not found
-            String answer = pc.parseUri(uri);
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Resolved uri: " + uri + " --> " + answer);
-            }
-            return answer;
-        }
-        return uri;
-    }
-
     @Override
     public String toString() {
         return "CamelContext(" + getName() + ")";

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=911816&r1=911815&r2=911816&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
 Fri Feb 19 14:09:58 2010
@@ -19,7 +19,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
@@ -28,12 +27,15 @@
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.CamelException;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.ShutdownRoute;
 import org.apache.camel.ShutdownRunningTask;
 import org.apache.camel.builder.ErrorHandlerBuilderRef;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.component.properties.PropertiesResolver;
 import org.apache.camel.management.DefaultManagementAgent;
 import org.apache.camel.management.DefaultManagementLifecycleStrategy;
 import org.apache.camel.management.DefaultManagementStrategy;
@@ -70,6 +72,7 @@
 import org.apache.camel.spi.PackageScanClassResolver;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.ShutdownStrategy;
+import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
@@ -117,6 +120,8 @@
     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)
@@ -124,7 +129,6 @@
     @XmlElement(name = "jmxAgent", type = CamelJMXAgentDefinition.class, 
required = false)
     private CamelJMXAgentDefinition camelJMXAgent;    
     @XmlElements({
-        @XmlElement(name = "propertyPlaceholder", type = 
CamelPropertiesComponentFactoryBean.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),
@@ -213,6 +217,9 @@
             getContext().setRegistry(registry);
         }
 
+        // setup property placeholder so we got it as early as possible
+        initPropertyPlaceholder();
+
         Tracer tracer = getBeanForType(Tracer.class);
         if (tracer != null) {
             // use formatter if there is a TraceFormatter bean defined
@@ -565,6 +572,25 @@
         }
     }
 
+    private void initPropertyPlaceholder() throws Exception {
+        if (getCamelPropertyPlaceholder() != null) {
+            CamelPropertyPlaceholderDefinition def = 
getCamelPropertyPlaceholder();
+
+            PropertiesComponent pc = new PropertiesComponent();
+            pc.setLocation(def.getLocation());
+
+            // if using a custom resolver
+            if (ObjectHelper.isNotEmpty(def.getPropertiesResolverRef())) {
+                PropertiesResolver resolver = 
CamelContextHelper.mandatoryLookup(getContext(), def.getPropertiesResolverRef(),
+                                                                               
  PropertiesResolver.class);
+                pc.setPropertiesResolver(resolver);
+            }
+
+            // register the properties component
+            getContext().addComponent("properties", pc);
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private <T> T getBeanForType(Class<T> clazz) {
         T bean = null;
@@ -708,6 +734,14 @@
         this.packageScan = packageScan;
     }
 
+    public CamelPropertyPlaceholderDefinition getCamelPropertyPlaceholder() {
+        return camelPropertyPlaceholder;
+    }
+
+    public void setCamelPropertyPlaceholder(CamelPropertyPlaceholderDefinition 
camelPropertyPlaceholder) {
+        this.camelPropertyPlaceholder = camelPropertyPlaceholder;
+    }
+
     public void setBeanPostProcessor(BeanPostProcessor postProcessor) {
         this.beanPostProcessor = postProcessor;
     }
@@ -917,11 +951,18 @@
         if (packageScanDef != null && packageScanDef.getPackages().size() > 0) 
{
             // use package scan filter
             PatternBasedPackageScanFilter filter = new 
PatternBasedPackageScanFilter();
-            filter.addIncludePatterns(packageScanDef.getIncludes());
-            filter.addExcludePatterns(packageScanDef.getExcludes());
+            // support property placeholders in include and exclude
+            for (String include : packageScanDef.getIncludes()) {
+                include = getContext().resolvePropertyPlaceholders(include);
+                filter.addIncludePattern(include);
+            }
+            for (String exclude : packageScanDef.getExcludes()) {
+                exclude = getContext().resolvePropertyPlaceholders(exclude);
+                filter.addExcludePattern(exclude);
+            }
             resolver.addFilter(filter);
 
-            String[] normalized = 
normalizePackages(packageScanDef.getPackages());
+            String[] normalized = normalizePackages(getContext(), 
packageScanDef.getPackages());
             RouteBuilderFinder finder = new RouteBuilderFinder(getContext(), 
normalized, getContextClassLoaderOnStart(),
                     getBeanPostProcessor(), 
getContext().getPackageScanClassResolver());
             finder.appendBuilders(builders);
@@ -943,9 +984,11 @@
         }
     }
 
-    private String[] normalizePackages(List<String> unnormalized) {
+    private String[] normalizePackages(CamelContext context, List<String> 
unnormalized) throws Exception {
         List<String> packages = new ArrayList<String>();
         for (String name : unnormalized) {
+            // it may use property placeholders
+            name = context.resolvePropertyPlaceholders(name);
             name = ObjectHelper.normalizeClassName(name);
             if (ObjectHelper.isNotEmpty(name)) {
                 if (LOG.isTraceEnabled()) {

Added: 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertyPlaceholderDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertyPlaceholderDefinition.java?rev=911816&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertyPlaceholderDefinition.java
 (added)
+++ 
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertyPlaceholderDefinition.java
 Fri Feb 19 14:09:58 2010
@@ -0,0 +1,57 @@
+/**
+ * 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 javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.model.IdentifiedType;
+
+/**
+ * <code>PropertyPlaceholderDefinition</code> represents a 
&lt;propertyPlaceholder/&gt element.
+ *
+ * @version $Revision$
+ */
+...@xmlrootelement(name = "propertyPlaceholder")
+...@xmlaccessortype(XmlAccessType.FIELD)
+public class CamelPropertyPlaceholderDefinition extends IdentifiedType {
+
+    @XmlAttribute(required = true)
+    private String location;
+
+    @XmlAttribute
+    private String propertiesResolverRef;
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getPropertiesResolverRef() {
+        return propertiesResolverRef;
+    }
+
+    public void setPropertiesResolverRef(String propertiesResolverRef) {
+        this.propertiesResolverRef = propertiesResolverRef;
+    }
+
+}

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

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

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=911816&r1=911815&r2=911816&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
 Fri Feb 19 14:09:58 2010
@@ -26,6 +26,7 @@
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 
+import org.apache.camel.spring.CamelPropertyPlaceholderDefinition;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -41,7 +42,6 @@
 import org.apache.camel.spring.CamelEndpointFactoryBean;
 import org.apache.camel.spring.CamelJMXAgentDefinition;
 import org.apache.camel.spring.CamelProducerTemplateFactoryBean;
-import org.apache.camel.spring.CamelPropertiesComponentFactoryBean;
 import org.apache.camel.spring.remoting.CamelProxyFactoryBean;
 import org.apache.camel.spring.remoting.CamelServiceExporter;
 import org.apache.camel.util.ObjectHelper;
@@ -73,7 +73,7 @@
     public static void renameNamespaceRecursive(Node node) {
         if (node.getNodeType() == Node.ELEMENT_NODE) {
             Document doc = node.getOwnerDocument();
-            if (((Element) node).getNamespaceURI().startsWith(SPRING_NS + 
"/v")) {
+            if ((node).getNamespaceURI().startsWith(SPRING_NS + "/v")) {
                 doc.renameNode(node, SPRING_NS, node.getNodeName());
             }
         }
@@ -88,18 +88,15 @@
     }
 
     public void init() {
-        
         addBeanDefinitionParser("proxy", CamelProxyFactoryBean.class, true);
         addBeanDefinitionParser("template", 
CamelProducerTemplateFactoryBean.class, true);
         addBeanDefinitionParser("consumerTemplate", 
CamelConsumerTemplateFactoryBean.class, true);
         addBeanDefinitionParser("export", CamelServiceExporter.class, true);
-        addBeanDefinitionParser("propertyPlaceholder", 
CamelPropertiesComponentFactoryBean.class, true);
+        addBeanDefinitionParser("endpoint", CamelEndpointFactoryBean.class, 
true);
 
-        // jmx agent cannot be used outside of the camel context
+        // jmx agent and property placeholder cannot be used outside of the 
camel context
         addBeanDefinitionParser("jmxAgent", CamelJMXAgentDefinition.class, 
false);
-
-        // endpoint
-        addBeanDefinitionParser("endpoint", CamelEndpointFactoryBean.class, 
true);
+        addBeanDefinitionParser("propertyPlaceholder", 
CamelPropertyPlaceholderDefinition.class, false);
 
         // camel context
         boolean osgi = false;
@@ -109,7 +106,7 @@
             osgi = true;
         } catch (Throwable t) {
             // not running with camel-osgi so we fallback to the regular 
factory bean
-            LOG.trace("Cannot find class so assuming not running in OSGI 
container: " + t.getMessage());
+            LOG.trace("Cannot find class so assuming not running in OSGi 
container: " + t.getMessage());
         }
 
         if (osgi) {
@@ -230,6 +227,8 @@
                 if (factoryBean.getPackages().length > 0) {
                     builder.addPropertyValue("packages", 
factoryBean.getPackages());
                 }
+                builder.addPropertyValue("camelPropertyPlaceholder", 
factoryBean.getCamelPropertyPlaceholder());
+                builder.addPropertyValue("camelJMXAgent", 
factoryBean.getCamelJMXAgent());
             }
 
             boolean createdBeanPostProcessor = false;
@@ -252,13 +251,9 @@
                             String id = childElement.getAttribute("id");
                             if (ObjectHelper.isNotEmpty(id)) {
                                 parserContext.registerComponent(new 
BeanComponentDefinition(definition, id));
-                                if (localName.equals("jmxAgent")) {
-                                    
builder.addPropertyReference("camelJMXAgent", id);
-                                }
-                                // set the templates with the camel context 
+                                // set the templates with the camel context
                                 if (localName.equals("template") || 
localName.equals("consumerTemplate")
-                                    || localName.equals("proxy") || 
localName.equals("export")
-                                    || 
localName.equals("propertyPlaceholder")) {
+                                    || localName.equals("proxy") || 
localName.equals("export")) {
                                     // set the camel context
                                     
definition.getPropertyValues().addPropertyValue("camelContext", new 
RuntimeBeanReference(contextId));
                                 }   
@@ -351,7 +346,7 @@
             }
         }
 
-        // either we have not used templat before or we have auto registered 
it already and therefore we
+        // either we have not used template before or we have auto registered 
it already and therefore we
         // need it to allow to do it so it can remove the existing auto 
registered as there is now a clash id
         // since we have multiple camel contexts
         boolean canDoTemplate = autoRegisterMap.get("template") != null
@@ -368,7 +363,7 @@
             autoRegisterBeanDefinition(id, definition, parserContext, 
contextId);
         }
 
-        // either we have not used templat before or we have auto registered 
it already and therefore we
+        // either we have not used template before or we have auto registered 
it already and therefore we
         // need it to allow to do it so it can remove the existing auto 
registered as there is now a clash id
         // since we have multiple camel contexts
         boolean canDoConsumerTemplate = 
autoRegisterMap.get("consumerTemplate") != null

Modified: 
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index?rev=911816&r1=911815&r2=911816&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
 (original)
+++ 
camel/trunk/components/camel-spring/src/main/resources/org/apache/camel/spring/jaxb.index
 Fri Feb 19 14:09:58 2010
@@ -20,6 +20,6 @@
 CamelEndpointFactoryBean
 CamelJMXAgentDefinition
 CamelProducerTemplateFactoryBean
-CamelPropertiesComponentFactoryBean
+CamelPropertyPlaceholderDefinition
 CamelProxyFactoryDefinition
 CamelServiceExporterDefinition

Added: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java?rev=911816&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java
 (added)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java
 Fri Feb 19 14:09:58 2010
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.properties;
+
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * @version $Revision$
+ */
+public class SpringPackagePropertiesTest extends SpringTestSupport {
+
+    @Override
+    protected AbstractXmlApplicationContext createApplicationContext() {
+        return new 
ClassPathXmlApplicationContext("org/apache/camel/component/properties/SpringPackagePropertiesTest.xml");
+    }
+
+    public void testSpringPackageProperties() throws Exception {
+        getMockEndpoint("#{result}").expectedMessageCount(1);
+
+        template.sendBody("direct:start", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+}

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackagePropertiesTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java?rev=911816&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java
 (added)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java
 Fri Feb 19 14:09:58 2010
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.properties;
+
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * @version $Revision$
+ */
+public class SpringPackageScanPropertiesTest extends SpringTestSupport {
+
+    @Override
+    protected AbstractXmlApplicationContext createApplicationContext() {
+        return new 
ClassPathXmlApplicationContext("org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml");
+    }
+
+    public void testSpringPackageProperties() throws Exception {
+        getMockEndpoint("#{result}").expectedMessageCount(1);
+
+        template.sendBody("direct:start", "Hello World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+}
\ No newline at end of file

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java?rev=911816&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java
 (added)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java
 Fri Feb 19 14:09:58 2010
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.properties.route;
+
+import org.apache.camel.spring.SpringRouteBuilder;
+
+/**
+ * @version $Revision$
+ */
+public class SpringSimpleRoute extends SpringRouteBuilder {
+
+    @Override
+    public void configure() throws Exception {
+        from("direct:start").to("#{result}");
+    }
+
+}

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/properties/route/SpringSimpleRoute.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/SpringComponentScanTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/SpringComponentScanTest.java?rev=911816&r1=911815&r2=911816&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/SpringComponentScanTest.java
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/SpringComponentScanTest.java
 Fri Feb 19 14:09:58 2010
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.spring.config.scan;
 
 import java.util.concurrent.TimeUnit;
@@ -33,7 +32,6 @@
         ApplicationContext c = new 
ClassPathXmlApplicationContext("org/apache/camel/spring/config/scan/componentScan.xml");
         context = (CamelContext)c.getBean("camelContext");
         template = context.createProducerTemplate();
-
     }
     
     public void testExcludedRoute() throws InterruptedException {

Copied: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackagePropertiesTest.xml
 (from r911715, 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolverTest.xml)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackagePropertiesTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackagePropertiesTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolverTest.xml&r1=911715&r2=911816&rev=911816&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolverTest.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackagePropertiesTest.xml
 Fri Feb 19 14:09:58 2010
@@ -22,18 +22,10 @@
        http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <bean id="myResolver" 
class="org.apache.camel.component.properties.PropertiesResolverTest$MyCustomResolver"/>
-
-    <bean id="properties" 
class="org.apache.camel.component.properties.PropertiesComponent">
-        <property name="location" value="foo"/>
-        <property name="propertiesResolver" ref="myResolver"/>
-    </bean>
-
     <camelContext xmlns="http://camel.apache.org/schema/spring";>
-        <route>
-            <from uri="direct:start"/>
-            <to uri="properties:#{foo}"/>
-        </route>
+        <propertyPlaceholder id="properties" 
location="org/apache/camel/component/properties/myprop.properties"/>
+        <package>#{routebuilders}</package>
+        <jmxAgent id="agent"/>
     </camelContext>
 
 </beans>

Added: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml?rev=911816&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
 (added)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
 Fri Feb 19 14:09:58 2010
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring";>
+        <propertyPlaceholder id="properties" 
location="org/apache/camel/component/properties/myprop.properties"/>
+        <packageScan>
+            <package>org.apache.camel.#{routescan}</package>
+            <includes>#{routeincludes}</includes>
+        </packageScan>
+        <jmxAgent id="agent"/>
+    </camelContext>
+
+</beans>

Propchange: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPackageScanPropertiesTest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesComponent2Test.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesComponent2Test.xml?rev=911816&r1=911815&r2=911816&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesComponent2Test.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesComponent2Test.xml
 Fri Feb 19 14:09:58 2010
@@ -22,12 +22,12 @@
        http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-    <propertyPlaceholder id="properties"
-                         
location="classpath:org/apache/camel/component/properties/cheese.properties"
-                         xmlns="http://camel.apache.org/schema/spring"/>
-
     <camelContext xmlns="http://camel.apache.org/schema/spring";>
 
+        <propertyPlaceholder id="properties"
+                             
location="classpath:org/apache/camel/component/properties/cheese.properties"
+                             xmlns="http://camel.apache.org/schema/spring"/>
+
         <route>
             <from uri="direct:start"/>
             <to uri="properties:#{cool.end}"/>

Modified: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolver2Test.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolver2Test.xml?rev=911816&r1=911815&r2=911816&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolver2Test.xml
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/SpringPropertiesResolver2Test.xml
 Fri Feb 19 14:09:58 2010
@@ -24,12 +24,10 @@
 
     <bean id="myResolver" 
class="org.apache.camel.component.properties.PropertiesResolverTest$MyCustomResolver"/>
 
-    <propertyPlaceholder id="properties"
-                         location="foo"
-                         propertiesResolverRef="myResolver"
-                         xmlns="http://camel.apache.org/schema/spring"/>
-
     <camelContext xmlns="http://camel.apache.org/schema/spring";>
+        <propertyPlaceholder id="properties"
+                             location="foo"
+                             propertiesResolverRef="myResolver"/>
         <route>
             <from uri="direct:start"/>
             <to uri="properties:#{foo}"/>

Copied: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/myprop.properties
 (from r911715, 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/cheese.properties)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/myprop.properties?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/myprop.properties&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/cheese.properties&r1=911715&r2=911816&rev=911816&view=diff
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/cheese.properties
 (original)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/properties/myprop.properties
 Fri Feb 19 14:09:58 2010
@@ -15,5 +15,7 @@
 ## limitations under the License.
 ## ------------------------------------------------------------------------
 
-cool.end=mock:result
-cool.bar=bar
\ No newline at end of file
+routebuilders=org.apache.camel.component.properties.route
+routescan=component.properties.route
+routeincludes=*Simple*
+result=mock:result
\ No newline at end of file


Reply via email to