CAMEL-10513: Start BlueprintCamelContext on BlueprintEvent.CREATED

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

Branch: refs/heads/master
Commit: dd8063efafa72d86d6187357e5a0d62944013166
Parents: dd4b323
Author: Quinn Stevenson <qu...@pronoia-solutions.com>
Authored: Tue Nov 22 14:15:53 2016 -0700
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun Dec 4 13:17:55 2016 +0100

----------------------------------------------------------------------
 .../camel/blueprint/BlueprintCamelContext.java  | 83 +++++++++++++++++---
 .../blueprint/CamelContextFactoryBean.java      |  2 +-
 2 files changed, 73 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dd8063ef/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
----------------------------------------------------------------------
diff --git 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
index dd87dae..9b2a861 100644
--- 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
+++ 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/BlueprintCamelContext.java
@@ -143,23 +143,84 @@ public class BlueprintCamelContext extends 
DefaultCamelContext implements Servic
 
     @Override
     public void blueprintEvent(BlueprintEvent event) {
-        // noop as we just needed to enlist the BlueprintListener to have 
events triggered to serviceChanged method
+        if (LOG.isDebugEnabled()) {
+            String eventTypeString;
+
+            switch (event.getType()) {
+            case BlueprintEvent.CREATING:
+                eventTypeString = "CREATING";
+                break;
+            case BlueprintEvent.CREATED:
+                eventTypeString = "CREATED";
+                break;
+            case BlueprintEvent.DESTROYING:
+                eventTypeString = "DESTROYING";
+                break;
+            case BlueprintEvent.DESTROYED:
+                eventTypeString = "DESTROYED";
+                break;
+            case BlueprintEvent.GRACE_PERIOD:
+                eventTypeString = "GRACE_PERIOD";
+                break;
+            case BlueprintEvent.WAITING:
+                eventTypeString = "WAITING";
+                break;
+            case BlueprintEvent.FAILURE:
+                eventTypeString = "FAILURE";
+                break;
+            default:
+                eventTypeString = "UNKNOWN";
+                break;
+            }
+
+            LOG.debug("Received BlueprintEvent[ replay={} type={} bundle={}] 
%s", event.isReplay(), eventTypeString, event.getBundle().getSymbolicName(), 
event.toString());
+        }
+
+        if (!event.isReplay() && 
this.getBundleContext().getBundle().getBundleId() == 
event.getBundle().getBundleId()) {
+            if (event.getType() == BlueprintEvent.CREATED) {
+                try {
+                    LOG.info("Attempting to start Camel Context {}", 
this.getName());
+                    this.maybeStart();
+                } catch (Exception startEx) {
+                    LOG.error("Error occurred during starting Camel Context  " 
+ this.getName(), startEx);
+                }
+            } else if (event.getType() == BlueprintEvent.DESTROYING) {
+                try {
+                    LOG.info("Stopping Camel Context {}", this.getName());
+                    this.stop();
+                } catch (Exception stopEx) {
+                    LOG.error("Error occurred during stopping Camel Context " 
+ this.getName(), stopEx);
+                }
+
+            }
+        }
+
     }
 
     @Override
     public void serviceChanged(ServiceEvent event) {
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Service {} changed to {}", event, event.getType());
-        }
-        // look for blueprint container to be registered, and then we can 
start the CamelContext
-        if (event.getType() == ServiceEvent.REGISTERED
-                && 
event.getServiceReference().isAssignableTo(bundleContext.getBundle(), 
"org.osgi.service.blueprint.container.BlueprintContainer")
-                && 
bundleContext.getBundle().equals(event.getServiceReference().getBundle())) {
-            try {
-                maybeStart();
-            } catch (Exception e) {
-                LOG.error("Error occurred during starting Camel: " + this + " 
due " + e.getMessage(), e);
+            String eventTypeString;
+
+            switch (event.getType()) {
+            case ServiceEvent.REGISTERED:
+                eventTypeString = "REGISTERED";
+                break;
+            case ServiceEvent.MODIFIED:
+                eventTypeString = "MODIFIED";
+                break;
+            case ServiceEvent.UNREGISTERING:
+                eventTypeString = "UNREGISTERING";
+                break;
+            case ServiceEvent.MODIFIED_ENDMATCH:
+                eventTypeString = "MODIFIED_ENDMATCH";
+                break;
+            default:
+                eventTypeString = "UNKNOWN";
+                break;
             }
+
+            LOG.debug("Service {} changed to {}", event.toString(), 
eventTypeString);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/dd8063ef/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
index 59e9f38..41da245 100644
--- 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
+++ 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java
@@ -275,7 +275,7 @@ public class CamelContextFactoryBean extends 
AbstractCamelContextFactoryBean<Blu
             if (pc.getLocations() == null) {
                 String[] ids = parser.lookupPropertyPlaceholderIds();
                 for (int i = 0; i < ids.length; i++) {
-                    if (!ids[i].startsWith( "blueprint:")) {
+                    if (!ids[i].startsWith("blueprint:")) {
                         ids[i] = "blueprint:" + ids[i];
                     }
                 }

Reply via email to