From 08226614f5ac943b77388f7cb4b5b1920dea6586 Mon Sep 17 00:00:00 2001 From: hexiaofeng Date: Sat, 11 May 2024 09:30:11 +0800 Subject: [PATCH] reconfigure extension condition --- .../filter/inbound/CellInboundFilter.java | 3 +++ .../filter/inbound/FailoverInboundFilter.java | 3 +++ .../filter/inbound/UnitInboundFilter.java | 3 +++ .../invoke/filter/route/CellRouteFilter.java | 3 +++ .../invoke/filter/route/UnitRouteFilter.java | 3 +++ .../DispatcherServletDefinition.java | 26 +++++++------------ .../FilteringWebHandlerDefinition.java | 11 +------- .../PreferSameInstanceDefinition.java | 8 ++---- .../ReactorLoadBalancerDefinition.java | 16 +++++++----- ...ServiceInstanceListSupplierDefinition.java | 16 +++++++----- .../definition/StickySessionDefinition.java | 8 ++---- .../definition/ZonePreferenceDefinition.java | 8 ++---- .../DispatcherServletInterceptor.java | 16 +++++++----- .../FilteringWebHandlerInterceptor.java | 25 +++++++++--------- .../ReactorLoadBalancerInterceptor.java | 2 +- .../interceptor/StickySessionInterceptor.java | 2 +- .../FilteringWebHandlerDefinition.java | 19 ++++++++------ ...iveLoadBalancerClientFilterDefinition.java | 6 +---- .../FilteringWebHandlerInterceptor.java | 2 +- 19 files changed, 85 insertions(+), 95 deletions(-) diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/CellInboundFilter.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/CellInboundFilter.java index 1234b3fc..26ae13a2 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/CellInboundFilter.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/CellInboundFilter.java @@ -15,7 +15,9 @@ */ package com.jd.live.agent.governance.invoke.filter.inbound; +import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; import com.jd.live.agent.core.extension.annotation.Extension; +import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.context.RequestContext; import com.jd.live.agent.governance.context.bag.Carrier; import com.jd.live.agent.governance.invoke.CellAction; @@ -36,6 +38,7 @@ * @since 1.0.0 */ @Extension(value = "CellInboundFilter", order = InboundFilter.ORDER_INBOUND_LIVE_CELL) +@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) public class CellInboundFilter implements InboundFilter { @Override diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/FailoverInboundFilter.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/FailoverInboundFilter.java index d768d534..3c795e71 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/FailoverInboundFilter.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/FailoverInboundFilter.java @@ -16,9 +16,11 @@ package com.jd.live.agent.governance.invoke.filter.inbound; import com.jd.live.agent.core.event.Publisher; +import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; import com.jd.live.agent.core.extension.annotation.Extension; import com.jd.live.agent.core.inject.annotation.Inject; import com.jd.live.agent.core.inject.annotation.Injectable; +import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.event.TrafficEvent; import com.jd.live.agent.governance.event.TrafficEvent.ActionType; import com.jd.live.agent.governance.invoke.CellAction; @@ -37,6 +39,7 @@ */ @Injectable @Extension(value = "FailoverInboundFilter", order = InboundFilter.ORDER_INBOUND_LIVE_FAILOVER) +@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) public class FailoverInboundFilter implements InboundFilter { @Inject(Publisher.TRAFFIC) diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/UnitInboundFilter.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/UnitInboundFilter.java index d78af76c..f7768a31 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/UnitInboundFilter.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/inbound/UnitInboundFilter.java @@ -16,9 +16,11 @@ package com.jd.live.agent.governance.invoke.filter.inbound; import com.jd.live.agent.core.event.Publisher; +import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; import com.jd.live.agent.core.extension.annotation.Extension; import com.jd.live.agent.core.inject.annotation.Inject; import com.jd.live.agent.core.inject.annotation.Injectable; +import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.context.RequestContext; import com.jd.live.agent.governance.context.bag.Carrier; import com.jd.live.agent.governance.event.TrafficEvent; @@ -46,6 +48,7 @@ */ @Injectable @Extension(value = "UnitInboundFilter", order = InboundFilter.ORDER_INBOUND_LIVE_UNIT) +@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) public class UnitInboundFilter implements InboundFilter { @Inject(Publisher.TRAFFIC) diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/CellRouteFilter.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/CellRouteFilter.java index 5c0891aa..e77312ee 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/CellRouteFilter.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/CellRouteFilter.java @@ -16,9 +16,11 @@ package com.jd.live.agent.governance.invoke.filter.route; import com.jd.live.agent.core.event.Publisher; +import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; import com.jd.live.agent.core.extension.annotation.Extension; import com.jd.live.agent.core.inject.annotation.Inject; import com.jd.live.agent.core.inject.annotation.Injectable; +import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.config.ServiceConfig; import com.jd.live.agent.governance.event.TrafficEvent; import com.jd.live.agent.governance.event.TrafficEvent.ActionType; @@ -54,6 +56,7 @@ */ @Injectable @Extension(value = "CellRouteFilter", order = RouteFilter.ORDER_LIVE_CELL) +@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) public class CellRouteFilter implements RouteFilter { @Inject(Publisher.TRAFFIC) diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/UnitRouteFilter.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/UnitRouteFilter.java index e271701b..20096619 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/UnitRouteFilter.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/filter/route/UnitRouteFilter.java @@ -16,9 +16,11 @@ package com.jd.live.agent.governance.invoke.filter.route; import com.jd.live.agent.core.event.Publisher; +import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; import com.jd.live.agent.core.extension.annotation.Extension; import com.jd.live.agent.core.inject.annotation.Inject; import com.jd.live.agent.core.inject.annotation.Injectable; +import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.config.ServiceConfig; import com.jd.live.agent.governance.event.TrafficEvent; import com.jd.live.agent.governance.event.TrafficEvent.ActionType; @@ -56,6 +58,7 @@ */ @Injectable @Extension(value = "UnitRouteFilter", order = RouteFilter.ORDER_LIVE_UNIT) +@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) public class UnitRouteFilter implements RouteFilter { @Inject(Publisher.TRAFFIC) diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/DispatcherServletDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/DispatcherServletDefinition.java index 5ad58bc5..eff6e9da 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/DispatcherServletDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/DispatcherServletDefinition.java @@ -15,24 +15,17 @@ */ package com.jd.live.agent.plugin.router.springcloud.v3.definition; -import com.jd.live.agent.bootstrap.classloader.ResourcerType; import com.jd.live.agent.core.bytekit.matcher.MatcherBuilder; -import com.jd.live.agent.core.extension.annotation.ConditionalOnClass; -import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; -import com.jd.live.agent.core.extension.annotation.Extension; +import com.jd.live.agent.core.extension.annotation.*; import com.jd.live.agent.core.inject.annotation.Inject; -import com.jd.live.agent.core.inject.annotation.InjectLoader; import com.jd.live.agent.core.inject.annotation.Injectable; import com.jd.live.agent.core.plugin.definition.InterceptorDefinition; import com.jd.live.agent.core.plugin.definition.InterceptorDefinitionAdapter; import com.jd.live.agent.core.plugin.definition.PluginDefinitionAdapter; import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.invoke.InvocationContext; -import com.jd.live.agent.governance.invoke.filter.InboundFilter; import com.jd.live.agent.plugin.router.springcloud.v3.interceptor.DispatcherServletInterceptor; -import java.util.List; - /** * DispatcherServletPluginDefinition * @@ -41,10 +34,13 @@ */ @Injectable @Extension(value = "DispatcherServletPluginDefinition_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) +@ConditionalOnProperties(value = { + @ConditionalOnProperty(name = { + GovernanceConfig.CONFIG_LIVE_ENABLED, + GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED + }, matchIfMissing = true, relation = ConditionalRelation.OR), + @ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) +}, relation = ConditionalRelation.AND) @ConditionalOnClass(DispatcherServletDefinition.TYPE_DISPATCHER_SERVLET) public class DispatcherServletDefinition extends PluginDefinitionAdapter { @@ -60,17 +56,13 @@ public class DispatcherServletDefinition extends PluginDefinitionAdapter { @Inject(InvocationContext.COMPONENT_INVOCATION_CONTEXT) private InvocationContext context; - @Inject - @InjectLoader(ResourcerType.PLUGIN) - private List filters; - public DispatcherServletDefinition() { this.matcher = () -> MatcherBuilder.named(TYPE_DISPATCHER_SERVLET); this.interceptors = new InterceptorDefinition[]{ new InterceptorDefinitionAdapter( MatcherBuilder.named(METHOD_DO_SERVICE). and(MatcherBuilder.arguments(ARGUMENT_DO_SERVICE)), - () -> new DispatcherServletInterceptor(context, filters) + () -> new DispatcherServletInterceptor(context) ) }; } diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/FilteringWebHandlerDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/FilteringWebHandlerDefinition.java index f6ec49a8..500c070f 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/FilteringWebHandlerDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/FilteringWebHandlerDefinition.java @@ -15,24 +15,19 @@ */ package com.jd.live.agent.plugin.router.springcloud.v3.definition; -import com.jd.live.agent.bootstrap.classloader.ResourcerType; import com.jd.live.agent.core.bytekit.matcher.MatcherBuilder; import com.jd.live.agent.core.extension.annotation.ConditionalOnClass; import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; import com.jd.live.agent.core.extension.annotation.Extension; import com.jd.live.agent.core.inject.annotation.Inject; -import com.jd.live.agent.core.inject.annotation.InjectLoader; import com.jd.live.agent.core.inject.annotation.Injectable; import com.jd.live.agent.core.plugin.definition.InterceptorDefinition; import com.jd.live.agent.core.plugin.definition.InterceptorDefinitionAdapter; import com.jd.live.agent.core.plugin.definition.PluginDefinitionAdapter; import com.jd.live.agent.governance.config.GovernanceConfig; import com.jd.live.agent.governance.invoke.InvocationContext; -import com.jd.live.agent.governance.invoke.filter.InboundFilter; import com.jd.live.agent.plugin.router.springcloud.v3.interceptor.FilteringWebHandlerInterceptor; -import java.util.List; - /** * FilteringWebHandlerPluginDefinition * @@ -62,17 +57,13 @@ public class FilteringWebHandlerDefinition extends PluginDefinitionAdapter { @Inject(InvocationContext.COMPONENT_INVOCATION_CONTEXT) private InvocationContext context; - @Inject - @InjectLoader(ResourcerType.PLUGIN) - private List filters; - public FilteringWebHandlerDefinition() { this.matcher = () -> MatcherBuilder.named(TYPE_FILTERING_WEB_HANDLER); this.interceptors = new InterceptorDefinition[]{ new InterceptorDefinitionAdapter( MatcherBuilder.named(METHOD_HANDLE). and(MatcherBuilder.arguments(ARGUMENT_HANDLE)), - () -> new FilteringWebHandlerInterceptor(context, filters) + () -> new FilteringWebHandlerInterceptor(context) ) }; } diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/PreferSameInstanceDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/PreferSameInstanceDefinition.java index 7406aa3d..37ad4830 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/PreferSameInstanceDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/PreferSameInstanceDefinition.java @@ -30,12 +30,8 @@ * @since 1.0.0 */ @Extension(value = "PreferSameInstanceDefinition_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LOADBALANCE_ENABLED, matchIfMissing = true) +@ConditionalOnProperty(name = GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED, matchIfMissing = true) +@ConditionalOnProperty(name = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) @ConditionalOnClass(PreferSameInstanceDefinition.TYPE_SAME_INSTANCE_PREFERENCE_SERVICE_INSTANCE_LIST_SUPPLIER) public class PreferSameInstanceDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ReactorLoadBalancerDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ReactorLoadBalancerDefinition.java index aebf6716..81e21e60 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ReactorLoadBalancerDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ReactorLoadBalancerDefinition.java @@ -16,9 +16,7 @@ package com.jd.live.agent.plugin.router.springcloud.v3.definition; import com.jd.live.agent.core.bytekit.matcher.MatcherBuilder; -import com.jd.live.agent.core.extension.annotation.ConditionalOnClass; -import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; -import com.jd.live.agent.core.extension.annotation.Extension; +import com.jd.live.agent.core.extension.annotation.*; import com.jd.live.agent.core.plugin.definition.InterceptorDefinition; import com.jd.live.agent.core.plugin.definition.InterceptorDefinitionAdapter; import com.jd.live.agent.core.plugin.definition.PluginDefinitionAdapter; @@ -31,10 +29,14 @@ * @since 1.0.0 */ @Extension(value = "ReactorLoadBalancerDefinition_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) +@ConditionalOnProperties(value = { + @ConditionalOnProperty(name = { + GovernanceConfig.CONFIG_LIVE_ENABLED, + GovernanceConfig.CONFIG_LANE_ENABLED, + GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED + }, matchIfMissing = true, relation = ConditionalRelation.OR), + @ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) +}, relation = ConditionalRelation.AND) @ConditionalOnClass(ReactorLoadBalancerDefinition.TYPE_REACTOR_LOAD_BALANCER) public class ReactorLoadBalancerDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ServiceInstanceListSupplierDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ServiceInstanceListSupplierDefinition.java index ae6da076..9368bbe9 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ServiceInstanceListSupplierDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ServiceInstanceListSupplierDefinition.java @@ -16,9 +16,7 @@ package com.jd.live.agent.plugin.router.springcloud.v3.definition; import com.jd.live.agent.core.bytekit.matcher.MatcherBuilder; -import com.jd.live.agent.core.extension.annotation.ConditionalOnClass; -import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; -import com.jd.live.agent.core.extension.annotation.Extension; +import com.jd.live.agent.core.extension.annotation.*; import com.jd.live.agent.core.inject.annotation.Inject; import com.jd.live.agent.core.inject.annotation.Injectable; import com.jd.live.agent.core.plugin.definition.InterceptorDefinition; @@ -39,10 +37,14 @@ */ @Injectable @Extension(value = "ServiceInstanceListSupplierPluginDefinition_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) +@ConditionalOnProperties(value = { + @ConditionalOnProperty(name = { + GovernanceConfig.CONFIG_LIVE_ENABLED, + GovernanceConfig.CONFIG_LANE_ENABLED, + GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED + }, matchIfMissing = true, relation = ConditionalRelation.OR), + @ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) +}, relation = ConditionalRelation.AND) @ConditionalOnClass(ServiceInstanceListSupplierDefinition.TYPE_SERVICE_INSTANCE_LIST_SUPPLIER) public class ServiceInstanceListSupplierDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/StickySessionDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/StickySessionDefinition.java index 90182dd2..a6b77671 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/StickySessionDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/StickySessionDefinition.java @@ -30,12 +30,8 @@ * @since 1.0.0 */ @Extension(value = "StickySessionDefinition_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LOADBALANCE_ENABLED, matchIfMissing = true) +@ConditionalOnProperty(name = GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED, matchIfMissing = true) +@ConditionalOnProperty(name = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) @ConditionalOnClass(StickySessionDefinition.TYPE_REQUEST_BASED_STICKY_SESSION_SERVICE_INSTANCE_LIST_SUPPLIER) public class StickySessionDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ZonePreferenceDefinition.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ZonePreferenceDefinition.java index 1152fd67..18bc9d81 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ZonePreferenceDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/definition/ZonePreferenceDefinition.java @@ -30,12 +30,8 @@ * @since 1.0.0 */ @Extension(value = "ZonePreferenceDefinition_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_FLOW_CONTROL_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LOADBALANCE_ENABLED, matchIfMissing = true) +@ConditionalOnProperty(name = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) +@ConditionalOnProperty(name = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) @ConditionalOnClass(ZonePreferenceDefinition.TYPE_ZONE_PREFERENCE_SERVICE_INSTANCE_LIST_SUPPLIER) public class ZonePreferenceDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/DispatcherServletInterceptor.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/DispatcherServletInterceptor.java index 0e2215f1..66794e21 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/DispatcherServletInterceptor.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/DispatcherServletInterceptor.java @@ -20,16 +20,15 @@ import com.jd.live.agent.bootstrap.exception.RejectException; import com.jd.live.agent.bootstrap.logger.Logger; import com.jd.live.agent.bootstrap.logger.LoggerFactory; -import com.jd.live.agent.governance.interceptor.AbstractInterceptor.AbstractHttpInboundInterceptor; +import com.jd.live.agent.core.plugin.definition.InterceptorAdaptor; +import com.jd.live.agent.governance.invoke.InboundInvocation.HttpInboundInvocation; import com.jd.live.agent.governance.invoke.InvocationContext; -import com.jd.live.agent.governance.invoke.filter.InboundFilter; import com.jd.live.agent.plugin.router.springcloud.v3.request.ServletInboundRequest; import org.springframework.http.HttpStatus; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.List; /** * DispatcherServletInterceptor @@ -37,12 +36,14 @@ * @author Zhiguo.Chen * @since 1.0.0 */ -public class DispatcherServletInterceptor extends AbstractHttpInboundInterceptor { +public class DispatcherServletInterceptor extends InterceptorAdaptor { private static final Logger logger = LoggerFactory.getLogger(DispatcherServletInterceptor.class); - public DispatcherServletInterceptor(InvocationContext context, List filters) { - super(context, filters); + private final InvocationContext context; + + public DispatcherServletInterceptor(InvocationContext context) { + this.context = context; } /** @@ -59,7 +60,8 @@ public void onEnter(ExecutableContext ctx) { Object[] arguments = ctx.getArguments(); HttpServletResponse response = (HttpServletResponse) arguments[1]; try { - process(new ServletInboundRequest((HttpServletRequest) arguments[0])); + ServletInboundRequest request = new ServletInboundRequest((HttpServletRequest) arguments[0]); + context.inbound(new HttpInboundInvocation<>(request, context)); } catch (RejectException e) { mc.setSkip(true); if (response != null) { diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/FilteringWebHandlerInterceptor.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/FilteringWebHandlerInterceptor.java index 4079c453..2d3ea04b 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/FilteringWebHandlerInterceptor.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/FilteringWebHandlerInterceptor.java @@ -18,11 +18,11 @@ import com.jd.live.agent.bootstrap.bytekit.context.ExecutableContext; import com.jd.live.agent.bootstrap.bytekit.context.MethodContext; import com.jd.live.agent.bootstrap.exception.RejectException; -import com.jd.live.agent.governance.interceptor.AbstractInterceptor.AbstractHttpInboundInterceptor; +import com.jd.live.agent.core.plugin.definition.InterceptorAdaptor; +import com.jd.live.agent.governance.invoke.InboundInvocation; import com.jd.live.agent.governance.invoke.InboundInvocation.GatewayInboundInvocation; import com.jd.live.agent.governance.invoke.InboundInvocation.HttpInboundInvocation; import com.jd.live.agent.governance.invoke.InvocationContext; -import com.jd.live.agent.governance.invoke.filter.InboundFilter; import com.jd.live.agent.plugin.router.springcloud.v3.request.ReactiveInboundRequest; import org.springframework.http.HttpStatus; import org.springframework.web.server.ResponseStatusException; @@ -30,18 +30,18 @@ import org.springframework.web.server.handler.FilteringWebHandler; import reactor.core.publisher.Mono; -import java.util.List; - /** * FilteringWebHandlerInterceptor * * @author Zhiguo.Chen * @since 1.0.0 */ -public class FilteringWebHandlerInterceptor extends AbstractHttpInboundInterceptor { +public class FilteringWebHandlerInterceptor extends InterceptorAdaptor { + + private final InvocationContext context; - public FilteringWebHandlerInterceptor(InvocationContext context, List filters) { - super(context, filters); + public FilteringWebHandlerInterceptor(InvocationContext context) { + this.context = context; } /** @@ -56,16 +56,15 @@ public void onEnter(ExecutableContext ctx) { MethodContext mc = (MethodContext) ctx; ServerWebExchange exchange = (ServerWebExchange) mc.getArguments()[0]; try { - process(new ReactiveInboundRequest(exchange.getRequest())); + ReactiveInboundRequest request = new ReactiveInboundRequest(exchange.getRequest()); + InboundInvocation invocation = context.getApplication().getService().isGateway() + ? new GatewayInboundInvocation<>(request, context) + : new HttpInboundInvocation<>(request, context); + context.inbound(invocation); } catch (RejectException e) { mc.setResult(Mono.error(new ResponseStatusException( HttpStatus.REQUESTED_RANGE_NOT_SATISFIABLE, e.getMessage(), e))); mc.setSkip(true); } } - - @Override - protected HttpInboundInvocation createInlet(ReactiveInboundRequest request) { - return context.getApplication().getService().isGateway() ? new GatewayInboundInvocation<>(request, context) : super.createInlet(request); - } } diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java index 69886ee6..6b91b858 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java @@ -39,7 +39,7 @@ public void onEnter(ExecutableContext ctx) { try { String serviceId = (String) fieldDesc.get(target); if (serviceId != null) { - RequestContext.getOrCreate().setAttribute(Carrier.ATTRIBUTE_SERVICE_ID, serviceId); + RequestContext.setAttribute(Carrier.ATTRIBUTE_SERVICE_ID, serviceId); } } catch (Throwable ignore) { } diff --git a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/StickySessionInterceptor.java b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/StickySessionInterceptor.java index c8b784ff..f70a5b7e 100644 --- a/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/StickySessionInterceptor.java +++ b/joylive-plugin/joylive-router/joylive-router-springcloud3/src/main/java/com/jd/live/agent/plugin/router/springcloud/v3/interceptor/StickySessionInterceptor.java @@ -37,7 +37,7 @@ public void onEnter(ExecutableContext ctx) { Object[] arguments = ctx.getArguments(); List instances = (List) arguments[0]; String cookie = (String) arguments[1]; - RequestContext.getOrCreate().setAttribute(Request.KEY_STICKY_ID, cookie); + RequestContext.setAttribute(Request.KEY_STICKY_ID, cookie); MethodContext mc = (MethodContext) ctx; mc.setResult(instances); mc.setSkip(true); diff --git a/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/FilteringWebHandlerDefinition.java b/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/FilteringWebHandlerDefinition.java index 1c94dbbc..cf5247bc 100644 --- a/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/FilteringWebHandlerDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/FilteringWebHandlerDefinition.java @@ -16,9 +16,7 @@ package com.jd.live.agent.plugin.router.springgateway.v3.definition; import com.jd.live.agent.core.bytekit.matcher.MatcherBuilder; -import com.jd.live.agent.core.extension.annotation.ConditionalOnClass; -import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; -import com.jd.live.agent.core.extension.annotation.Extension; +import com.jd.live.agent.core.extension.annotation.*; import com.jd.live.agent.core.plugin.definition.InterceptorDefinition; import com.jd.live.agent.core.plugin.definition.InterceptorDefinitionAdapter; import com.jd.live.agent.core.plugin.definition.PluginDefinitionAdapter; @@ -31,11 +29,16 @@ * @since 1.0.0 */ @Extension(value = "FilteringWebHandlerPluginDefinition_Gateway_v3") -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_GATEWAY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) +@ConditionalOnProperties(value = { + @ConditionalOnProperty(name = { + GovernanceConfig.CONFIG_LIVE_ENABLED, + GovernanceConfig.CONFIG_LANE_ENABLED + }, matchIfMissing = true, relation = ConditionalRelation.OR), + @ConditionalOnProperty(name = { + GovernanceConfig.CONFIG_LIVE_SPRING_GATEWAY_ENABLED, + GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED + }, matchIfMissing = true, relation = ConditionalRelation.AND), +}, relation = ConditionalRelation.AND) @ConditionalOnClass(FilteringWebHandlerDefinition.TYPE_FILTERING_WEB_HANDLER) @ConditionalOnClass(FilteringWebHandlerDefinition.REACTOR_MONO) public class FilteringWebHandlerDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/ReactiveLoadBalancerClientFilterDefinition.java b/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/ReactiveLoadBalancerClientFilterDefinition.java index 31ad273f..7515fe19 100644 --- a/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/ReactiveLoadBalancerClientFilterDefinition.java +++ b/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/definition/ReactiveLoadBalancerClientFilterDefinition.java @@ -16,9 +16,7 @@ package com.jd.live.agent.plugin.router.springgateway.v3.definition; import com.jd.live.agent.core.bytekit.matcher.MatcherBuilder; -import com.jd.live.agent.core.extension.annotation.ConditionalOnClass; -import com.jd.live.agent.core.extension.annotation.ConditionalOnProperty; -import com.jd.live.agent.core.extension.annotation.Extension; +import com.jd.live.agent.core.extension.annotation.*; import com.jd.live.agent.core.inject.annotation.Config; import com.jd.live.agent.core.inject.annotation.Inject; import com.jd.live.agent.core.inject.annotation.Injectable; @@ -43,8 +41,6 @@ @ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_ENABLED, matchIfMissing = true) @ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_GATEWAY_ENABLED, matchIfMissing = true) @ConditionalOnProperty(value = GovernanceConfig.CONFIG_LIVE_SPRING_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_REGISTRY_ENABLED, matchIfMissing = true) -@ConditionalOnProperty(value = GovernanceConfig.CONFIG_TRANSMISSION_ENABLED, matchIfMissing = true) @ConditionalOnClass(ReactiveLoadBalancerClientFilterDefinition.TYPE_REACTIVE_LOADBALANCER_CLIENT_FILTER) @ConditionalOnClass(ReactiveLoadBalancerClientFilterDefinition.REACTOR_MONO) public class ReactiveLoadBalancerClientFilterDefinition extends PluginDefinitionAdapter { diff --git a/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/interceptor/FilteringWebHandlerInterceptor.java b/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/interceptor/FilteringWebHandlerInterceptor.java index 5865391b..caf96f26 100644 --- a/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/interceptor/FilteringWebHandlerInterceptor.java +++ b/joylive-plugin/joylive-router/joylive-router-springgateway3/src/main/java/com/jd/live/agent/plugin/router/springgateway/v3/interceptor/FilteringWebHandlerInterceptor.java @@ -38,6 +38,6 @@ public class FilteringWebHandlerInterceptor extends InterceptorAdaptor { */ @Override public void onEnter(ExecutableContext ctx) { - RequestContext.getOrCreate().setAttribute(Carrier.ATTRIBUTE_GATEWAY, Boolean.TRUE); + RequestContext.setAttribute(Carrier.ATTRIBUTE_GATEWAY, Boolean.TRUE); } }