fix PolarisFeignCircuitBreaker.Builder

pull/916/head
seanyu 3 years ago
parent c3e2340efe
commit 6d06a4649d

@ -18,9 +18,11 @@
package com.tencent.cloud.polaris.circuitbreaker.config;
import com.tencent.cloud.polaris.circuitbreaker.feign.PolarisCircuitBreakerNameResolver;
import com.tencent.cloud.polaris.circuitbreaker.feign.PolarisFeignCircuitBreaker;
import com.tencent.cloud.polaris.circuitbreaker.feign.PolarisFeignCircuitBreakerTargeter;
import feign.Feign;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.client.circuitbreaker.CircuitBreakerFactory;
@ -29,6 +31,7 @@ import org.springframework.cloud.openfeign.FeignClientFactoryBean;
import org.springframework.cloud.openfeign.Targeter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
/**
* PolarisCircuitBreakerFeignClientAutoConfiguration.
@ -47,8 +50,16 @@ public class PolarisCircuitBreakerFeignClientAutoConfiguration {
}
@Bean
@ConditionalOnBean(CircuitBreakerFactory.class)
public Targeter polarisFeignCircuitBreakerTargeter(CircuitBreakerFactory circuitBreakerFactory, CircuitBreakerNameResolver circuitBreakerNameResolver) {
return new PolarisFeignCircuitBreakerTargeter(circuitBreakerFactory, circuitBreakerNameResolver);
}
@Bean
@Scope("prototype")
@ConditionalOnBean(CircuitBreakerFactory.class)
public Feign.Builder circuitBreakerFeignBuilder() {
return PolarisFeignCircuitBreaker.builder();
}
}

@ -16,8 +16,8 @@ public class PolarisFeignCircuitBreaker {
/**
* @return builder for Feign CircuitBreaker integration
*/
public static PolarisFeignCircuitBreaker.Builder builder(Feign.Builder delegateBuilder) {
return new PolarisFeignCircuitBreaker.Builder(delegateBuilder);
public static PolarisFeignCircuitBreaker.Builder builder() {
return new PolarisFeignCircuitBreaker.Builder();
}
/**
@ -25,10 +25,7 @@ public class PolarisFeignCircuitBreaker {
*/
public static final class Builder extends Feign.Builder {
private final Feign.Builder delegateBuilder;
public Builder(Feign.Builder delegateBuilder) {
this.delegateBuilder = delegateBuilder;
public Builder() {
}
private CircuitBreakerFactory circuitBreakerFactory;
@ -66,9 +63,9 @@ public class PolarisFeignCircuitBreaker {
}
public Feign build(final FallbackFactory<?> nullableFallbackFactory) {
delegateBuilder.invocationHandlerFactory((target, dispatch) -> new PolarisFeignCircuitBreakerInvocationHandler(
this.invocationHandlerFactory((target, dispatch) -> new PolarisFeignCircuitBreakerInvocationHandler(
circuitBreakerFactory, feignClientName, target, dispatch, nullableFallbackFactory, circuitBreakerNameResolver, this.decoder));
return delegateBuilder.build();
return this.build();
}
}

@ -26,10 +26,10 @@ public class PolarisFeignCircuitBreakerTargeter implements Targeter {
@Override
public <T> T target(FeignClientFactoryBean factory, Feign.Builder feign, FeignContext context,
Target.HardCodedTarget<T> target) {
if (!(feign instanceof FeignCircuitBreaker.Builder)) {
if (!(feign instanceof PolarisFeignCircuitBreaker.Builder)) {
return feign.target(target);
}
PolarisFeignCircuitBreaker.Builder builder = PolarisFeignCircuitBreaker.builder(feign);
PolarisFeignCircuitBreaker.Builder builder = (PolarisFeignCircuitBreaker.Builder) feign;
String name = !StringUtils.hasText(factory.getContextId()) ? factory.getName() : factory.getContextId();
Class<?> fallback = factory.getFallback();
if (fallback != void.class) {

Loading…
Cancel
Save