CAMEL-18094: camel-cxf-blueprint - Must inject CamelContext via depends-on
diff --git a/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/CxfBlueprintEndpoint.java b/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/CxfBlueprintEndpoint.java
index 205b879..ecdcfcb 100644
--- a/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/CxfBlueprintEndpoint.java
+++ b/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/CxfBlueprintEndpoint.java
@@ -21,6 +21,7 @@
 import org.apache.camel.component.cxf.CxfEndpoint;
 import org.apache.cxf.BusFactory;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 import org.osgi.service.blueprint.container.BlueprintContainer;
 
 public class CxfBlueprintEndpoint extends CxfEndpoint {
@@ -34,6 +35,14 @@
         bundleContext = context;
     }
 
+    @Override
+    protected void doInit() throws Exception {
+        if (getCamelContext() == null) {
+            setCamelContext(blueprintCamelContext);
+        }
+        super.doInit();
+    }
+
     public void destroy() {
         // Clean up the BusFactory's defaultBus
         // This method is not called magically, blueprint
diff --git a/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java b/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
index 248e3c0..ede1cab 100644
--- a/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
+++ b/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/blueprint/EndpointDefinitionParser.java
@@ -93,6 +93,13 @@
         endpointConfig.addArgument(createRef(context, "blueprintBundleContext"),
                                    BundleContext.class.getName(), 1);
 
+        // depends on camel context to have it injected
+        if (endpointConfig.getDependsOn().size() > 0) {
+            String cid = endpointConfig.getDependsOn().get(0);
+            endpointConfig.addProperty("blueprintCamelContext", createRef(context, cid));
+            endpointConfig.setDestroyMethod("destroy");
+        }
+
         return endpointConfig;
     }
 
diff --git a/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/jaxrs/blueprint/CxfRsBlueprintEndpoint.java b/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/jaxrs/blueprint/CxfRsBlueprintEndpoint.java
index 3ad2478..2fd2446 100644
--- a/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/jaxrs/blueprint/CxfRsBlueprintEndpoint.java
+++ b/components/camel-cxf-blueprint/src/main/java/org/apache/camel/component/cxf/jaxrs/blueprint/CxfRsBlueprintEndpoint.java
@@ -45,7 +45,15 @@
         setBlueprintContainer(support.getBlueprintContainer());
         setBundleContext(support.getBundleContext());
     }
-    
+
+    @Override
+    protected void doInit() throws Exception {
+        if (getCamelContext() == null) {
+            setCamelContext(blueprintCamelContext);
+        }
+        super.doInit();
+    }
+
     public BlueprintContainer getBlueprintContainer() {
         return blueprintContainer;
     }