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

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

commit 4fba2be69d675a0bd177813cf283b1dbb3289978
Author: Paul Heaberlin <paul.heaber...@jetisre.com>
AuthorDate: Mon Aug 19 16:09:44 2019 -0500

    CAMEL-13877 fix NPE in RouteHealthCheck
---
 .../apache/camel/impl/health/RouteHealthCheck.java | 32 ++++++++++----------
 .../camel/impl/health/RouteHealthCheckTest.java    | 35 ++++++++++++++++++++++
 2 files changed, 52 insertions(+), 15 deletions(-)

diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
index 3d773eb..3b47302 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/health/RouteHealthCheck.java
@@ -84,21 +84,23 @@ public class RouteHealthCheck extends AbstractHealthCheck {
                 builder.up();
             }
 
-            if (builder.state() != State.DOWN) {
-                // If JMX is enabled, use the Managed MBeans to determine route
-                // health based on performance counters.
-                ManagedRouteMBean managedRoute = 
context.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId());
+                       if (builder.state() != State.DOWN) {
+                               // If JMX is enabled, use the Managed MBeans to 
determine route
+                               // health based on performance counters.
+                               ManagedCamelContext managedCamelContext = 
context.getExtension(ManagedCamelContext.class);
+                               if (managedCamelContext != null) {
+                                       ManagedRouteMBean managedRoute = 
managedCamelContext.getManagedRoute(route.getId());
+                                       if (managedRoute != null && 
!evaluators.isEmpty()) {
+                                               for 
(PerformanceCounterEvaluator<ManagedRouteMBean> evaluator : evaluators) {
+                                                       
evaluator.test(managedRoute, builder, options);
 
-                if (managedRoute != null && !evaluators.isEmpty()) {
-                    for (PerformanceCounterEvaluator<ManagedRouteMBean> 
evaluator : evaluators) {
-                        evaluator.test(managedRoute, builder, options);
-
-                        if (builder.state() == State.DOWN) {
-                            break;
-                        }
-                    }
-                }
-            }
-        }
+                                                       if (builder.state() == 
State.DOWN) {
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
     }
 }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/health/RouteHealthCheckTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/health/RouteHealthCheckTest.java
new file mode 100644
index 0000000..fd723bc
--- /dev/null
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/health/RouteHealthCheckTest.java
@@ -0,0 +1,35 @@
+package org.apache.camel.impl.health;
+
+import java.util.Collections;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Route;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.health.HealthCheckResultBuilder;
+import org.junit.Test;
+
+public class RouteHealthCheckTest extends ContextTestSupport {
+
+       private static final String TEST_ROUTE_ID = "Test-Route";
+
+       @Test
+       public void testDoCallDoesNotHaveNPEWhenJmxDisabled() {
+               Route route = context.getRoute(TEST_ROUTE_ID);
+
+               RouteHealthCheck healthCheck = new RouteHealthCheck(route);
+               final HealthCheckResultBuilder builder = 
HealthCheckResultBuilder.on(healthCheck);
+
+               healthCheck.doCall(builder, Collections.emptyMap());
+       }
+
+       @Override
+       protected RouteBuilder createRouteBuilder() throws Exception {
+               return new RouteBuilder() {
+                       @Override
+                       public void configure() throws Exception {
+                               
from("direct:input").id(TEST_ROUTE_ID).log("Message");
+                       }
+               };
+       }
+
+}

Reply via email to