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