You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/08/21 06:51:45 UTC
[camel] 01/03: CAMEL-13877 fix NPE in RouteHealthCheck
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 <pa...@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");
+ }
+ };
+ }
+
+}