From 3efc26d580bf2865f840efce5f5301ab520d9392 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 7 May 2018 20:56:55 +0200 Subject: [PATCH] Checks if DirectClass is on the classpath; fixes gh-976 --- .../instrument/messaging/TraceChannelInterceptor.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceChannelInterceptor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceChannelInterceptor.java index fb44297aa..5ba5219d0 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceChannelInterceptor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/TraceChannelInterceptor.java @@ -33,6 +33,7 @@ import org.springframework.messaging.support.ErrorMessage; import org.springframework.messaging.support.GenericMessage; import org.springframework.messaging.support.MessageBuilder; import org.springframework.messaging.support.MessageHeaderAccessor; +import org.springframework.util.ClassUtils; /** * A channel interceptor that automatically starts / continues / closes and detaches @@ -48,8 +49,12 @@ public class TraceChannelInterceptor extends AbstractTraceChannelInterceptor { private static final org.apache.commons.logging.Log log = LogFactory .getLog(TraceChannelInterceptor.class); + private final boolean hasDirectChannelClass; + public TraceChannelInterceptor(BeanFactory beanFactory) { super(beanFactory); + this.hasDirectChannelClass = ClassUtils + .isPresent("org.springframework.integration.channel.DirectChannel", null); } @Override @@ -159,8 +164,8 @@ public class TraceChannelInterceptor extends AbstractTraceChannelInterceptor { } private boolean isDirectChannel(MessageChannel channel) { - return DirectChannel.class - .isAssignableFrom(AopUtils.getTargetClass(channel)); + return this.hasDirectChannelClass && + DirectChannel.class.isAssignableFrom(AopUtils.getTargetClass(channel)); } private Message outputMessage(Message message, MessageBuilder messageBuilder,