You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/05/13 11:37:51 UTC

[camel-karaf] branch main updated: CAMEL-18094: camel-cxf-blueprint - Must inject CamelContext via depends-on

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karaf.git


The following commit(s) were added to refs/heads/main by this push:
     new 826a3c66 CAMEL-18094: camel-cxf-blueprint - Must inject CamelContext via depends-on
826a3c66 is described below

commit 826a3c6659db0f52b3e85cb55a26e33274e01668
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri May 13 13:37:00 2022 +0200

    CAMEL-18094: camel-cxf-blueprint - Must inject CamelContext via depends-on
---
 .../camel/component/cxf/blueprint/CxfBlueprintEndpoint.java    |  9 +++++++++
 .../component/cxf/blueprint/EndpointDefinitionParser.java      |  7 +++++++
 .../component/cxf/jaxrs/blueprint/CxfRsBlueprintEndpoint.java  | 10 +++++++++-
 3 files changed, 25 insertions(+), 1 deletion(-)

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 205b879c..ecdcfcba 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.CxfComponent;
 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 @@ public class CxfBlueprintEndpoint extends CxfEndpoint {
         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 248e3c0b..ede1cab2 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 @@ public class EndpointDefinitionParser extends AbstractBeanDefinitionParser {
         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 3ad2478e..2fd2446f 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 @@ public class CxfRsBlueprintEndpoint extends CxfRsEndpoint {
         setBlueprintContainer(support.getBlueprintContainer());
         setBundleContext(support.getBundleContext());
     }
-    
+
+    @Override
+    protected void doInit() throws Exception {
+        if (getCamelContext() == null) {
+            setCamelContext(blueprintCamelContext);
+        }
+        super.doInit();
+    }
+
     public BlueprintContainer getBlueprintContainer() {
         return blueprintContainer;
     }