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;
}