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 2020/03/15 16:52:08 UTC

[camel] branch master updated: Fixed veto start camel after recent refactorings in core

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 52b0a95  Fixed veto start camel after recent refactorings in core
52b0a95 is described below

commit 52b0a9519dc6a60ba06b374c43ccafa76a6ad92b
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 15 17:40:40 2020 +0100

    Fixed veto start camel after recent refactorings in core
---
 .../camel/impl/engine/AbstractCamelContext.java    | 30 ++++++++++++----------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 82f9b0b..f546993 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -183,7 +183,7 @@ public abstract class AbstractCamelContext extends BaseService
         Eager, Default, Lazy
     }
 
-    private final AtomicBoolean vetoStarted = new AtomicBoolean();
+    private VetoCamelContextStartException vetoed;
     private String managementName;
     private ClassLoader applicationContextClassLoader;
     private final AtomicInteger endpointKeyCounter = new AtomicInteger();
@@ -403,7 +403,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public boolean isVetoStarted() {
-        return vetoStarted.get();
+        return vetoed != null;
     }
 
     public Initialization getInitialization() {
@@ -2486,6 +2486,18 @@ public abstract class AbstractCamelContext extends BaseService
     public void start() {
         super.start();
 
+        // did the start veto?
+        if (vetoed != null) {
+            if (vetoed.isRethrowException()) {
+                throw RuntimeCamelException.wrapRuntimeException(vetoed);
+            } else {
+                LOG.info("CamelContext ({}) vetoed to not start due {}", getName(), vetoed.getMessage());
+                // swallow exception and change state of this camel context to stopped
+                stop();
+                return;
+            }
+        }
+
         // okay the routes has been started so emit event that CamelContext
         // has started (here at the end)
         EventHelper.notifyCamelContextStarted(this);
@@ -2517,7 +2529,7 @@ public abstract class AbstractCamelContext extends BaseService
     protected void doStartContext() throws Exception {
         startDate = new Date();
 
-        vetoStarted.set(false);
+        vetoed = null;
         stopWatch.restart();
         LOG.info("Apache Camel {} (CamelContext: {}) is starting", getVersion(), getName());
 
@@ -2551,16 +2563,8 @@ public abstract class AbstractCamelContext extends BaseService
             VetoCamelContextStartException veto = ObjectHelper.getException(VetoCamelContextStartException.class, e);
             if (veto != null) {
                 // mark we veto against starting Camel
-                vetoStarted.set(true);
-                if (veto.isRethrowException()) {
-                    throw e;
-                } else {
-                    LOG.info("CamelContext ({}) vetoed to not start due {}", getName(), e.getMessage());
-                    // swallow exception and change state of this camel context
-                    // to stopped
-                    stop();
-                    return;
-                }
+                vetoed = veto;
+                return;
             } else {
                 LOG.error("Error starting CamelContext (" + getName() + ") due to exception thrown: " + e.getMessage(), e);
                 throw RuntimeCamelException.wrapRuntimeException(e);