diff --git a/apm-sniffer/apm-sdk-plugin/spring-plugins/webflux-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/DispatcherHandlerHandleMethodInterceptor.java b/apm-sniffer/apm-sdk-plugin/spring-plugins/webflux-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/DispatcherHandlerHandleMethodInterceptor.java index 5330e22a6..712ca6569 100644 --- a/apm-sniffer/apm-sdk-plugin/spring-plugins/webflux-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/DispatcherHandlerHandleMethodInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/spring-plugins/webflux-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/DispatcherHandlerHandleMethodInterceptor.java @@ -82,13 +82,25 @@ public class DispatcherHandlerHandleMethodInterceptor implements InstanceMethods public static EnhancedInstance getInstance(Object o) { EnhancedInstance instance = null; if (o instanceof ServerWebExchangeDecorator) { - ServerWebExchange delegate = ((ServerWebExchangeDecorator) o).getDelegate(); - if (delegate instanceof DefaultServerWebExchange) { - instance = (EnhancedInstance) delegate; - } + instance = getEnhancedInstance((ServerWebExchangeDecorator) o); } else if (o instanceof DefaultServerWebExchange) { instance = (EnhancedInstance) o; } return instance; } + + + private static EnhancedInstance getEnhancedInstance(ServerWebExchangeDecorator serverWebExchangeDecorator) { + Object o = serverWebExchangeDecorator.getDelegate(); + if (o instanceof ServerWebExchangeDecorator) { + return getEnhancedInstance((ServerWebExchangeDecorator) o); + } else if (o instanceof DefaultServerWebExchange) { + return (EnhancedInstance) o; + } else if (o == null) { + throw new NullPointerException("The expected class DefaultServerWebExchange is null"); + } else { + throw new RuntimeException("Unknown parameter types:" + o.getClass()); + } + } + } diff --git a/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/cloud/gateway/v21x/NettyRoutingFilterInterceptor.java b/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/cloud/gateway/v21x/NettyRoutingFilterInterceptor.java index c37aab8e4..251198568 100644 --- a/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/cloud/gateway/v21x/NettyRoutingFilterInterceptor.java +++ b/apm-sniffer/optional-plugins/optional-spring-plugins/optional-spring-cloud/gateway-2.1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/cloud/gateway/v21x/NettyRoutingFilterInterceptor.java @@ -79,13 +79,24 @@ public class NettyRoutingFilterInterceptor implements InstanceMethodsAroundInter public static EnhancedInstance getInstance(Object o) { EnhancedInstance instance = null; if (o instanceof ServerWebExchangeDecorator) { - ServerWebExchange delegate = ((ServerWebExchangeDecorator) o).getDelegate(); - if (delegate instanceof DefaultServerWebExchange) { - instance = (EnhancedInstance) delegate; - } + instance = getEnhancedInstance((ServerWebExchangeDecorator) o); } else if (o instanceof DefaultServerWebExchange) { instance = (EnhancedInstance) o; } return instance; } + + + private static EnhancedInstance getEnhancedInstance(ServerWebExchangeDecorator serverWebExchangeDecorator) { + Object o = serverWebExchangeDecorator.getDelegate(); + if (o instanceof ServerWebExchangeDecorator) { + return getEnhancedInstance((ServerWebExchangeDecorator) o); + } else if (o instanceof DefaultServerWebExchange) { + return (EnhancedInstance) o; + } else if (o == null) { + throw new NullPointerException("The expected class DefaultServerWebExchange is null"); + } else { + throw new RuntimeException("Unknown parameter types:" + o.getClass()); + } + } }