You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2010/05/28 09:52:36 UTC

svn commit: r949127 [1/5] - in /camel/trunk: components/ components/camel-blueprint/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/ components/camel-blue...

Author: gnodet
Date: Fri May 28 07:52:33 2010
New Revision: 949127

URL: http://svn.apache.org/viewvc?rev=949127&view=rev
Log:
CAMEL-2702: Extract base classes for camel-spring into a new module so that they can be shared with camel-blueprint

Added:
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelThreadPoolFactoryBean.java
    camel/trunk/components/camel-core-osgi/
    camel/trunk/components/camel-core-osgi/pom.xml
    camel/trunk/components/camel-core-osgi/src/
    camel/trunk/components/camel-core-osgi/src/main/
    camel/trunk/components/camel-core-osgi/src/main/java/
    camel/trunk/components/camel-core-osgi/src/main/java/org/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/Activator.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/CompositeRegistry.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiAnnotationTypeConverterLoader.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiCamelContextHelper.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiClassResolver.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiComponentResolver.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiDefaultCamelContext.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinder.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiFactoryFinderResolver.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiLanguageResolver.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolver.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/OsgiServiceRegistry.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/tracker/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/tracker/AbstractTracked.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/tracker/BundleTracker.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/tracker/BundleTrackerCustomizer.java
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/
    camel/trunk/components/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/utils/BundleDelegatingClassLoader.java
    camel/trunk/components/camel-core-xml/
    camel/trunk/components/camel-core-xml/pom.xml
    camel/trunk/components/camel-core-xml/src/
    camel/trunk/components/camel-core-xml/src/main/
    camel/trunk/components/camel-core-xml/src/main/java/
    camel/trunk/components/camel-core-xml/src/main/java/org/
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.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/AbstractCamelEndpointFactoryBean.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelPropertyPlaceholderDefinition.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelProxyFactoryDefinition.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelServiceExporterDefinition.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/package-info.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/AntPathMatcher.java
    camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/scan/PatternBasedPackageScanFilter.java
    camel/trunk/components/camel-core-xml/src/main/resources/
    camel/trunk/components/camel-core-xml/src/main/resources/org/
    camel/trunk/components/camel-core-xml/src/main/resources/org/apache/
    camel/trunk/components/camel-core-xml/src/main/resources/org/apache/camel/
    camel/trunk/components/camel-core-xml/src/main/resources/org/apache/camel/core/
    camel/trunk/components/camel-core-xml/src/main/resources/org/apache/camel/core/xml/
    camel/trunk/components/camel-core-xml/src/main/resources/org/apache/camel/core/xml/jaxb.index
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactory.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelContextFactoryBean.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CamelNamespaceHandler.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiSpringCamelContext.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/SpringCamelContextFactory.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/ActivatorTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundle.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/CamelMockBundleContext.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/CamelOsgiTestSupport.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/OsgiAnnotationTypeConverterLoaderTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/OsgiClassResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/OsgiComponentResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/OsgiFactoryFinderTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/OsgiLanguageResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/OsgiPackageScanClassResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/core/osgi/ServiceRegistryTest.java
Removed:
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelJMXAgentDefinition.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryDefinition.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelServiceExporterDefinition.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/Activator.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/CompositeRegistry.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoader.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiCamelContextHelper.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiClassResolver.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiComponentResolver.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiDefaultCamelContext.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiFactoryFinder.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiFactoryFinderResolver.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiLanguageResolver.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiPackageScanClassResolver.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiServiceRegistry.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/package-info.java
    camel/trunk/components/camel-osgi/src/main/java/org/apache/camel/osgi/tracker/
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ActivatorTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/CamelMockBundle.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/CamelMockBundleContext.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/CamelOsgiTestSupport.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiAnnotationTypeConverterLoaderTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiClassResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiComponentResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiFactoryFinderTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiLanguageResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/OsgiPackageScanClassResolverTest.java
    camel/trunk/components/camel-osgi/src/test/java/org/apache/camel/osgi/ServiceRegistryTest.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelJMXAgentDefinition.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelPropertyPlaceholderDefinition.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProxyFactoryDefinition.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelServiceExporterDefinition.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerType.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/PatternBasedPackageScanFilter.java
Modified:
    camel/trunk/components/camel-blueprint/pom.xml
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelConsumerTemplateFactoryBean.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelEndpointFactoryBean.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProducerTemplateFactoryBean.java
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
    camel/trunk/components/camel-blueprint/src/main/resources/org/apache/camel/blueprint/jaxb.index
    camel/trunk/components/camel-osgi/pom.xml
    camel/trunk/components/camel-spring-osgi/pom.xml
    camel/trunk/components/camel-spring/pom.xml
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelConsumerTemplateFactoryBean.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/CamelEndpointFactoryBean.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProducerTemplateFactoryBean.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelThreadPoolFactoryBean.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.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/scan/PatternBasedPackageScanFilterTest.java
    camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/scan/ScanTestSupport.java
    camel/trunk/components/pom.xml
    camel/trunk/parent/pom.xml

Modified: camel/trunk/components/camel-blueprint/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/pom.xml?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/pom.xml (original)
+++ camel/trunk/components/camel-blueprint/pom.xml Fri May 28 07:52:33 2010
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-parent</artifactId>
-        <version>2.3-SNAPSHOT</version>
+        <version>2.4-SNAPSHOT</version>
     </parent>
 
     <artifactId>camel-blueprint</artifactId>
@@ -40,6 +40,10 @@
         <camel.osgi.export>
             org.apache.camel.blueprint*;${camel.osgi.version}
         </camel.osgi.export>
+		<camel.osgi.private.pkg>
+			org.apache.camel.core.osgi*,
+			org.apache.camel.core.xml*
+		</camel.osgi.private.pkg>
     </properties>
 
     <dependencies>
@@ -49,7 +53,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
-            <artifactId>camel-osgi</artifactId>
+            <artifactId>camel-core-xml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-core-osgi</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
@@ -58,8 +66,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.aries.blueprint</groupId>
-            <artifactId>aries-blueprint</artifactId>
-            <version>1.0.0-incubating-SNAPSHOT</version>
+            <artifactId>org.apache.aries.blueprint</artifactId>
+        </dependency>
+        <dependency>
+          <groupId>javax.xml.bind</groupId>
+          <artifactId>jaxb-api</artifactId>
         </dependency>
 
         <!-- for testing -->
@@ -293,6 +304,9 @@
                                           <include name="org/apache/camel/blueprint/Camel*.java"/>
                                           <include name="org/apache/camel/blueprint/package-info.java"/>
                                       </fileset>
+                                      <fileset dir="${basedir}/../camel-core-xml/src/main/java">
+                                          <include name="org/apache/camel/core/xml/*.java"/>
+                                      </fileset>
                                       <fileset dir="${basedir}/../../camel-core/src/main/java">
                                           <include name="org/apache/camel/model/**/*.java"/>
                                           <include name="org/apache/camel/ExchangePattern.java"/>

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java Fri May 28 07:52:33 2010
@@ -17,7 +17,6 @@
 package org.apache.camel.blueprint;
 
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -25,18 +24,11 @@ public class BlueprintCamelContext exten
 
     private static final transient Log LOG = LogFactory.getLog(BlueprintCamelContext.class);
 
