CAMEL-8857: camel-scr should publish the Camel to osgi so the karaf commands 
works and also what blueprint/spring-dm does.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bfd8a10b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bfd8a10b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bfd8a10b

Branch: refs/heads/camel-2.15.x
Commit: bfd8a10b0b37a606af2302c6e2e9071d2351adf2
Parents: 0c268d4
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Aug 5 15:05:26 2015 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Aug 5 15:06:28 2015 +0200

----------------------------------------------------------------------
 .../apache/camel/scr/AbstractCamelRunner.java   | 21 +++++++++++---------
 .../camel/scr/AbstractCamelRunnerTest.java      |  1 +
 2 files changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bfd8a10b/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java
----------------------------------------------------------------------
diff --git 
a/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java
 
b/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java
index 0d52927..86ff9bb 100644
--- 
a/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java
+++ 
b/components/camel-scr/src/main/java/org/apache/camel/scr/AbstractCamelRunner.java
@@ -36,6 +36,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.core.osgi.OsgiCamelContextPublisher;
 import org.apache.camel.core.osgi.OsgiDefaultCamelContext;
 import org.apache.camel.core.osgi.utils.BundleDelegatingClassLoader;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -57,15 +58,11 @@ public abstract class AbstractCamelRunner implements 
Runnable {
     protected ModelCamelContext context;
     protected SimpleRegistry registry = new SimpleRegistry();
 
-    // Configured fields
-    private String camelContextId = "camel-runner-default";
-    private boolean active;   
-
     private ScheduledExecutorService executor = 
Executors.newSingleThreadScheduledExecutor();
     private ScheduledFuture starter;
     private volatile boolean activated;
     private volatile boolean started;
-
+    protected volatile boolean active;
 
     public synchronized void activate(final BundleContext bundleContext, final 
Map<String, String> props) throws Exception {
         if (activated) {
@@ -86,7 +83,7 @@ public abstract class AbstractCamelRunner implements Runnable 
{
         // Configure fields from properties
         configure(context, this, log, true);
 
-        setupCamelContext(bundleContext, camelContextId);
+        setupCamelContext(bundleContext);
     }
 
     protected void createCamelContext(final BundleContext bundleContext, final 
Map<String, String> props) {
@@ -100,11 +97,18 @@ public abstract class AbstractCamelRunner implements 
Runnable {
             context = new DefaultCamelContext(registry);
         }
         setupPropertiesComponent(context, props, log);
+
+        String name = props.remove("camelContextId");
+        if (name != null) {
+            context.setNameStrategy(new 
ExplicitCamelContextNameStrategy(name));
+        }
+
+        // ensure we publish this CamelContext to the OSGi service registry
+        context.getManagementStrategy().addEventNotifier(new 
OsgiCamelContextPublisher(bundleContext));
     }
     
-    protected void setupCamelContext(final BundleContext bundleContext, final 
String camelContextId) throws Exception {
+    protected void setupCamelContext(final BundleContext bundleContext) throws 
Exception {
         // Set up CamelContext
-        context.setNameStrategy(new 
ExplicitCamelContextNameStrategy(camelContextId));
         context.setUseMDCLogging(true);
         context.setUseBreadcrumb(true);
 
@@ -188,7 +192,6 @@ public abstract class AbstractCamelRunner implements 
Runnable {
         try {
             if (!active) {
                 context.setAutoStartup(false);
-                log.info(camelContextId + " autoStartup disabled (active 
property is false)");
             }
             context.start();
             started = true;

http://git-wip-us.apache.org/repos/asf/camel/blob/bfd8a10b/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java
 
b/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java
index c8fb1ce..5b10b15 100644
--- 
a/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java
+++ 
b/components/camel-scr/src/test/java/org/apache/camel/scr/AbstractCamelRunnerTest.java
@@ -49,6 +49,7 @@ public class AbstractCamelRunnerTest {
     @Test
     public void testDeepConfigure() throws Exception {
         ConcreteCamelRunner integration = new ConcreteCamelRunner();
+
         integration.activate(null, integration.getDefaultProperties());
         assertEquals("Overriding camelContextId failed (deep configure)", 
integration.getDefaultProperties().get("camelContextId"), 
integration.getContext().getName());
     }

Reply via email to