Skip to content

Commit

Permalink
reconfigure extension condition
Browse files Browse the repository at this point in the history
  • Loading branch information
hexiaofeng committed May 11, 2024
1 parent 0d37c2f commit 0822661
Show file tree
Hide file tree
Showing 19 changed files with 85 additions and 95 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand All @@ -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 {

Expand All @@ -60,17 +56,13 @@ public class DispatcherServletDefinition extends PluginDefinitionAdapter {
@Inject(InvocationContext.COMPONENT_INVOCATION_CONTEXT)
private InvocationContext context;

@Inject
@InjectLoader(ResourcerType.PLUGIN)
private List<InboundFilter> 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)
)
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down Expand Up @@ -62,17 +57,13 @@ public class FilteringWebHandlerDefinition extends PluginDefinitionAdapter {
@Inject(InvocationContext.COMPONENT_INVOCATION_CONTEXT)
private InvocationContext context;

@Inject
@InjectLoader(ResourcerType.PLUGIN)
private List<InboundFilter> 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)
)
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,30 @@
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
*
* @author Zhiguo.Chen
* @since 1.0.0
*/
public class DispatcherServletInterceptor extends AbstractHttpInboundInterceptor<ServletInboundRequest> {
public class DispatcherServletInterceptor extends InterceptorAdaptor {

private static final Logger logger = LoggerFactory.getLogger(DispatcherServletInterceptor.class);

public DispatcherServletInterceptor(InvocationContext context, List<InboundFilter> filters) {
super(context, filters);
private final InvocationContext context;

public DispatcherServletInterceptor(InvocationContext context) {
this.context = context;
}

/**
Expand All @@ -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) {
Expand Down
Loading

0 comments on commit 0822661

Please sign in to comment.