-    private boolean shouldStartContext = ObjectHelper.getSystemProperty("shouldStartContext", Boolean.TRUE);
-
     public void init() throws Exception {
         maybeStart();
     }
 
     private void maybeStart() throws Exception {
-        if (!getShouldStartContext()) {
-            LOG.info("Not starting Apache Camel as property ShouldStartContext is false");
-            return;
-        }
-
         if (!isStarted() && !isStarting()) {
             // Make sure we will not get into the endless loop of calling star
             LOG.info("Starting Apache Camel as property ShouldStartContext is true");
@@ -51,12 +43,4 @@ public class BlueprintCamelContext exten
         stop();
     }
 
-    public void setShouldStartContext(boolean shouldStartContext) {
-        this.shouldStartContext = shouldStartContext;
-    }
-
-    public boolean getShouldStartContext() {
-        return shouldStartContext;
-    }
-
 }

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelConsumerTemplateFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelConsumerTemplateFactoryBean.java?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelConsumerTemplateFactoryBean.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelConsumerTemplateFactoryBean.java Fri May 28 07:52:33 2010
@@ -22,9 +22,8 @@ import javax.xml.bind.annotation.XmlRoot
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.impl.DefaultConsumerTemplate;
-import org.apache.camel.model.IdentifiedType;
+import org.apache.camel.core.xml.AbstractCamelConsumerTemplateFactoryBean;
+import org.osgi.service.blueprint.container.BlueprintContainer;
 
 /**
  * A factory for creating a new {@link org.apache.camel.ConsumerTemplate}
@@ -34,36 +33,21 @@ import org.apache.camel.model.Identified
  */
 @XmlRootElement(name = "consumerTemplate")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class CamelConsumerTemplateFactoryBean extends IdentifiedType implements CamelContextAware {
-    @XmlTransient
-    private CamelContext camelContext;
-
-    public void afterPropertiesSet() throws Exception {
-        if (camelContext == null) {
-            throw new IllegalArgumentException("A CamelContext must be injected!");
-        }
-    }
-
-    public Object getObject() throws Exception {
-        return new DefaultConsumerTemplate(getCamelContext());
-    }
+public class CamelConsumerTemplateFactoryBean extends AbstractCamelConsumerTemplateFactoryBean {
 
-    public Class getObjectType() {
-        return DefaultConsumerTemplate.class;
-    }
-
-    public boolean isSingleton() {
-        return false;
-    }
+    @XmlTransient
+    private BlueprintContainer blueprintContainer;
 
-    // Properties
-    // -------------------------------------------------------------------------
-    public CamelContext getCamelContext() {
-        return camelContext;
+    public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+        this.blueprintContainer = blueprintContainer;
     }
 
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
+    @Override
+    protected CamelContext getCamelContextWithId(String camelContextId) {
+        if (blueprintContainer != null) {
+            return (CamelContext) blueprintContainer.getComponentInstance(camelContextId);
+        }
+        return null;
     }
 
 }
\ No newline at end of file

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=949127&r1=949126&r2=949127&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 Fri May 28 07:52:33 2010
@@ -17,9 +17,7 @@
 package org.apache.camel.blueprint;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 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,55 +26,27 @@ import javax.xml.bind.annotation.XmlElem
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
-import org.apache.camel.CamelException;
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.ErrorHandlerBuilderRef;
+import org.apache.camel.ShutdownRoute;
+import org.apache.camel.ShutdownRunningTask;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.management.DefaultManagementAgent;
-import org.apache.camel.management.DefaultManagementLifecycleStrategy;
-import org.apache.camel.management.DefaultManagementStrategy;
-import org.apache.camel.management.ManagedManagementStrategy;
-import org.apache.camel.model.FromDefinition;
-import org.apache.camel.model.IdentifiedType;
-import org.apache.camel.model.InterceptDefinition;
-import org.apache.camel.model.InterceptFromDefinition;
-import org.apache.camel.model.InterceptSendToEndpointDefinition;
-import org.apache.camel.model.OnCompletionDefinition;
-import org.apache.camel.model.OnExceptionDefinition;
-import org.apache.camel.model.PackageScanDefinition;
-import org.apache.camel.model.PolicyDefinition;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.RouteBuilderDefinition;
-import org.apache.camel.model.RouteContainer;
-import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.TransactedDefinition;
+import org.apache.camel.model.*;
 import org.apache.camel.model.config.PropertiesDefinition;
 import org.apache.camel.model.dataformat.DataFormatsDefinition;
-import org.apache.camel.osgi.OsgiAnnotationTypeConverterLoader;
-import org.apache.camel.osgi.OsgiCamelContextHelper;
-import org.apache.camel.osgi.OsgiClassResolver;
-import org.apache.camel.osgi.OsgiComponentResolver;
-import org.apache.camel.osgi.OsgiFactoryFinderResolver;
-import org.apache.camel.osgi.OsgiLanguageResolver;
-import org.apache.camel.osgi.OsgiPackageScanClassResolver;
-import org.apache.camel.osgi.OsgiServiceRegistry;
-import org.apache.camel.processor.interceptor.Delayer;
-import org.apache.camel.processor.interceptor.HandleFault;
-import org.apache.camel.processor.interceptor.TraceFormatter;
-import org.apache.camel.processor.interceptor.Tracer;
-import org.apache.camel.spi.ClassResolver;
-import org.apache.camel.spi.EventFactory;
-import org.apache.camel.spi.EventNotifier;
-import org.apache.camel.spi.FactoryFinderResolver;
-import org.apache.camel.spi.InflightRepository;
-import org.apache.camel.spi.InterceptStrategy;
-import org.apache.camel.spi.LifecycleStrategy;
-import org.apache.camel.spi.ManagementStrategy;
-import org.apache.camel.spi.PackageScanClassResolver;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.spring.PatternBasedPackageScanFilter;
-import org.apache.camel.util.EndpointHelper;
+import org.apache.camel.core.osgi.OsgiAnnotationTypeConverterLoader;
+import org.apache.camel.core.osgi.OsgiCamelContextHelper;
+import org.apache.camel.core.osgi.OsgiClassResolver;
+import org.apache.camel.core.osgi.OsgiComponentResolver;
+import org.apache.camel.core.osgi.OsgiFactoryFinderResolver;
+import org.apache.camel.core.osgi.OsgiLanguageResolver;
+import org.apache.camel.core.osgi.OsgiPackageScanClassResolver;
+import org.apache.camel.core.osgi.OsgiServiceRegistry;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
+import org.apache.camel.core.xml.CamelJMXAgentDefinition;
+import org.apache.camel.core.xml.CamelPropertyPlaceholderDefinition;
+import org.apache.camel.core.xml.CamelProxyFactoryDefinition;
+import org.apache.camel.core.xml.CamelServiceExporterDefinition;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.osgi.framework.BundleContext;
@@ -92,23 +62,32 @@ import org.osgi.framework.FrameworkUtil;
  */
 @XmlRootElement(name = "camelContext")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class CamelContextFactoryBean extends IdentifiedType implements RouteContainer {
+public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<BlueprintCamelContext> {
+
     private static final Log LOG = LogFactory.getLog(CamelContextFactoryBean.class);
 
+    @XmlAttribute(name = "depends-on", required = false)
+    private String dependsOn;
     @XmlAttribute(required = false)
-    private Boolean trace;
+    private String trace;
     @XmlAttribute(required = false)
-    private Boolean streamCache = Boolean.FALSE;
+    private String streamCache = "false";
     @XmlAttribute(required = false)
-    private Long delayer;
+    private String delayer;
     @XmlAttribute(required = false)
-    private Boolean handleFault;
+    private String handleFault;
     @XmlAttribute(required = false)
     private String errorHandlerRef;
     @XmlAttribute(required = false)
-    private Boolean shouldStartContext = Boolean.TRUE;
+    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)
@@ -120,10 +99,18 @@ public class CamelContextFactoryBean ext
         @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 = "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<CamelThreadPoolFactoryBean> threadPools;
     @XmlElement(name = "endpoint", required = false)
     private List<CamelEndpointFactoryBean> endpoints;
     @XmlElement(name = "dataFormats", required = false)
@@ -143,470 +130,182 @@ public class CamelContextFactoryBean ext
     @XmlTransient
     private BlueprintCamelContext context;
     @XmlTransient
-    private RouteBuilder routeBuilder;
-    @XmlTransient
-    private List<RoutesBuilder> additionalBuilders = new ArrayList<RoutesBuilder>();
+    private ClassLoader contextClassLoaderOnStart;
 //    @XmlTransient
 //    private ApplicationContext applicationContext;
-    @XmlTransient
-    private ClassLoader contextClassLoaderOnStart;
 //    @XmlTransient
 //    private BeanPostProcessor beanPostProcessor;
 
-    public CamelContextFactoryBean() {
-        // Lets keep track of the class loader for when we actually do start things up
-        contextClassLoaderOnStart = Thread.currentThread().getContextClassLoader();
-    }
-
-    public Object getObject() throws Exception {
-        return getContext();
-    }
 
     public Class getObjectType() {
         return BlueprintCamelContext.class;
     }
 
-    public boolean isSingleton() {
-        return true;
-    }
-
-    public ClassLoader getContextClassLoaderOnStart() {
-        return contextClassLoaderOnStart;
-    }
-
-    public List<RoutesBuilder> getAdditionalBuilders() {
-        return additionalBuilders;
-    }
-
-    public void init() throws Exception {
-        if (properties != null) {
-            getContext().setProperties(properties.asMap());
-        }
-
-        // setup JMX agent at first
-        initJMXAgent();
-
-        // set the resolvers first
-        PackageScanClassResolver packageResolver = getBeanForType(PackageScanClassResolver.class);
-        if (packageResolver != null) {
-            LOG.info("Using custom PackageScanClassResolver: " + packageResolver);
-            getContext().setPackageScanClassResolver(packageResolver);
-        }
-        ClassResolver classResolver = getBeanForType(ClassResolver.class);
-        if (classResolver != null) {
-            LOG.info("Using custom ClassResolver: " + classResolver);
-            getContext().setClassResolver(classResolver);
-        }
-        FactoryFinderResolver factoryFinderResolver = getBeanForType(FactoryFinderResolver.class);
-        if (factoryFinderResolver != null) {
-            LOG.info("Using custom FactoryFinderResolver: " + factoryFinderResolver);
-            getContext().setFactoryFinderResolver(factoryFinderResolver);
-        }
-
-        // set the strategy if defined
-        Registry registry = getBeanForType(Registry.class);
-        if (registry != null) {
-            LOG.info("Using custom Registry: " + registry);
-            getContext().setRegistry(registry);
-        }
-
-        Tracer tracer = getBeanForType(Tracer.class);
-        if (tracer != null) {
-            // use formatter if there is a TraceFormatter bean defined
-            TraceFormatter formatter = getBeanForType(TraceFormatter.class);
-            if (formatter != null) {
-                tracer.setFormatter(formatter);
-            }
-            LOG.info("Using custom Tracer: " + tracer);
-            getContext().addInterceptStrategy(tracer);
+    @Override
+    public BlueprintCamelContext getContext(boolean create) {
+        if (context == null && create) {
+            context = createContext();
         }
+        return context;
+    }
 
-        HandleFault handleFault = getBeanForType(HandleFault.class);
-        if (handleFault != null) {
-            LOG.info("Using custom HandleFault: " + handleFault);
-            getContext().addInterceptStrategy(handleFault);
-        }
+    protected BlueprintCamelContext createContext() {
+        BlueprintCamelContext ctx = new BlueprintCamelContext();
+        ctx.setName(getId());
 
-        Delayer delayer = getBeanForType(Delayer.class);
-        if (delayer != null) {
-            LOG.info("Using custom Delayer: " + delayer);
-            getContext().addInterceptStrategy(delayer);
-        }
+        // Adding discovery to this from camel-osgi
 
-        InflightRepository inflightRepository = getBeanForType(InflightRepository.class);
-        if (delayer != null) {
-            LOG.info("Using custom InflightRepository: " + inflightRepository);
-            getContext().setInflightRepository(inflightRepository);
-        }
+        BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
 
-        ManagementStrategy managementStrategy = getBeanForType(ManagementStrategy.class);
-        if (managementStrategy != null) {
-            LOG.info("Using custom ManagementStrategy: " + managementStrategy);
-            getContext().setManagementStrategy(managementStrategy);
-        }
+        OsgiServiceRegistry registry = new OsgiServiceRegistry(bundleContext);
+        ctx.setRegistry(registry);
 
-        EventFactory eventFactory = getBeanForType(EventFactory.class);
-        if (eventFactory != null) {
-            LOG.info("Using custom EventFactory: " + eventFactory);
-            getContext().getManagementStrategy().setEventFactory(eventFactory);
-        }
+        OsgiCamelContextHelper.updateRegistry(ctx, bundleContext);
 
-        EventNotifier eventNotifier = getBeanForType(EventNotifier.class);
-        if (eventNotifier != null) {
-            LOG.info("Using custom EventNotifier: " + eventNotifier);
-            List notifiers = getContext().getManagementStrategy().getEventNotifiers();
-            notifiers.add(eventNotifier);
-            getContext().getManagementStrategy().setEventNotifiers(notifiers);
-        }
+        ctx.setClassResolver(new OsgiClassResolver(bundleContext));
+        ctx.setFactoryFinderResolver(new OsgiFactoryFinderResolver());
+        ctx.setPackageScanClassResolver(new OsgiPackageScanClassResolver(bundleContext));
+        ctx.setComponentResolver(new OsgiComponentResolver());
+        ctx.setLanguageResolver(new OsgiLanguageResolver());
 
-        // add global interceptors
-        Map<String, InterceptStrategy> interceptStrategies = getContext().getRegistry().lookupByType(InterceptStrategy.class);
-        if (interceptStrategies != null && !interceptStrategies.isEmpty()) {
-            for (String id : interceptStrategies.keySet()) {
-                InterceptStrategy strategy = interceptStrategies.get(id);
-                // do not add if already added, for instance a tracer that is also an InterceptStrategy class
-                if (!getContext().getInterceptStrategies().contains(strategy)) {
-                    LOG.info("Using custom intercept strategy with id: " + id + " and implementation: " + strategy);
-                    getContext().addInterceptStrategy(strategy);
-                }
-            }
+        OsgiAnnotationTypeConverterLoader typeConverterLoader = new OsgiAnnotationTypeConverterLoader(new OsgiPackageScanClassResolver(bundleContext));
+        try {
+            typeConverterLoader.load(ctx.getTypeConverterRegistry());
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
         }
 
-        // set the lifecycle strategy if defined
-        Map<String, LifecycleStrategy> lifecycleStrategies = getContext().getRegistry().lookupByType(LifecycleStrategy.class);
-        if (lifecycleStrategies != null && !lifecycleStrategies.isEmpty()) {
-            for (String id : lifecycleStrategies.keySet()) {
-                LifecycleStrategy strategy = lifecycleStrategies.get(id);
-                // do not add if already added, for instance a tracer that is also an InterceptStrategy class
-                if (!getContext().getLifecycleStrategies().contains(strategy)) {
-                    LOG.info("Using custom lifecycle strategy with id: " + id + " and implementation: " + strategy);
-                    getContext().addLifecycleStrategy(strategy);
-                }
-            }
-        }
+        return ctx;
+    }
 
-        // Set the application context and camelContext for the beanPostProcessor
-//        if (beanPostProcessor != null) {
-//            if (beanPostProcessor instanceof ApplicationContextAware) {
-//                ((ApplicationContextAware)beanPostProcessor).setApplicationContext(applicationContext);
-//            }
-//            if (beanPostProcessor instanceof CamelBeanPostProcessor) {
-//                ((CamelBeanPostProcessor)beanPostProcessor).setCamelContext(getContext());
-//            }
-//        }
-
-        // do special preparation for some concepts such as interceptors and policies
-        // this is needed as JAXB does not build excaclty the same model definition as Spring DSL would do
-        // using route builders. So we have here a little custom code to fix the JAXB gaps
-        for (RouteDefinition route : routes) {
-            // interceptors should be first
-            initInterceptors(route);
-            // then on completion
-            initOnCompletions(route);
-            // then polices
-            initPolicies(route);
-            // and last on exception
-            initOnExceptions(route);
-        }
+    @Override
+    protected void initCustomRegistry(BlueprintCamelContext context) {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
 
-        if (dataFormats != null) {
-            getContext().setDataFormats(dataFormats.asMap());
-        }
+    @Override
+    protected Object getBeanForType(Class clazz) {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
 
-        // lets force any lazy creation
-        getContext().addRouteDefinitions(routes);
+    @Override
+    protected void initBeanPostProcessor(BlueprintCamelContext context) {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
 
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("Found JAXB created routes: " + getRoutes());
-        }
-        findRouteBuilders();
-        installRoutes();
+    @Override
+    protected void postProcessBeforeInit(RouteBuilder builder) {
+        //To change body of implemented methods use File | Settings | File Templates.
     }
 
-    private void initOnExceptions(RouteDefinition route) {
-        List<ProcessorDefinition<?>> outputs = new ArrayList<ProcessorDefinition<?>>();
-        List<ProcessorDefinition<?>> exceptionHandlers = new ArrayList<ProcessorDefinition<?>>();
-
-        // add global on exceptions if any
-        if (onExceptions != null && !onExceptions.isEmpty()) {
-            // on exceptions must be added at top, so the route flow is correct as
-            // on exceptions should be the first outputs
-            route.getOutputs().addAll(0, onExceptions);
-        }
+    @Override
+    protected void findRouteBuilders(String[] normalized, List<RoutesBuilder> builders) throws Exception {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
 
-        for (ProcessorDefinition output : route.getOutputs()) {
-            // split into on exception and regular outputs
-            if (output instanceof OnExceptionDefinition) {
-                exceptionHandlers.add(output);
-            } else {
-                outputs.add(output);
-            }
-        }
+    public String getDependsOn() {
+        return dependsOn;
+    }
 
-        // clearing the outputs
-        route.clearOutput();
+    public void setDependsOn(String dependsOn) {
+        this.dependsOn = dependsOn;
+    }
 
-        // add exception handlers as top children
-        route.getOutputs().addAll(exceptionHandlers);
+    public String getAutoStartup() {
+        return autoStartup;
+    }
 
-        // and the remaining outputs
-        route.getOutputs().addAll(outputs);
+    public void setAutoStartup(String autoStartup) {
+        this.autoStartup = autoStartup;
     }
 
-    private void initInterceptors(RouteDefinition route) {
+    public ShutdownRoute getShutdownRoute() {
+        return shutdownRoute;
+    }
 
-        // configure intercept
-        for (InterceptDefinition intercept : getIntercepts()) {
-            intercept.afterPropertiesSet();
-            // add as first output so intercept is handled before the actual route and that gives
-            // us the needed head start to init and be able to intercept all the remaining processing steps
-            route.getOutputs().add(0, intercept);
-        }
+    public void setShutdownRoute(ShutdownRoute shutdownRoute) {
+        this.shutdownRoute = shutdownRoute;
+    }
 
-        // configure intercept from
-        for (InterceptFromDefinition intercept : getInterceptFroms()) {
+    public ShutdownRunningTask getShutdownRunningTask() {
+        return shutdownRunningTask;
+    }
 
-            // should we only apply interceptor for a given endpoint uri
-            boolean match = true;
-            if (intercept.getUri() != null) {
-                match = false;
-                for (FromDefinition input : route.getInputs()) {
-                    if (EndpointHelper.matchEndpoint(input.getUri(), intercept.getUri())) {
-                        match = true;
-                        break;
-                    }
-                }
-            }
-
-            if (match) {
-                intercept.afterPropertiesSet();
-                // add as first output so intercept is handled before the acutal route and that gives
-                // us the needed head start to init and be able to intercept all the remaining processing steps
-                route.getOutputs().add(0, intercept);
-            }
-        }
+    public void setShutdownRunningTask(ShutdownRunningTask shutdownRunningTask) {
+        this.shutdownRunningTask = shutdownRunningTask;
+    }
 
-        // configure intercept send to endpoint
-        for (InterceptSendToEndpointDefinition intercept : getInterceptSendToEndpoints()) {
-            intercept.afterPropertiesSet();
-            // add as first output so intercept is handled before the acutal route and that gives
-            // us the needed head start to init and be able to intercept all the remaining processing steps
-            route.getOutputs().add(0, intercept);
-        }
+    public CamelPropertyPlaceholderDefinition getCamelPropertyPlaceholder() {
+        return camelPropertyPlaceholder;
+    }
 
+    public void setCamelPropertyPlaceholder(CamelPropertyPlaceholderDefinition camelPropertyPlaceholder) {
+        this.camelPropertyPlaceholder = camelPropertyPlaceholder;
     }
 
-    private void initOnCompletions(RouteDefinition route) {
-        // only add global onCompletion if there are no route alredy
-        boolean hasRouteScope = false;
-        for (ProcessorDefinition out : route.getOutputs()) {
-            if (out instanceof OnCompletionDefinition) {
-                hasRouteScope = true;
-                break;
-            }
-        }
-        // only add global onCompletion if we do *not* have any route onCompletion defined in the route
-        // add onCompletion *after* intercept, as its important intercept is first
-        if (!hasRouteScope) {
-            int index = 0;
-            for (int i = 0; i < route.getOutputs().size(); i++) {
-                index = i;
-                ProcessorDefinition out = route.getOutputs().get(i);
-                if (out instanceof InterceptDefinition || out instanceof InterceptSendToEndpointDefinition) {
-                    continue;
-                } else {
-                    // we found the spot
-                    break;
-                }
-            }
-            route.getOutputs().addAll(index, getOnCompletions());
-        }
+    public List<RouteContextRefDefinition> getRouteRefs() {
+        return routeRefs;
     }
 
-    private void initPolicies(RouteDefinition route) {
-        // setup the policies as JAXB yet again have not created a correct model for us
-        List<ProcessorDefinition> types = route.getOutputs();
-
-        // we need two types as transacted cannot extend policy due JAXB limitations
-        PolicyDefinition policy = null;
-        TransactedDefinition transacted = null;
-
-        // add to correct type
-        for (ProcessorDefinition type : types) {
-            if (type instanceof PolicyDefinition) {
-                policy = (PolicyDefinition) type;
-            } else if (type instanceof TransactedDefinition) {
-                transacted = (TransactedDefinition) type;
-            } else if (policy != null) {
-                // the outputs should be moved to the policy
-                policy.addOutput(type);
-            } else if (transacted != null) {
-                // the outputs should be moved to the transacted policy
-                transacted.addOutput(type);
-            }
-        }
+    public void setRouteRefs(List<RouteContextRefDefinition> routeRefs) {
+        this.routeRefs = routeRefs;
+    }
 
-        // did we find a policy if so replace it as the only output on the route
-        if (policy != null) {
-            route.clearOutput();
-            route.addOutput(policy);
-        } else if (transacted != null) {
-            route.clearOutput();
-            route.addOutput(transacted);
-        }
+    public List<ThreadPoolProfileDefinition> getThreadPoolProfiles() {
+        return threadPoolProfiles;
     }
 
-    private void initJMXAgent() throws Exception {
-        if (camelJMXAgent != null && camelJMXAgent.isDisabled()) {
-            LOG.info("JMXAgent disabled");
-            // clear the existing lifecycle strategies define by the DefaultCamelContext constructor
-            getContext().getLifecycleStrategies().clear();
-            // no need to add a lifecycle strategy as we do not need one as JMX is disabled
-            getContext().setManagementStrategy(new DefaultManagementStrategy());
-        } else if (camelJMXAgent != null) {
-            LOG.info("JMXAgent enabled: " + camelJMXAgent);
-            DefaultManagementAgent agent = new DefaultManagementAgent();
-            agent.setConnectorPort(camelJMXAgent.getConnectorPort());
-            agent.setCreateConnector(camelJMXAgent.isCreateConnector());
-            agent.setMBeanObjectDomainName(camelJMXAgent.getMbeanObjectDomainName());
-            agent.setMBeanServerDefaultDomain(camelJMXAgent.getMbeanServerDefaultDomain());
-            agent.setRegistryPort(camelJMXAgent.getRegistryPort());
-            agent.setServiceUrlPath(camelJMXAgent.getServiceUrlPath());
-            agent.setUsePlatformMBeanServer(camelJMXAgent.isUsePlatformMBeanServer());
-            agent.setOnlyRegisterProcessorWithCustomId(camelJMXAgent.getOnlyRegisterProcessorWithCustomId());
-
-            ManagementStrategy managementStrategy = new ManagedManagementStrategy(agent);
-            getContext().setManagementStrategy(managementStrategy);
-
-            // clear the existing lifecycle strategies define by the DefaultCamelContext constructor
-            getContext().getLifecycleStrategies().clear();
-            getContext().addLifecycleStrategy(new DefaultManagementLifecycleStrategy(getContext()));
-            // set additional configuration from camelJMXAgent
-            getContext().getManagementStrategy().onlyManageProcessorWithCustomId(camelJMXAgent.getOnlyRegisterProcessorWithCustomId());
-            getContext().getManagementStrategy().setStatisticsLevel(camelJMXAgent.getStatisticsLevel());
-        }
+    public void setThreadPoolProfiles(List<ThreadPoolProfileDefinition> threadPoolProfiles) {
+        this.threadPoolProfiles = threadPoolProfiles;
     }
 
-    @SuppressWarnings("unchecked")
-    private <T> T getBeanForType(Class<T> clazz) {
-        T bean = null;
-//        String[] names = getApplicationContext().getBeanNamesForType(clazz, true, true);
-//        if (names.length == 1) {
-//            bean = (T) getApplicationContext().getBean(names[0], clazz);
-//        }
-//        if (bean == null) {
-//            ApplicationContext parentContext = getApplicationContext().getParent();
-//            if (parentContext != null) {
-//                names = parentContext.getBeanNamesForType(clazz, true, true);
-//                if (names.length == 1) {
-//                    bean = (T) parentContext.getBean(names[0], clazz);
-//                }
-//            }
-//        }
-        return bean;
-    }
-
-    public void destroy() throws Exception {
-        getContext().stop();
-    }
-
-//    public void onApplicationEvent(ApplicationEvent event) {
-//        if (context != null) {
-//            // let the spring camel context handle the events
-//            context.onApplicationEvent(event);
-//        } else {
-//            if (LOG.isDebugEnabled()) {
-//                LOG.debug("Publishing spring-event: " + event);
-//            }
-//
-//            if (event instanceof ContextRefreshedEvent) {
-//                // now lets start the CamelContext so that all its possible
-//                // dependencies are initialized
-//                try {
-//                    LOG.debug("Starting the context now!");
-//                    getContext().start();
-//                } catch (Exception e) {
-//                    throw wrapRuntimeCamelException(e);
-//                }
-//            }
-//        }
-//    }
-
-    // Properties
-    // -------------------------------------------------------------------------
-    public BlueprintCamelContext getContext() throws Exception {
-        if (context == null) {
-            context = createContext();
-        }
-        return context;
+    public List<CamelThreadPoolFactoryBean> getThreadPools() {
+        return threadPools;
     }
 
-    public void setContext(BlueprintCamelContext context) {
-        this.context = context;
+    public void setThreadPools(List<CamelThreadPoolFactoryBean> threadPools) {
+        this.threadPools = threadPools;
     }
 
-    public List<RouteDefinition> getRoutes() {
-        return routes;
+    public String getTrace() {
+        return trace;
     }
 
-    public void setRoutes(List<RouteDefinition> routes) {
-        this.routes = routes;
+    public void setTrace(String trace) {
+        this.trace = trace;
     }
 
-    public List<InterceptDefinition> getIntercepts() {
-        return intercepts;
+    public String getStreamCache() {
+        return streamCache;
     }
 
-    public void setIntercepts(List<InterceptDefinition> intercepts) {
-        this.intercepts = intercepts;
+    public void setStreamCache(String streamCache) {
+        this.streamCache = streamCache;
     }
 
-    public List<InterceptFromDefinition> getInterceptFroms() {
-        return interceptFroms;
+    public String getDelayer() {
+        return delayer;
     }
 
-    public void setInterceptFroms(List<InterceptFromDefinition> interceptFroms) {
-        this.interceptFroms = interceptFroms;
+    public void setDelayer(String delayer) {
+        this.delayer = delayer;
     }
 
-    public List<InterceptSendToEndpointDefinition> getInterceptSendToEndpoints() {
-        return interceptSendToEndpoints;
+    public String getHandleFault() {
+        return handleFault;
     }
 
-    public void setInterceptSendToEndpoints(List<InterceptSendToEndpointDefinition> interceptSendToEndpoints) {
-        this.interceptSendToEndpoints = interceptSendToEndpoints;
+    public void setHandleFault(String handleFault) {
+        this.handleFault = handleFault;
     }
 
-    public RouteBuilder getRouteBuilder() {
-        return routeBuilder;
+    public String getErrorHandlerRef() {
+        return errorHandlerRef;
     }
 
-    /**
-     * Set a single {@link RouteBuilder} to be used to create the default routes
-     * on startup
-     */
-    public void setRouteBuilder(RouteBuilder routeBuilder) {
-        this.routeBuilder = routeBuilder;
-    }
-
-    /**
-     * Set a collection of {@link RouteBuilder} instances to be used to create
-     * the default routes on startup
-     */
-    public void setRouteBuilders(RouteBuilder[] builders) {
-        additionalBuilders.addAll(Arrays.asList(builders));
-    }
-
-//    public ApplicationContext getApplicationContext() {
-//        if (applicationContext == null) {
-//            throw new IllegalArgumentException("No applicationContext has been injected!");
-//        }
-//        return applicationContext;
-//    }
-//
-//    public void setApplicationContext(ApplicationContext applicationContext) {
-//        this.applicationContext = applicationContext;
-//    }
+    public void setErrorHandlerRef(String errorHandlerRef) {
+        this.errorHandlerRef = errorHandlerRef;
+    }
 
     public PropertiesDefinition getProperties() {
         return properties;
@@ -616,24 +315,10 @@ public class CamelContextFactoryBean ext
         this.properties = properties;
     }
 
-    /**
-     * @deprecated replaced by {@link #getPackageScan()}
-     */
-    @Deprecated
     public String[] getPackages() {
         return packages;
     }
 
-    /**
-     * Sets the package names to be recursively searched for Java classes which
-     * extend {@link RouteBuilder} to be auto-wired up to the
-     * {@link BlueprintCamelContext} as a route. Note that classes are excluded if
-     * they are specifically configured in the spring.xml
-     *
-     * @deprecated replaced by {@link #setPackageScan(org.apache.camel.model.PackageScanDefinition)}
-     * @param packages the package names which are recursively searched
-     */
-    @Deprecated
     public void setPackages(String[] packages) {
         this.packages = packages;
     }
@@ -642,63 +327,24 @@ public class CamelContextFactoryBean ext
         return packageScan;
     }
 
-    /**
-     * Sets the package scanning information. Package scanning allows for the
-     * automatic discovery of certain camel classes at runtime for inclusion
-     * e.g. {@link RouteBuilder} implementations
-     *
-     * @param packageScan the package scan
-     */
     public void setPackageScan(PackageScanDefinition packageScan) {
         this.packageScan = packageScan;
     }
 
-//    public void setBeanPostProcessor(BeanPostProcessor postProcessor) {
-//        this.beanPostProcessor = postProcessor;
-//    }
-//
-//    public BeanPostProcessor getBeanPostProcessor() {
-//        return beanPostProcessor;
-//    }
-
-    public void setCamelJMXAgent(CamelJMXAgentDefinition agent) {
-        camelJMXAgent = agent;
-    }
-
-    public Boolean getTrace() {
-        return trace;
-    }
-
-    public void setTrace(Boolean trace) {
-        this.trace = trace;
-    }
-
-    public Boolean getStreamCache() {
-        return streamCache;
-    }
-
-    public void setStreamCache(Boolean streamCache) {
-        this.streamCache = streamCache;
-    }
-
-    public Long getDelayer() {
-        return delayer;
-    }
-
-    public void setDelayer(Long delayer) {
-        this.delayer = delayer;
+    public CamelJMXAgentDefinition getCamelJMXAgent() {
+        return camelJMXAgent;
     }
 
-    public Boolean getHandleFault() {
-        return handleFault;
+    public void setCamelJMXAgent(CamelJMXAgentDefinition camelJMXAgent) {
+        this.camelJMXAgent = camelJMXAgent;
     }
 
-    public void setHandleFault(Boolean handleFault) {
-        this.handleFault = handleFault;
+    public List getBeans() {
+        return beans;
     }
 
-    public CamelJMXAgentDefinition getCamelJMXAgent() {
-        return camelJMXAgent;
+    public void setBeans(List beans) {
+        this.beans = beans;
     }
 
     public List<RouteBuilderDefinition> getBuilderRefs() {
@@ -709,43 +355,30 @@ public class CamelContextFactoryBean ext
         this.builderRefs = builderRefs;
     }
 
-    public String getErrorHandlerRef() {
-        return errorHandlerRef;
-    }
-
-    /**
-     * Sets the name of the error handler object used to default the error handling strategy
-     *
-     * @param errorHandlerRef the Spring bean ref of the error handler
-     */
-    public void setErrorHandlerRef(String errorHandlerRef) {
-        this.errorHandlerRef = errorHandlerRef;
+    public List<CamelEndpointFactoryBean> getEndpoints() {
+        return endpoints;
     }
 
-    public Boolean getShouldStartContext() {
-        return shouldStartContext;
+    public void setEndpoints(List<CamelEndpointFactoryBean> endpoints) {
+        this.endpoints = endpoints;
     }
 
-    public void setShouldStartContext(Boolean shouldStartContext) {
-        this.shouldStartContext = shouldStartContext;
+    public DataFormatsDefinition getDataFormats() {
+        return dataFormats;
     }
 
     public void setDataFormats(DataFormatsDefinition dataFormats) {
         this.dataFormats = dataFormats;
     }
 
-    public DataFormatsDefinition getDataFormats() {
-        return dataFormats;
+    public List<OnExceptionDefinition> getOnExceptions() {
+        return onExceptions;
     }
 
     public void setOnExceptions(List<OnExceptionDefinition> onExceptions) {
         this.onExceptions = onExceptions;
     }
 
-    public List<OnExceptionDefinition> getOnExceptions() {
-        return onExceptions;
-    }
-
     public List<OnCompletionDefinition> getOnCompletions() {
         return onCompletions;
     }
@@ -754,157 +387,40 @@ public class CamelContextFactoryBean ext
         this.onCompletions = onCompletions;
     }
 
-    // Implementation methods
-    // -------------------------------------------------------------------------
-
-    /**
-     * Create the context
-     */
-    protected BlueprintCamelContext createContext() {
-        BlueprintCamelContext ctx = new BlueprintCamelContext();
-//        BlueprintCamelContext ctx = new BlueprintCamelContext(getApplicationContext());
-        ctx.setName(getId());
-        if (streamCache != null) {
-            ctx.setStreamCaching(streamCache);
-        }
-        if (trace != null) {
-            ctx.setTracing(trace);
-        }
-        if (delayer != null) {
-            ctx.setDelayer(delayer);
-        }
-        if (handleFault != null) {
-            ctx.setHandleFault(handleFault);
-        }
-        if (errorHandlerRef != null) {
-            ctx.setErrorHandlerBuilder(new ErrorHandlerBuilderRef(errorHandlerRef));
-        }
-
-        if (shouldStartContext != null) {
-            ctx.setShouldStartContext(shouldStartContext);
-        }
-
-        // Adding discovery to this from camel-osgi
-
-        BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
-
-        OsgiServiceRegistry registry = new OsgiServiceRegistry(bundleContext);
-        ctx.setRegistry(registry);
-
-        OsgiCamelContextHelper.updateRegistry(ctx, bundleContext);
-
-        ctx.setClassResolver(new OsgiClassResolver(bundleContext));
-        ctx.setFactoryFinderResolver(new OsgiFactoryFinderResolver());
-        ctx.setPackageScanClassResolver(new OsgiPackageScanClassResolver(bundleContext));
-        ctx.setComponentResolver(new OsgiComponentResolver());
-        ctx.setLanguageResolver(new OsgiLanguageResolver());
-
-        OsgiAnnotationTypeConverterLoader typeConverterLoader = new OsgiAnnotationTypeConverterLoader(new OsgiPackageScanClassResolver(bundleContext));
-        try {
-            typeConverterLoader.load(ctx.getTypeConverterRegistry());
-        } catch (Exception e) {
-            throw ObjectHelper.wrapRuntimeCamelException(e);
-        }
-
-        return ctx;
+    public List<InterceptDefinition> getIntercepts() {
+        return intercepts;
     }
 
-    /**
-     * Strategy to install all available routes into the context
-     */
-    @SuppressWarnings("unchecked")
-    protected void installRoutes() throws Exception {
-        List<RouteBuilder> builders = new ArrayList<RouteBuilder>();
-
-        if (routeBuilder != null) {
-            builders.add(routeBuilder);
-        }
-
-        // lets add route builders added from references
-        if (builderRefs != null) {
-            for (RouteBuilderDefinition builderRef : builderRefs) {
-                RouteBuilder builder = builderRef.createRouteBuilder(getContext());
-                if (builder != null) {
-                    builders.add(builder);
-                } else {
-                    // support to get the route here
-                    RoutesBuilder routes = builderRef.createRoutes(getContext());
-                    if (routes != null) {
-                        additionalBuilders.add(routes);
-                    } else {
-                        // Throw the exception that we can't find any build here
-                        throw new CamelException("Cannot find any routes with this RouteBuilder reference: " + builderRef);
-                    }
-                }
+    public void setIntercepts(List<InterceptDefinition> intercepts) {
+        this.intercepts = intercepts;
+    }
 
-            }
-        }
+    public List<InterceptFromDefinition> getInterceptFroms() {
+        return interceptFroms;
+    }
 
-        // install already configured routes
-        for (RoutesBuilder routeBuilder : additionalBuilders) {
-            getContext().addRoutes(routeBuilder);
-        }
+    public void setInterceptFroms(List<InterceptFromDefinition> interceptFroms) {
+        this.interceptFroms = interceptFroms;
+    }
 
-        // install builders
-        for (RouteBuilder builder : builders) {
-//            if (beanPostProcessor != null) {
-                // Inject the annotated resource
-//                beanPostProcessor.postProcessBeforeInitialization(builder, builder.toString());
-//            }
-            getContext().addRoutes(builder);
-        }
+    public List<InterceptSendToEndpointDefinition> getInterceptSendToEndpoints() {
+        return interceptSendToEndpoints;
     }
 
-    /**
-     * Strategy method to try find {@link RouteBuilder} instances on the classpath
-     */
-    protected void findRouteBuilders() throws Exception {
-        PackageScanClassResolver resolver = getContext().getPackageScanClassResolver();
-        addPackageElementContentsToScanDefinition();
-
-        PackageScanDefinition packageScanDef = getPackageScan();
-        if (packageScanDef != null && packageScanDef.getPackages().size() > 0) {
-            // use package scan filter
-            PatternBasedPackageScanFilter filter = new PatternBasedPackageScanFilter();
-            filter.addIncludePatterns(packageScanDef.getIncludes());
-            filter.addExcludePatterns(packageScanDef.getExcludes());
-            resolver.addFilter(filter);
-
-            String[] normalized = normalizePackages(packageScanDef.getPackages());
-//            RouteBuilderFinder finder = new RouteBuilderFinder(getContext(), normalized, getContextClassLoaderOnStart(),
-//                    getBeanPostProcessor(), getContext().getPackageScanClassResolver());
-//            finder.appendBuilders(getAdditionalBuilders());
-        }
+    public void setInterceptSendToEndpoints(List<InterceptSendToEndpointDefinition> interceptSendToEndpoints) {
+        this.interceptSendToEndpoints = interceptSendToEndpoints;
     }
 
-    private void addPackageElementContentsToScanDefinition() {
-        PackageScanDefinition packageScanDef = getPackageScan();
+    public List<RouteDefinition> getRoutes() {
+        return routes;
+    }
 
-        if (getPackages() != null && getPackages().length > 0) {
-            LOG.warn("Using a packages element to specify packages to search has been deprecated. Please use a packageScan element instead.");
-            if (packageScanDef == null) {
-                packageScanDef = new PackageScanDefinition();
-                setPackageScan(packageScanDef);
-            }
-
-            for (String pkg : getPackages()) {
-                packageScanDef.getPackages().add(pkg);
-            }
-        }
+    public void setRoutes(List<RouteDefinition> routes) {
+        this.routes = routes;
     }
 
-    private String[] normalizePackages(List<String> unnormalized) {
-        List<String> packages = new ArrayList<String>();
-        for (String name : unnormalized) {
-            name = ObjectHelper.normalizeClassName(name);
-            if (ObjectHelper.isNotEmpty(name)) {
-                if (LOG.isTraceEnabled()) {
-                    LOG.trace("Using package: " + name + " to scan for RouteBuilder classes");
-                }
-                packages.add(name);
-            }
-        }
-        return packages.toArray(new String[packages.size()]);
+    public ClassLoader getContextClassLoaderOnStart() {
+        return contextClassLoaderOnStart;
     }
 
 }

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelEndpointFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelEndpointFactoryBean.java?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelEndpointFactoryBean.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelEndpointFactoryBean.java Fri May 28 07:52:33 2010
@@ -19,16 +19,13 @@ package org.apache.camel.blueprint;
 
 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 javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
-import org.apache.camel.NoSuchEndpointException;
-import org.apache.camel.model.IdentifiedType;
-import static org.apache.camel.util.ObjectHelper.notNull;
+import org.apache.camel.core.xml.AbstractCamelEndpointFactoryBean;
+import org.osgi.service.blueprint.container.BlueprintContainer;
 
 /**
  * A factory which instantiates {@link Endpoint} objects
@@ -37,76 +34,20 @@ import static org.apache.camel.util.Obje
  */
 @XmlRootElement(name = "endpoint")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class CamelEndpointFactoryBean extends IdentifiedType implements CamelContextAware {
-    @XmlAttribute
-    private String uri;
-    @XmlTransient
-    private CamelContext context;
-    @XmlTransient
-    private Endpoint endpoint;
-    @XmlTransient
-    private boolean singleton;
-
-    public Object getObject() throws Exception {
-        if (endpoint == null) {
-            endpoint = createEndpoint();
-        }
-        return endpoint;
-    }
-
-    public Class getObjectType() {
-        return Endpoint.class;
-    }
-
-    public boolean isSingleton() {
-        return singleton;
-    }
-
-    public CamelContext getCamelContext() {
-        return context;
-    }
-
-    /**
-     * Sets the context to use to resolve endpoints
-     *
-     * @param context the context used to resolve endpoints
-     */
-    public void setCamelContext(CamelContext context) {
-        this.context = context;
-    }
+public class CamelEndpointFactoryBean extends AbstractCamelEndpointFactoryBean {
 
-    public Endpoint getEndpoint() {
-        return endpoint;
-    }
-
-    public void setEndpoint(Endpoint endpoint) {
-        this.endpoint = endpoint;
-    }
-
-    public void setSingleton(boolean singleton) {
-        this.singleton = singleton;
-    }
-
-    public String getUri() {
-        return uri;
-    }
+    @XmlTransient
+    private BlueprintContainer blueprintContainer;
 
-    /**
-     * Sets the URI to use to resolve the endpoint
-     *
-     * @param uri the URI used to set the endpoint
-     */
-    public void setUri(String uri) {
-        this.uri = uri;
+    public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+        this.blueprintContainer = blueprintContainer;
     }
 
-    protected Endpoint createEndpoint() {
-        notNull(context, "context");
-        notNull(uri, "uri");
-        Endpoint endpoint = context.getEndpoint(uri);
-        if (endpoint == null) {
-            throw new NoSuchEndpointException(uri);
+    @Override
+    protected CamelContext getCamelContextWithId(String camelContextId) {
+        if (blueprintContainer != null) {
+            return (CamelContext) blueprintContainer.getComponentInstance(camelContextId);
         }
-        return endpoint;
+        return null;
     }
 }

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProducerTemplateFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProducerTemplateFactoryBean.java?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProducerTemplateFactoryBean.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProducerTemplateFactoryBean.java Fri May 28 07:52:33 2010
@@ -18,15 +18,12 @@ package org.apache.camel.blueprint;
 
 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 javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultProducerTemplate;
-import org.apache.camel.model.IdentifiedType;
+import org.apache.camel.core.xml.AbstractCamelProducerTemplateFactoryBean;
+import org.osgi.service.blueprint.container.BlueprintContainer;
 
 /**
  * A factory for creating a new {@link org.apache.camel.ProducerTemplate}
@@ -36,58 +33,21 @@ import org.apache.camel.model.Identified
  */
 @XmlRootElement(name = "template")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class CamelProducerTemplateFactoryBean extends IdentifiedType implements CamelContextAware {
-    @XmlAttribute(required = false)
-    private String defaultEndpoint;
+public class CamelProducerTemplateFactoryBean extends AbstractCamelProducerTemplateFactoryBean {
+
     @XmlTransient
-    private CamelContext camelContext;
+    private BlueprintContainer blueprintContainer;
 
-    public void afterPropertiesSet() throws Exception {
-        if (camelContext == null) {
-            throw new IllegalArgumentException("A CamelContext must be injected!");
-        }
+    public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+        this.blueprintContainer = blueprintContainer;
     }
 
-    public Object getObject() throws Exception {
-        CamelContext context = getCamelContext();
-        if (defaultEndpoint != null) {
-            Endpoint endpoint = context.getEndpoint(defaultEndpoint);
-            if (endpoint == null) {
-                throw new IllegalArgumentException("No endpoint found for URI: " + defaultEndpoint);
-            } else {
-                return new DefaultProducerTemplate(context, endpoint);
-            }
+    @Override
+    protected CamelContext getCamelContextWithId(String camelContextId) {
+        if (blueprintContainer != null) {
+            return (CamelContext) blueprintContainer.getComponentInstance(camelContextId);
         }
-        return new DefaultProducerTemplate(context);
-    }
-
-    public Class getObjectType() {
-        return DefaultProducerTemplate.class;
+        return null;
     }
 
-    public boolean isSingleton() {
-        return false;
-    }
-
-    // Properties
-    // -------------------------------------------------------------------------
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    public String getDefaultEndpoint() {
-        return defaultEndpoint;
-    }
-
-    /**
-     * Sets the default endpoint URI used by default for sending message
-     * exchanges
-     */
-    public void setDefaultEndpoint(String defaultEndpoint) {
-        this.defaultEndpoint = defaultEndpoint;
-    }
 }

Added: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelThreadPoolFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelThreadPoolFactoryBean.java?rev=949127&view=auto
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelThreadPoolFactoryBean.java (added)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelThreadPoolFactoryBean.java Fri May 28 07:52:33 2010
@@ -0,0 +1,52 @@
+/**
+ * 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.blueprint;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.core.xml.AbstractCamelThreadPoolFactoryBean;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+
+/**
+ * A factory which instantiates {@link java.util.concurrent.ExecutorService} objects
+ *
+ * @version $Revision: 925208 $
+ */
+@XmlRootElement(name = "threadPool")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CamelThreadPoolFactoryBean extends AbstractCamelThreadPoolFactoryBean {
+
+    @XmlTransient
+    private BlueprintContainer blueprintContainer;
+
+    public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
+        this.blueprintContainer = blueprintContainer;
+    }
+
+    @Override
+    protected CamelContext getCamelContextWithId(String camelContextId) {
+        if (blueprintContainer != null) {
+            return (CamelContext) blueprintContainer.getComponentInstance(camelContextId);
+        }
+        return null;
+    }
+
+}
\ No newline at end of file

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Fri May 28 07:52:33 2010
@@ -21,16 +21,10 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.Callable;
-
 import javax.xml.bind.Binder;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
 import org.apache.aries.blueprint.NamespaceHandler;
 import org.apache.aries.blueprint.ParserContext;
 import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
@@ -38,9 +32,14 @@ import org.apache.aries.blueprint.mutabl
 import org.apache.camel.blueprint.BlueprintCamelContext;
 import org.apache.camel.blueprint.CamelContextFactoryBean;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
 import org.osgi.service.blueprint.container.ComponentDefinitionException;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Metadata;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class CamelNamespaceHandler implements NamespaceHandler {
 
@@ -152,6 +151,7 @@ public class CamelNamespaceHandler imple
     protected Set<Class> getJaxbPackages() {
         Set<Class> classes = new HashSet<Class>();
         classes.add(CamelContextFactoryBean.class);
+        classes.add(AbstractCamelContextFactoryBean.class);
         classes.add(org.apache.camel.ExchangePattern.class);
         classes.add(org.apache.camel.model.RouteDefinition.class);
         classes.add(org.apache.camel.model.config.StreamResequencerConfig.class);

Modified: camel/trunk/components/camel-blueprint/src/main/resources/org/apache/camel/blueprint/jaxb.index
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/resources/org/apache/camel/blueprint/jaxb.index?rev=949127&r1=949126&r2=949127&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/resources/org/apache/camel/blueprint/jaxb.index (original)
+++ camel/trunk/components/camel-blueprint/src/main/resources/org/apache/camel/blueprint/jaxb.index Fri May 28 07:52:33 2010
@@ -14,11 +14,8 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## ------------------------------------------------------------------------
-#CamelBeanPostProcessor
 CamelConsumerTemplateFactoryBean
 CamelContextFactoryBean
 CamelEndpointFactoryBean
-CamelJMXAgentDefinition
 CamelProducerTemplateFactoryBean
-CamelProxyFactoryDefinition
-CamelServiceExporterDefinition
+CamelThreadPoolFactoryBean

Added: camel/trunk/components/camel-core-osgi/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-osgi/pom.xml?rev=949127&view=auto
==============================================================================
--- camel/trunk/components/camel-core-osgi/pom.xml (added)
+++ camel/trunk/components/camel-core-osgi/pom.xml Fri May 28 07:52:33 2010
@@ -0,0 +1,66 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-parent</artifactId>
+    <version>2.4-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>camel-core-osgi</artifactId>
+  <name>Camel :: Core OSGi</name>
+  <description>Camel Core OSGi support</description>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <childDelegation>false</childDelegation>
+          <useFile>true</useFile>
+          <forkMode>pertest</forkMode>
+          <includes>
+             <include>**/*Test.java</include>
+          </includes>
+          <excludes>            
+            <!-- TODO FIXME ASAP -->
+            <exclude>**/XXXTest.*</exclude>            
+          </excludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>