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"); + } + }; + } + +}