Reformat.

This commit is contained in:
Olga Maciaszek-Sharma
2020-09-17 13:41:44 +02:00
committed by Spencer Gibb
parent 034768bc8f
commit 00668991a4
259 changed files with 1955 additions and 3380 deletions

View File

@@ -61,14 +61,12 @@ public class CommonsClientAutoConfiguration {
@Bean
@ConditionalOnDiscoveryHealthIndicatorEnabled
public DiscoveryClientHealthIndicator discoveryClientHealthIndicator(
ObjectProvider<DiscoveryClient> discoveryClient,
DiscoveryClientHealthIndicatorProperties properties) {
ObjectProvider<DiscoveryClient> discoveryClient, DiscoveryClientHealthIndicatorProperties properties) {
return new DiscoveryClientHealthIndicator(discoveryClient, properties);
}
@Bean
@ConditionalOnProperty(
value = "spring.cloud.discovery.client.composite-indicator.enabled",
@ConditionalOnProperty(value = "spring.cloud.discovery.client.composite-indicator.enabled",
matchIfMissing = true)
@ConditionalOnBean({ DiscoveryHealthIndicator.class })
public DiscoveryCompositeHealthContributor discoveryCompositeHealthContributor(
@@ -78,8 +76,7 @@ public class CommonsClientAutoConfiguration {
@Bean
public HasFeatures commonsFeatures() {
return HasFeatures.abstractFeatures(DiscoveryClient.class,
LoadBalancerClient.class);
return HasFeatures.abstractFeatures(DiscoveryClient.class, LoadBalancerClient.class);
}
}

View File

@@ -36,8 +36,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@ConditionalOnProperty(value = "spring.cloud.discovery.blocking.enabled",
matchIfMissing = true)
@ConditionalOnProperty(value = "spring.cloud.discovery.blocking.enabled", matchIfMissing = true)
public @interface ConditionalOnBlockingDiscoveryEnabled {
}

View File

@@ -36,8 +36,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@ConditionalOnProperty(value = "spring.cloud.discovery.client.health-indicator.enabled",
matchIfMissing = true)
@ConditionalOnProperty(value = "spring.cloud.discovery.client.health-indicator.enabled", matchIfMissing = true)
public @interface ConditionalOnDiscoveryHealthIndicatorEnabled {
}

View File

@@ -39,8 +39,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@Documented
@Inherited
@ConditionalOnClass(name = "org.springframework.web.reactive.function.client.WebClient")
@ConditionalOnProperty(value = "spring.cloud.discovery.reactive.enabled",
matchIfMissing = true)
@ConditionalOnProperty(value = "spring.cloud.discovery.reactive.enabled", matchIfMissing = true)
public @interface ConditionalOnReactiveDiscoveryEnabled {
}

View File

@@ -49,8 +49,8 @@ public class DefaultServiceInstance implements ServiceInstance {
* @param secure indicates whether or not the connection needs to be secure.
* @param metadata a map containing metadata.
*/
public DefaultServiceInstance(String instanceId, String serviceId, String host,
int port, boolean secure, Map<String, String> metadata) {
public DefaultServiceInstance(String instanceId, String serviceId, String host, int port, boolean secure,
Map<String, String> metadata) {
this.instanceId = instanceId;
this.serviceId = serviceId;
this.host = host;
@@ -66,8 +66,7 @@ public class DefaultServiceInstance implements ServiceInstance {
* @param port the port on which the service is running.
* @param secure indicates whether or not the connection needs to be secure.
*/
public DefaultServiceInstance(String instanceId, String serviceId, String host,
int port, boolean secure) {
public DefaultServiceInstance(String instanceId, String serviceId, String host, int port, boolean secure) {
this(instanceId, serviceId, host, port, secure, new LinkedHashMap<>());
}
@@ -93,8 +92,7 @@ public class DefaultServiceInstance implements ServiceInstance {
* @deprecated - use other constructors
*/
@Deprecated
public DefaultServiceInstance(String serviceId, String host, int port,
boolean secure) {
public DefaultServiceInstance(String serviceId, String host, int port, boolean secure) {
this(serviceId, host, port, secure, new LinkedHashMap<>());
}
@@ -105,8 +103,7 @@ public class DefaultServiceInstance implements ServiceInstance {
*/
public static URI getUri(ServiceInstance instance) {
String scheme = (instance.isSecure()) ? "https" : "http";
String uri = String.format("%s://%s:%s", scheme, instance.getHost(),
instance.getPort());
String uri = String.format("%s://%s:%s", scheme, instance.getHost(), instance.getPort());
return URI.create(uri);
}
@@ -147,10 +144,9 @@ public class DefaultServiceInstance implements ServiceInstance {
@Override
public String toString() {
return "DefaultServiceInstance{" + "instanceId='" + this.instanceId + '\''
+ ", serviceId='" + this.serviceId + '\'' + ", host='" + this.host + '\''
+ ", port=" + this.port + ", secure=" + this.secure + ", metadata="
+ this.metadata + '}';
return "DefaultServiceInstance{" + "instanceId='" + this.instanceId + '\'' + ", serviceId='" + this.serviceId
+ '\'' + ", host='" + this.host + '\'' + ", port=" + this.port + ", secure=" + this.secure
+ ", metadata=" + this.metadata + '}';
}
@Override
@@ -162,17 +158,14 @@ public class DefaultServiceInstance implements ServiceInstance {
return false;
}
DefaultServiceInstance that = (DefaultServiceInstance) o;
return this.port == that.port && this.secure == that.secure
&& Objects.equals(this.instanceId, that.instanceId)
&& Objects.equals(this.serviceId, that.serviceId)
&& Objects.equals(this.host, that.host)
return this.port == that.port && this.secure == that.secure && Objects.equals(this.instanceId, that.instanceId)
&& Objects.equals(this.serviceId, that.serviceId) && Objects.equals(this.host, that.host)
&& Objects.equals(this.metadata, that.metadata);
}
@Override
public int hashCode() {
return Objects.hash(this.instanceId, this.serviceId, this.host, this.port,
this.secure, this.metadata);
return Objects.hash(this.instanceId, this.serviceId, this.host, this.port, this.secure, this.metadata);
}
}

View File

@@ -34,8 +34,7 @@ import org.springframework.core.env.MapPropertySource;
/**
* @author Spencer Gibb
*/
public class HostInfoEnvironmentPostProcessor
implements EnvironmentPostProcessor, Ordered {
public class HostInfoEnvironmentPostProcessor implements EnvironmentPostProcessor, Ordered {
// Before ConfigFileApplicationListener
private int order = ConfigFileApplicationListener.DEFAULT_ORDER - 1;
@@ -46,22 +45,19 @@ public class HostInfoEnvironmentPostProcessor
}
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment,
SpringApplication application) {
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
InetUtils.HostInfo hostInfo = getFirstNonLoopbackHostInfo(environment);
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
map.put("spring.cloud.client.hostname", hostInfo.getHostname());
map.put("spring.cloud.client.ip-address", hostInfo.getIpAddress());
MapPropertySource propertySource = new MapPropertySource(
"springCloudClientHostInfo", map);
MapPropertySource propertySource = new MapPropertySource("springCloudClientHostInfo", map);
environment.getPropertySources().addLast(propertySource);
}
private HostInfo getFirstNonLoopbackHostInfo(ConfigurableEnvironment environment) {
InetUtilsProperties target = new InetUtilsProperties();
ConfigurationPropertySources.attach(environment);
Binder.get(environment).bind(InetUtilsProperties.PREFIX,
Bindable.ofInstance(target));
Binder.get(environment).bind(InetUtilsProperties.PREFIX, Bindable.ofInstance(target));
try (InetUtils utils = new InetUtils(target)) {
return utils.findFirstNonLoopbackHostInfo();
}

View File

@@ -52,8 +52,7 @@ public class ReactiveCommonsClientAutoConfiguration {
protected static class ReactiveDiscoveryLoadBalancerConfiguration {
@Bean
@ConditionalOnProperty(
value = "spring.cloud.discovery.client.composite-indicator.enabled",
@ConditionalOnProperty(value = "spring.cloud.discovery.client.composite-indicator.enabled",
matchIfMissing = true)
@ConditionalOnBean({ ReactiveDiscoveryHealthIndicator.class })
public ReactiveDiscoveryCompositeHealthContributor reactiveDiscoveryClients(
@@ -63,8 +62,7 @@ public class ReactiveCommonsClientAutoConfiguration {
@Bean
public HasFeatures reactiveCommonsFeatures() {
return HasFeatures.abstractFeatures(ReactiveDiscoveryClient.class,
ReactiveLoadBalancer.class);
return HasFeatures.abstractFeatures(ReactiveDiscoveryClient.class, ReactiveLoadBalancer.class);
}
}

View File

@@ -82,10 +82,8 @@ public class FeaturesEndpoint implements ApplicationContextAware {
private void addFeature(Features features, NamedFeature feature) {
Class<?> type = feature.getType();
features.getEnabled()
.add(new Feature(feature.getName(), type.getCanonicalName(),
type.getPackage().getImplementationVersion(),
type.getPackage().getImplementationVendor()));
features.getEnabled().add(new Feature(feature.getName(), type.getCanonicalName(),
type.getPackage().getImplementationVersion(), type.getPackage().getImplementationVendor()));
}
static class Features {
@@ -139,9 +137,8 @@ public class FeaturesEndpoint implements ApplicationContextAware {
@Override
public String toString() {
return "Feature{" + "type='" + this.type + '\'' + ", name='" + this.name
+ '\'' + ", version='" + this.version + '\'' + ", vendor='"
+ this.vendor + '\'' + '}';
return "Feature{" + "type='" + this.type + '\'' + ", name='" + this.name + '\'' + ", version='"
+ this.version + '\'' + ", vendor='" + this.vendor + '\'' + '}';
}
@Override
@@ -155,20 +152,16 @@ public class FeaturesEndpoint implements ApplicationContextAware {
Feature feature = (Feature) o;
if (this.type != null ? !this.type.equals(feature.type)
: feature.type != null) {
if (this.type != null ? !this.type.equals(feature.type) : feature.type != null) {
return false;
}
if (this.name != null ? !this.name.equals(feature.name)
: feature.name != null) {
if (this.name != null ? !this.name.equals(feature.name) : feature.name != null) {
return false;
}
if (this.version != null ? !this.version.equals(feature.version)
: feature.version != null) {
if (this.version != null ? !this.version.equals(feature.version) : feature.version != null) {
return false;
}
return this.vendor != null ? this.vendor.equals(feature.vendor)
: feature.vendor == null;
return this.vendor != null ? this.vendor.equals(feature.vendor) : feature.vendor == null;
}
@Override

View File

@@ -30,30 +30,25 @@ public class HasFeatures {
private final List<NamedFeature> namedFeatures = new ArrayList<>();
public HasFeatures(List<Class<?>> abstractFeatures,
List<NamedFeature> namedFeatures) {
public HasFeatures(List<Class<?>> abstractFeatures, List<NamedFeature> namedFeatures) {
this.abstractFeatures.addAll(abstractFeatures);
this.namedFeatures.addAll(namedFeatures);
}
public static HasFeatures abstractFeatures(Class<?>... abstractFeatures) {
return new HasFeatures(Arrays.asList(abstractFeatures),
Collections.<NamedFeature>emptyList());
return new HasFeatures(Arrays.asList(abstractFeatures), Collections.<NamedFeature>emptyList());
}
public static HasFeatures namedFeatures(NamedFeature... namedFeatures) {
return new HasFeatures(Collections.<Class<?>>emptyList(),
Arrays.asList(namedFeatures));
return new HasFeatures(Collections.<Class<?>>emptyList(), Arrays.asList(namedFeatures));
}
public static HasFeatures namedFeature(String name, Class<?> type) {
return namedFeatures(new NamedFeature(name, type));
}
public static HasFeatures namedFeatures(String name1, Class<?> type1, String name2,
Class<?> type2) {
return namedFeatures(new NamedFeature(name1, type1),
new NamedFeature(name2, type2));
public static HasFeatures namedFeatures(String name1, Class<?> type1, String name2, Class<?> type2) {
return namedFeatures(new NamedFeature(name1, type1), new NamedFeature(name2, type2));
}
public List<Class<?>> getAbstractFeatures() {

View File

@@ -39,8 +39,7 @@ public interface Customizer<TOCUSTOMIZE> {
* @param <K> the type of the identifier of the target
* @return a wrapped customizer
*/
static <T, K> Customizer<T> once(Customizer<T> customizer,
Function<? super T, ? extends K> keyMapper) {
static <T, K> Customizer<T> once(Customizer<T> customizer, Function<? super T, ? extends K> keyMapper) {
final ConcurrentMap<K, Boolean> customized = new ConcurrentHashMap<>();
return t -> {
final K key = keyMapper.apply(t);

View File

@@ -26,13 +26,11 @@ import org.springframework.core.annotation.Order;
* @author Spencer Gibb
*/
@Order(Ordered.LOWEST_PRECEDENCE - 100)
public class EnableCircuitBreakerImportSelector
extends SpringFactoryImportSelector<EnableCircuitBreaker> {
public class EnableCircuitBreakerImportSelector extends SpringFactoryImportSelector<EnableCircuitBreaker> {
@Override
protected boolean isEnabled() {
return getEnvironment().getProperty("spring.cloud.circuit.breaker.enabled",
Boolean.class, Boolean.TRUE);
return getEnvironment().getProperty("spring.cloud.circuit.breaker.enabled", Boolean.class, Boolean.TRUE);
}
}

View File

@@ -34,22 +34,20 @@ import org.springframework.core.type.AnnotationMetadata;
* @author Spencer Gibb
*/
@Order(Ordered.LOWEST_PRECEDENCE - 100)
public class EnableDiscoveryClientImportSelector
extends SpringFactoryImportSelector<EnableDiscoveryClient> {
public class EnableDiscoveryClientImportSelector extends SpringFactoryImportSelector<EnableDiscoveryClient> {
@Override
public String[] selectImports(AnnotationMetadata metadata) {
String[] imports = super.selectImports(metadata);
AnnotationAttributes attributes = AnnotationAttributes.fromMap(
metadata.getAnnotationAttributes(getAnnotationClass().getName(), true));
AnnotationAttributes attributes = AnnotationAttributes
.fromMap(metadata.getAnnotationAttributes(getAnnotationClass().getName(), true));
boolean autoRegister = attributes.getBoolean("autoRegister");
if (autoRegister) {
List<String> importsList = new ArrayList<>(Arrays.asList(imports));
importsList.add(
"org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration");
importsList.add("org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration");
imports = importsList.toArray(new String[0]);
}
else {
@@ -58,8 +56,7 @@ public class EnableDiscoveryClientImportSelector
ConfigurableEnvironment configEnv = (ConfigurableEnvironment) env;
LinkedHashMap<String, Object> map = new LinkedHashMap<>();
map.put("spring.cloud.service-registry.auto-registration.enabled", false);
MapPropertySource propertySource = new MapPropertySource(
"springCloudDiscoveryClient", map);
MapPropertySource propertySource = new MapPropertySource("springCloudDiscoveryClient", map);
configEnv.getPropertySources().addLast(propertySource);
}
@@ -70,8 +67,7 @@ public class EnableDiscoveryClientImportSelector
@Override
protected boolean isEnabled() {
return getEnvironment().getProperty("spring.cloud.discovery.enabled",
Boolean.class, Boolean.TRUE);
return getEnvironment().getProperty("spring.cloud.discovery.enabled", Boolean.class, Boolean.TRUE);
}
@Override

View File

@@ -33,8 +33,7 @@ public final class ManagementServerPortUtils {
static final boolean hasActuator;
static {
boolean hasEndpointClass = hasClass(
"org.springframework.boot.actuate.endpoint.annotation.Endpoint");
boolean hasEndpointClass = hasClass("org.springframework.boot.actuate.endpoint.annotation.Endpoint");
boolean hasManagementServerPropertiesClass = hasClass(
"org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties");
hasActuator = hasEndpointClass && hasManagementServerPropertiesClass;
@@ -77,8 +76,7 @@ public final class ManagementServerPortUtils {
return null;
}
try {
ManagementServerProperties properties = beanFactory
.getBean(ManagementServerProperties.class);
ManagementServerProperties properties = beanFactory.getBean(ManagementServerProperties.class);
return properties.getPort();
}
catch (NoSuchBeanDefinitionException ex) {
@@ -123,8 +121,7 @@ public final class ManagementServerPortUtils {
ManagementServerProperties managementServerProperties;
try {
managementServerProperties = beanFactory
.getBean(ManagementServerProperties.class);
managementServerProperties = beanFactory.getBean(ManagementServerProperties.class);
}
catch (NoSuchBeanDefinitionException ex) {
managementServerProperties = new ManagementServerProperties();
@@ -138,10 +135,8 @@ public final class ManagementServerPortUtils {
// Current context is not a webapp
return DIFFERENT;
}
return ((port == null)
|| (serverProperties.getPort() == null && port.equals(8080))
|| (port != 0 && port.equals(serverProperties.getPort())) ? SAME
: DIFFERENT);
return ((port == null) || (serverProperties.getPort() == null && port.equals(8080))
|| (port != 0 && port.equals(serverProperties.getPort())) ? SAME : DIFFERENT);
}
}

View File

@@ -37,8 +37,7 @@ public class CompositeDiscoveryClientAutoConfiguration {
@Bean
@Primary
public CompositeDiscoveryClient compositeDiscoveryClient(
List<DiscoveryClient> discoveryClients) {
public CompositeDiscoveryClient compositeDiscoveryClient(List<DiscoveryClient> discoveryClients) {
return new CompositeDiscoveryClient(discoveryClients);
}

View File

@@ -36,8 +36,7 @@ public class ReactiveCompositeDiscoveryClient implements ReactiveDiscoveryClient
private final List<ReactiveDiscoveryClient> discoveryClients;
public ReactiveCompositeDiscoveryClient(
List<ReactiveDiscoveryClient> discoveryClients) {
public ReactiveCompositeDiscoveryClient(List<ReactiveDiscoveryClient> discoveryClients) {
AnnotationAwareOrderComparator.sort(discoveryClients);
this.discoveryClients = discoveryClients;
}
@@ -64,8 +63,7 @@ public class ReactiveCompositeDiscoveryClient implements ReactiveDiscoveryClient
if (discoveryClients == null || discoveryClients.isEmpty()) {
return Flux.empty();
}
return Flux.fromIterable(discoveryClients)
.flatMap(ReactiveDiscoveryClient::getServices);
return Flux.fromIterable(discoveryClients).flatMap(ReactiveDiscoveryClient::getServices);
}
List<ReactiveDiscoveryClient> getDiscoveryClients() {

View File

@@ -33,8 +33,8 @@ import org.springframework.core.Ordered;
/**
* @author Spencer Gibb
*/
public class DiscoveryClientHealthIndicator implements DiscoveryHealthIndicator, Ordered,
ApplicationListener<InstanceRegisteredEvent<?>> {
public class DiscoveryClientHealthIndicator
implements DiscoveryHealthIndicator, Ordered, ApplicationListener<InstanceRegisteredEvent<?>> {
private final ObjectProvider<DiscoveryClient> discoveryClient;
@@ -67,10 +67,8 @@ public class DiscoveryClientHealthIndicator implements DiscoveryHealthIndicator,
try {
DiscoveryClient client = this.discoveryClient.getIfAvailable();
List<String> services = client.getServices();
String description = (this.properties.isIncludeDescription())
? client.description() : "";
builder.status(new Status("UP", description)).withDetail("services",
services);
String description = (this.properties.isIncludeDescription()) ? client.description() : "";
builder.status(new Status("UP", description)).withDetail("services", services);
}
catch (Exception e) {
this.log.error("Error", e);
@@ -78,8 +76,7 @@ public class DiscoveryClientHealthIndicator implements DiscoveryHealthIndicator,
}
}
else {
builder.status(new Status(Status.UNKNOWN.getCode(),
"Discovery Client not initialized"));
builder.status(new Status(Status.UNKNOWN.getCode(), "Discovery Client not initialized"));
}
return builder.build();
}

View File

@@ -46,8 +46,7 @@ public class DiscoveryClientHealthIndicatorProperties {
@Override
public String toString() {
final StringBuffer sb = new StringBuffer(
"DiscoveryClientHealthIndicatorProperties{");
final StringBuffer sb = new StringBuffer("DiscoveryClientHealthIndicatorProperties{");
sb.append("enabled=").append(this.enabled);
sb.append(", includeDescription=").append(this.includeDescription);
sb.append('}');

View File

@@ -39,11 +39,10 @@ public class DiscoveryCompositeHealthContributor implements CompositeHealthContr
private Map<String, DiscoveryHealthIndicator> indicators;
public DiscoveryCompositeHealthContributor(
Collection<DiscoveryHealthIndicator> indicators) {
public DiscoveryCompositeHealthContributor(Collection<DiscoveryHealthIndicator> indicators) {
Assert.notNull(indicators, "'indicators' must not be null");
this.indicators = indicators.stream().collect(
Collectors.toMap(DiscoveryHealthIndicator::getName, Function.identity()));
this.indicators = indicators.stream()
.collect(Collectors.toMap(DiscoveryHealthIndicator::getName, Function.identity()));
}
@Override
@@ -56,8 +55,7 @@ public class DiscoveryCompositeHealthContributor implements CompositeHealthContr
return this.indicators.values().stream().map(this::asNamedContributor).iterator();
}
private NamedContributor<HealthContributor> asNamedContributor(
DiscoveryHealthIndicator indicator) {
private NamedContributor<HealthContributor> asNamedContributor(DiscoveryHealthIndicator indicator) {
return new NamedContributor<HealthContributor>() {
@Override

View File

@@ -39,15 +39,13 @@ import static java.util.Collections.emptyList;
* @author Tim Ysewyn
*/
public class ReactiveDiscoveryClientHealthIndicator
implements ReactiveDiscoveryHealthIndicator, Ordered,
ApplicationListener<InstanceRegisteredEvent<?>> {
implements ReactiveDiscoveryHealthIndicator, Ordered, ApplicationListener<InstanceRegisteredEvent<?>> {
private final ReactiveDiscoveryClient discoveryClient;
private final DiscoveryClientHealthIndicatorProperties properties;
private final Log log = LogFactory
.getLog(ReactiveDiscoveryClientHealthIndicator.class);
private final Log log = LogFactory.getLog(ReactiveDiscoveryClientHealthIndicator.class);
private AtomicBoolean discoveryInitialized = new AtomicBoolean(false);
@@ -72,8 +70,8 @@ public class ReactiveDiscoveryClientHealthIndicator
return doHealthCheck();
}
else {
return Mono.just(Health.status(new Status(Status.UNKNOWN.getCode(),
"Discovery Client not initialized")).build());
return Mono.just(
Health.status(new Status(Status.UNKNOWN.getCode(), "Discovery Client not initialized")).build());
}
}

View File

@@ -33,16 +33,14 @@ import org.springframework.util.Assert;
*
* @author Tim Ysewyn
*/
public class ReactiveDiscoveryCompositeHealthContributor
implements CompositeReactiveHealthContributor {
public class ReactiveDiscoveryCompositeHealthContributor implements CompositeReactiveHealthContributor {
private Map<String, ReactiveDiscoveryHealthIndicator> indicators;
public ReactiveDiscoveryCompositeHealthContributor(
Collection<ReactiveDiscoveryHealthIndicator> indicators) {
public ReactiveDiscoveryCompositeHealthContributor(Collection<ReactiveDiscoveryHealthIndicator> indicators) {
Assert.notNull(indicators, "'indicators' must not be null");
this.indicators = indicators.stream().collect(Collectors
.toMap(ReactiveDiscoveryHealthIndicator::getName, Function.identity()));
this.indicators = indicators.stream()
.collect(Collectors.toMap(ReactiveDiscoveryHealthIndicator::getName, Function.identity()));
}
@Override
@@ -55,8 +53,7 @@ public class ReactiveDiscoveryCompositeHealthContributor
return indicators.values().stream().map(this::asNamedContributor).iterator();
}
private NamedContributor<ReactiveHealthContributor> asNamedContributor(
ReactiveDiscoveryHealthIndicator indicator) {
private NamedContributor<ReactiveHealthContributor> asNamedContributor(ReactiveDiscoveryHealthIndicator indicator) {
return new NamedContributor<ReactiveHealthContributor>() {
@Override
@@ -72,8 +69,7 @@ public class ReactiveDiscoveryCompositeHealthContributor
};
}
private ReactiveHealthIndicator asHealthIndicator(
ReactiveDiscoveryHealthIndicator indicator) {
private ReactiveHealthIndicator asHealthIndicator(ReactiveDiscoveryHealthIndicator indicator) {
return (indicator != null) ? indicator::health : null;
}

View File

@@ -49,8 +49,7 @@ import org.springframework.core.env.Environment;
@EnableConfigurationProperties
@ConditionalOnMissingBean(DiscoveryClient.class)
@Deprecated
public class NoopDiscoveryClientAutoConfiguration
implements ApplicationListener<ContextRefreshedEvent> {
public class NoopDiscoveryClientAutoConfiguration implements ApplicationListener<ContextRefreshedEvent> {
private final Log log = LogFactory.getLog(NoopDiscoveryClientAutoConfiguration.class);
@@ -79,8 +78,7 @@ public class NoopDiscoveryClientAutoConfiguration
}
int port = findPort();
this.serviceInstance = new DefaultServiceInstance(
this.environment.getProperty("spring.application.name", "application"),
host, port, false);
this.environment.getProperty("spring.application.name", "application"), host, port, false);
}
private int findPort() {
@@ -97,8 +95,7 @@ public class NoopDiscoveryClientAutoConfiguration
else {
// Apparently spring-web is not on the classpath
if (this.log.isDebugEnabled()) {
this.log.debug(
"Could not locate port in embedded container (spring-web not available)");
this.log.debug("Could not locate port in embedded container (spring-web not available)");
}
}
return port;
@@ -121,8 +118,7 @@ public class NoopDiscoveryClientAutoConfiguration
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(name = {
"org.springframework.web.context.support.GenericWebApplicationContext",
@ConditionalOnClass(name = { "org.springframework.web.context.support.GenericWebApplicationContext",
"org.springframework.boot.context.embedded.EmbeddedWebApplicationContext" })
protected static class Boot15PortFinderConfiguration {

View File

@@ -46,8 +46,8 @@ public class SimpleDiscoveryClient implements DiscoveryClient {
@Override
public List<ServiceInstance> getInstances(String serviceId) {
List<ServiceInstance> serviceInstances = new ArrayList<>();
List<SimpleServiceInstance> serviceInstanceForService = this.simpleDiscoveryProperties
.getInstances().get(serviceId);
List<SimpleServiceInstance> serviceInstanceForService = this.simpleDiscoveryProperties.getInstances()
.get(serviceId);
if (serviceInstanceForService != null) {
serviceInstances.addAll(serviceInstanceForService);

View File

@@ -39,10 +39,8 @@ import org.springframework.core.annotation.Order;
* @author Biju Kunjummen
*/
@Configuration(proxyBeanMethods = false)
@AutoConfigureBefore({ NoopDiscoveryClientAutoConfiguration.class,
CommonsClientAutoConfiguration.class })
public class SimpleDiscoveryClientAutoConfiguration
implements ApplicationListener<WebServerInitializedEvent> {
@AutoConfigureBefore({ NoopDiscoveryClientAutoConfiguration.class, CommonsClientAutoConfiguration.class })
public class SimpleDiscoveryClientAutoConfiguration implements ApplicationListener<WebServerInitializedEvent> {
private ServerProperties server;
@@ -67,10 +65,8 @@ public class SimpleDiscoveryClientAutoConfiguration
public SimpleDiscoveryProperties simpleDiscoveryProperties(
@Value("${spring.application.name:application}") String serviceId) {
simple.getLocal().setServiceId(serviceId);
simple.getLocal()
.setUri(URI.create(
"http://" + this.inet.findFirstNonLoopbackHostInfo().getHostname()
+ ":" + findPort()));
simple.getLocal().setUri(
URI.create("http://" + this.inet.findFirstNonLoopbackHostInfo().getHostname() + ":" + findPort()));
return simple;
}
@@ -84,8 +80,7 @@ public class SimpleDiscoveryClientAutoConfiguration
if (port > 0) {
return port;
}
if (this.server != null && this.server.getPort() != null
&& this.server.getPort() > 0) {
if (this.server != null && this.server.getPort() != null && this.server.getPort() > 0) {
return this.server.getPort();
}
return 8080;
@@ -95,10 +90,8 @@ public class SimpleDiscoveryClientAutoConfiguration
public void onApplicationEvent(WebServerInitializedEvent webServerInitializedEvent) {
this.port = webServerInitializedEvent.getWebServer().getPort();
if (this.port > 0) {
simple.getLocal()
.setUri(URI.create("http://"
+ this.inet.findFirstNonLoopbackHostInfo().getHostname() + ":"
+ this.port));
simple.getLocal().setUri(
URI.create("http://" + this.inet.findFirstNonLoopbackHostInfo().getHostname() + ":" + this.port));
}
}

View File

@@ -31,8 +31,7 @@ public class SimpleReactiveDiscoveryClient implements ReactiveDiscoveryClient {
private SimpleReactiveDiscoveryProperties simpleDiscoveryProperties;
public SimpleReactiveDiscoveryClient(
SimpleReactiveDiscoveryProperties simpleDiscoveryProperties) {
public SimpleReactiveDiscoveryClient(SimpleReactiveDiscoveryProperties simpleDiscoveryProperties) {
this.simpleDiscoveryProperties = simpleDiscoveryProperties;
}

View File

@@ -52,8 +52,7 @@ import org.springframework.core.annotation.Order;
@EnableConfigurationProperties(DiscoveryClientHealthIndicatorProperties.class)
@AutoConfigureBefore(ReactiveCommonsClientAutoConfiguration.class)
@AutoConfigureAfter(ReactiveCompositeDiscoveryClientAutoConfiguration.class)
public class SimpleReactiveDiscoveryClientAutoConfiguration
implements ApplicationListener<WebServerInitializedEvent> {
public class SimpleReactiveDiscoveryClientAutoConfiguration implements ApplicationListener<WebServerInitializedEvent> {
@Autowired(required = false)
private ServerProperties server;
@@ -71,8 +70,8 @@ public class SimpleReactiveDiscoveryClientAutoConfiguration
@Bean
public SimpleReactiveDiscoveryProperties simpleReactiveDiscoveryProperties() {
simple.getLocal().setServiceId(serviceId);
simple.getLocal().setUri(URI.create("http://"
+ inet.findFirstNonLoopbackHostInfo().getHostname() + ":" + findPort()));
simple.getLocal()
.setUri(URI.create("http://" + inet.findFirstNonLoopbackHostInfo().getHostname() + ":" + findPort()));
return simple;
}
@@ -96,8 +95,8 @@ public class SimpleReactiveDiscoveryClientAutoConfiguration
public void onApplicationEvent(WebServerInitializedEvent webServerInitializedEvent) {
port = webServerInitializedEvent.getWebServer().getPort();
if (port > 0) {
simple.getLocal().setUri(URI.create("http://"
+ inet.findFirstNonLoopbackHostInfo().getHostname() + ":" + port));
simple.getLocal()
.setUri(URI.create("http://" + inet.findFirstNonLoopbackHostInfo().getHostname() + ":" + port));
}
}
@@ -110,8 +109,7 @@ public class SimpleReactiveDiscoveryClientAutoConfiguration
public ReactiveDiscoveryClientHealthIndicator simpleReactiveDiscoveryClientHealthIndicator(
DiscoveryClientHealthIndicatorProperties properties,
SimpleReactiveDiscoveryClient simpleReactiveDiscoveryClient) {
return new ReactiveDiscoveryClientHealthIndicator(
simpleReactiveDiscoveryClient, properties);
return new ReactiveDiscoveryClientHealthIndicator(simpleReactiveDiscoveryClient, properties);
}
}

View File

@@ -52,8 +52,7 @@ public class CloudHypermediaAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public RemoteResourceRefresher discoveredResourceRefresher() {
return new RemoteResourceRefresher(this.discoveredResources,
this.properties.getRefresh().getFixedDelay(),
return new RemoteResourceRefresher(this.discoveredResources, this.properties.getRefresh().getFixedDelay(),
this.properties.getRefresh().getInitialDelay());
}

View File

@@ -48,8 +48,7 @@ public class DiscoveredResource implements RemoteResource {
private Link link = null;
public DiscoveredResource(ServiceInstanceProvider provider,
TraversalDefinition traversal) {
public DiscoveredResource(ServiceInstanceProvider provider, TraversalDefinition traversal) {
this.provider = provider;
this.traversal = traversal;
}
@@ -73,8 +72,7 @@ public class DiscoveredResource implements RemoteResource {
* {@link RestTemplate} in that case.
*/
public void setRestOperations(RestOperations restOperations) {
this.restOperations = restOperations == null ? new RestTemplate()
: restOperations;
this.restOperations = restOperations == null ? new RestTemplate() : restOperations;
}
@Override
@@ -133,8 +131,7 @@ public class DiscoveredResource implements RemoteResource {
URI uri = service.getUri();
String serviceId = service.getServiceId();
this.log.debug("Discovered {} system at {}. Discovering resource…", serviceId,
uri);
this.log.debug("Discovered {} system at {}. Discovering resource…", serviceId, uri);
Traverson traverson = new Traverson(uri, MediaTypes.HAL_JSON);
Link link = this.traversal.buildTraversal(traverson).asTemplatedLink();

View File

@@ -36,8 +36,7 @@ public class RemoteResourceRefresher extends ContextLifecycleScheduledTaskRegist
private final int initialDelay;
public RemoteResourceRefresher(List<RemoteResource> discoveredResources,
int fixedDelay, int initialDelay) {
public RemoteResourceRefresher(List<RemoteResource> discoveredResources, int fixedDelay, int initialDelay) {
this.discoveredResources = discoveredResources;
this.fixedDelay = fixedDelay;
this.initialDelay = initialDelay;

View File

@@ -64,8 +64,7 @@ public class AsyncLoadBalancerAutoConfiguration {
static class LoadBalancerInterceptorConfig {
@Bean
public AsyncLoadBalancerInterceptor asyncLoadBalancerInterceptor(
LoadBalancerClient loadBalancerClient) {
public AsyncLoadBalancerInterceptor asyncLoadBalancerInterceptor(LoadBalancerClient loadBalancerClient) {
return new AsyncLoadBalancerInterceptor(loadBalancerClient);
}
@@ -73,8 +72,7 @@ public class AsyncLoadBalancerAutoConfiguration {
public AsyncRestTemplateCustomizer asyncRestTemplateCustomizer(
final AsyncLoadBalancerInterceptor loadBalancerInterceptor) {
return restTemplate -> {
List<AsyncClientHttpRequestInterceptor> list = new ArrayList<>(
restTemplate.getInterceptors());
List<AsyncClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
list.add(loadBalancerInterceptor);
restTemplate.setInterceptors(list);
};

View File

@@ -38,22 +38,19 @@ public class AsyncLoadBalancerInterceptor implements AsyncClientHttpRequestInter
}
@Override
public ListenableFuture<ClientHttpResponse> intercept(final HttpRequest request,
final byte[] body, final AsyncClientHttpRequestExecution execution)
throws IOException {
public ListenableFuture<ClientHttpResponse> intercept(final HttpRequest request, final byte[] body,
final AsyncClientHttpRequestExecution execution) throws IOException {
final URI originalUri = request.getURI();
String serviceName = originalUri.getHost();
return this.loadBalancer.execute(serviceName,
new LoadBalancerRequest<ListenableFuture<ClientHttpResponse>>() {
@Override
public ListenableFuture<ClientHttpResponse> apply(
final ServiceInstance instance) throws Exception {
HttpRequest serviceRequest = new ServiceRequestWrapper(request,
instance, AsyncLoadBalancerInterceptor.this.loadBalancer);
return execution.executeAsync(serviceRequest, body);
}
return this.loadBalancer.execute(serviceName, new LoadBalancerRequest<ListenableFuture<ClientHttpResponse>>() {
@Override
public ListenableFuture<ClientHttpResponse> apply(final ServiceInstance instance) throws Exception {
HttpRequest serviceRequest = new ServiceRequestWrapper(request, instance,
AsyncLoadBalancerInterceptor.this.loadBalancer);
return execution.executeAsync(serviceRequest, body);
}
});
});
}
}

View File

@@ -41,8 +41,8 @@ public class ClientHttpResponseStatusCodeException extends RetryableStatusCodeEx
* @throws IOException Thrown if the {@link ClientHttpResponse} response code cannot
* be retrieved.
*/
public ClientHttpResponseStatusCodeException(String serviceId,
ClientHttpResponse response, byte[] body) throws IOException {
public ClientHttpResponseStatusCodeException(String serviceId, ClientHttpResponse response, byte[] body)
throws IOException {
super(serviceId, response.getRawStatusCode(), response, null);
this.response = new ClientHttpResponseWrapper(response, body);
}

View File

@@ -43,18 +43,15 @@ public class CompletionContext<RES, T> {
this(status, null, response, null);
}
public CompletionContext(Status status, Throwable throwable,
Response<T> loadBalancerResponse) {
public CompletionContext(Status status, Throwable throwable, Response<T> loadBalancerResponse) {
this(status, throwable, loadBalancerResponse, null);
}
public CompletionContext(Status status, Response<T> loadBalancerResponse,
RES clientResponse) {
public CompletionContext(Status status, Response<T> loadBalancerResponse, RES clientResponse) {
this(status, null, loadBalancerResponse, clientResponse);
}
public CompletionContext(Status status, Throwable throwable,
Response<T> loadBalancerResponse, RES clientResponse) {
public CompletionContext(Status status, Throwable throwable, Response<T> loadBalancerResponse, RES clientResponse) {
this.status = status;
this.throwable = throwable;
this.loadBalancerResponse = loadBalancerResponse;

View File

@@ -56,8 +56,7 @@ public class InterceptorRetryPolicy implements RetryPolicy {
LoadBalancedRetryContext lbContext = (LoadBalancedRetryContext) context;
if (lbContext.getRetryCount() == 0 && lbContext.getServiceInstance() == null) {
// We haven't even tried to make the request yet so return true so we do
lbContext.setServiceInstance(
this.serviceInstanceChooser.choose(this.serviceName));
lbContext.setServiceInstance(this.serviceInstanceChooser.choose(this.serviceName));
return true;
}
return this.policy.canRetryNextServer(lbContext);

View File

@@ -33,8 +33,7 @@ public interface LoadBalancedRetryFactory {
* @param serviceInstanceChooser Used to get the next server from a load balancer.
* @return A retry policy for the service.
*/
default LoadBalancedRetryPolicy createRetryPolicy(String service,
ServiceInstanceChooser serviceInstanceChooser) {
default LoadBalancedRetryPolicy createRetryPolicy(String service, ServiceInstanceChooser serviceInstanceChooser) {
return null;
}

View File

@@ -72,8 +72,7 @@ public class LoadBalancerAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public LoadBalancerRequestFactory loadBalancerRequestFactory(
LoadBalancerClient loadBalancerClient) {
public LoadBalancerRequestFactory loadBalancerRequestFactory(LoadBalancerClient loadBalancerClient) {
return new LoadBalancerRequestFactory(loadBalancerClient, this.transformers);
}
@@ -82,19 +81,16 @@ public class LoadBalancerAutoConfiguration {
static class LoadBalancerInterceptorConfig {
@Bean
public LoadBalancerInterceptor loadBalancerInterceptor(
LoadBalancerClient loadBalancerClient,
public LoadBalancerInterceptor loadBalancerInterceptor(LoadBalancerClient loadBalancerClient,
LoadBalancerRequestFactory requestFactory) {
return new LoadBalancerInterceptor(loadBalancerClient, requestFactory);
}
@Bean
@ConditionalOnMissingBean
public RestTemplateCustomizer restTemplateCustomizer(
final LoadBalancerInterceptor loadBalancerInterceptor) {
public RestTemplateCustomizer restTemplateCustomizer(final LoadBalancerInterceptor loadBalancerInterceptor) {
return restTemplate -> {
List<ClientHttpRequestInterceptor> list = new ArrayList<>(
restTemplate.getInterceptors());
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
list.add(loadBalancerInterceptor);
restTemplate.setInterceptors(list);
};
@@ -128,16 +124,12 @@ public class LoadBalancerAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public RetryLoadBalancerInterceptor loadBalancerInterceptor(
LoadBalancerClient loadBalancerClient,
LoadBalancerRetryProperties retryProperties,
LoadBalancerRequestFactory requestFactory,
LoadBalancedRetryFactory loadBalancedRetryFactory,
LoadBalancerProperties properties,
public RetryLoadBalancerInterceptor loadBalancerInterceptor(LoadBalancerClient loadBalancerClient,
LoadBalancerRetryProperties retryProperties, LoadBalancerRequestFactory requestFactory,
LoadBalancedRetryFactory loadBalancedRetryFactory, LoadBalancerProperties properties,
ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory) {
return new RetryLoadBalancerInterceptor(loadBalancerClient, retryProperties,
requestFactory, loadBalancedRetryFactory, properties,
loadBalancerFactory);
return new RetryLoadBalancerInterceptor(loadBalancerClient, retryProperties, requestFactory,
loadBalancedRetryFactory, properties, loadBalancerFactory);
}
@Bean
@@ -145,8 +137,7 @@ public class LoadBalancerAutoConfiguration {
public RestTemplateCustomizer restTemplateCustomizer(
final RetryLoadBalancerInterceptor loadBalancerInterceptor) {
return restTemplate -> {
List<ClientHttpRequestInterceptor> list = new ArrayList<>(
restTemplate.getInterceptors());
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
list.add(loadBalancerInterceptor);
restTemplate.setInterceptors(list);
};

View File

@@ -53,8 +53,7 @@ public interface LoadBalancerClient extends ServiceInstanceChooser {
* @return The result of the LoadBalancerRequest callback on the selected
* ServiceInstance.
*/
<T> T execute(String serviceId, ServiceInstance serviceInstance,
LoadBalancerRequest<T> request) throws IOException;
<T> T execute(String serviceId, ServiceInstance serviceInstance, LoadBalancerRequest<T> request) throws IOException;
/**
* Creates a proper URI with a real host and port for systems to utilize. Some systems

View File

@@ -37,8 +37,7 @@ public class LoadBalancerInterceptor implements ClientHttpRequestInterceptor {
private LoadBalancerRequestFactory requestFactory;
public LoadBalancerInterceptor(LoadBalancerClient loadBalancer,
LoadBalancerRequestFactory requestFactory) {
public LoadBalancerInterceptor(LoadBalancerClient loadBalancer, LoadBalancerRequestFactory requestFactory) {
this.loadBalancer = loadBalancer;
this.requestFactory = requestFactory;
}
@@ -53,10 +52,8 @@ public class LoadBalancerInterceptor implements ClientHttpRequestInterceptor {
final ClientHttpRequestExecution execution) throws IOException {
final URI originalUri = request.getURI();
String serviceName = originalUri.getHost();
Assert.state(serviceName != null,
"Request URI does not contain a valid hostname: " + originalUri);
return this.loadBalancer.execute(serviceName,
this.requestFactory.createRequest(request, body, execution));
Assert.state(serviceName != null, "Request URI does not contain a valid hostname: " + originalUri);
return this.loadBalancer.execute(serviceName, this.requestFactory.createRequest(request, body, execution));
}
}

View File

@@ -34,8 +34,7 @@ public interface LoadBalancerLifecycle<RC, RES, T> {
* @param serverTypeClass The type of Server that the LoadBalancer retrieves
* @return <code>true</code> if the lifecycle should be used to process given classes
*/
default boolean supports(Class requestContextClass, Class responseClass,
Class serverTypeClass) {
default boolean supports(Class requestContextClass, Class responseClass, Class serverTypeClass) {
return true;
}

View File

@@ -36,14 +36,13 @@ public final class LoadBalancerLifecycleValidator {
@SuppressWarnings("rawtypes")
public static Set<LoadBalancerLifecycle> getSupportedLifecycleProcessors(
Map<String, LoadBalancerLifecycle> lifecycleProcessors,
Class requestContextClass, Class clientResponseClass, Class serverTypeClass) {
Map<String, LoadBalancerLifecycle> lifecycleProcessors, Class requestContextClass,
Class clientResponseClass, Class serverTypeClass) {
if (lifecycleProcessors == null) {
return new HashSet<>();
}
return lifecycleProcessors.values().stream()
.filter(lifecycle -> lifecycle.supports(requestContextClass,
clientResponseClass, serverTypeClass))
.filter(lifecycle -> lifecycle.supports(requestContextClass, clientResponseClass, serverTypeClass))
.collect(Collectors.toSet());
}

View File

@@ -46,16 +46,13 @@ public class LoadBalancerRequestFactory {
this.loadBalancer = loadBalancer;
}
public LoadBalancerRequest<ClientHttpResponse> createRequest(
final HttpRequest request, final byte[] body,
public LoadBalancerRequest<ClientHttpResponse> createRequest(final HttpRequest request, final byte[] body,
final ClientHttpRequestExecution execution) {
return instance -> {
HttpRequest serviceRequest = new ServiceRequestWrapper(request, instance,
this.loadBalancer);
HttpRequest serviceRequest = new ServiceRequestWrapper(request, instance, this.loadBalancer);
if (this.transformers != null) {
for (LoadBalancerRequestTransformer transformer : this.transformers) {
serviceRequest = transformer.transformRequest(serviceRequest,
instance);
serviceRequest = transformer.transformRequest(serviceRequest, instance);
}
}
return execution.execute(serviceRequest, body);

View File

@@ -53,12 +53,9 @@ public final class LoadBalancerUriTools {
// https://github.com/spring-cloud/spring-cloud-gateway/blob/master/spring-cloud-gateway-core/
// src/main/java/org/springframework/cloud/gateway/support/ServerWebExchangeUtils.java
private static boolean containsEncodedParts(URI uri) {
boolean encoded = (uri.getRawQuery() != null
&& uri.getRawQuery().contains(PERCENTAGE_SIGN))
|| (uri.getRawPath() != null
&& uri.getRawPath().contains(PERCENTAGE_SIGN))
|| (uri.getRawFragment() != null
&& uri.getRawFragment().contains(PERCENTAGE_SIGN));
boolean encoded = (uri.getRawQuery() != null && uri.getRawQuery().contains(PERCENTAGE_SIGN))
|| (uri.getRawPath() != null && uri.getRawPath().contains(PERCENTAGE_SIGN))
|| (uri.getRawFragment() != null && uri.getRawFragment().contains(PERCENTAGE_SIGN));
// Verify if it is really fully encoded. Treat partial encoded as unencoded.
if (encoded) {
try {
@@ -107,15 +104,12 @@ public final class LoadBalancerUriTools {
}
boolean encoded = containsEncodedParts(original);
return UriComponentsBuilder.fromUri(original).scheme(scheme).host(host).port(port)
.build(encoded).toUri();
return UriComponentsBuilder.fromUri(original).scheme(scheme).host(host).port(port).build(encoded).toUri();
}
private static String computeScheme(URI original, ServiceInstance serviceInstance) {
String originalOrDefault = Optional.ofNullable(original.getScheme())
.orElse(DEFAULT_SCHEME);
if (serviceInstance.isSecure()
&& INSECURE_SCHEME_MAPPINGS.containsKey(originalOrDefault)) {
String originalOrDefault = Optional.ofNullable(original.getScheme()).orElse(DEFAULT_SCHEME);
if (serviceInstance.isSecure() && INSECURE_SCHEME_MAPPINGS.containsKey(originalOrDefault)) {
return INSECURE_SCHEME_MAPPINGS.get(originalOrDefault);
}
return originalOrDefault;

View File

@@ -56,11 +56,9 @@ public class RetryLoadBalancerInterceptor implements ClientHttpRequestIntercepto
private final ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory;
public RetryLoadBalancerInterceptor(LoadBalancerClient loadBalancer,
LoadBalancerRetryProperties retryProperties,
LoadBalancerRequestFactory requestFactory,
LoadBalancedRetryFactory lbRetryFactory, LoadBalancerProperties properties,
ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory) {
public RetryLoadBalancerInterceptor(LoadBalancerClient loadBalancer, LoadBalancerRetryProperties retryProperties,
LoadBalancerRequestFactory requestFactory, LoadBalancedRetryFactory lbRetryFactory,
LoadBalancerProperties properties, ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory) {
this.loadBalancer = loadBalancer;
this.retryProperties = retryProperties;
this.requestFactory = requestFactory;
@@ -74,10 +72,8 @@ public class RetryLoadBalancerInterceptor implements ClientHttpRequestIntercepto
final ClientHttpRequestExecution execution) throws IOException {
final URI originalUri = request.getURI();
final String serviceName = originalUri.getHost();
Assert.state(serviceName != null,
"Request URI does not contain a valid hostname: " + originalUri);
final LoadBalancedRetryPolicy retryPolicy = lbRetryFactory
.createRetryPolicy(serviceName, loadBalancer);
Assert.state(serviceName != null, "Request URI does not contain a valid hostname: " + originalUri);
final LoadBalancedRetryPolicy retryPolicy = lbRetryFactory.createRetryPolicy(serviceName, loadBalancer);
RetryTemplate template = createRetryTemplate(serviceName, request, retryPolicy);
return template.execute(context -> {
ServiceInstance serviceInstance = null;
@@ -87,33 +83,27 @@ public class RetryLoadBalancerInterceptor implements ClientHttpRequestIntercepto
}
Set<LoadBalancerLifecycle> supportedLifecycleProcessors = LoadBalancerLifecycleValidator
.getSupportedLifecycleProcessors(
loadBalancerFactory.getInstances(serviceName,
LoadBalancerLifecycle.class),
HttpRequestContext.class, ClientHttpResponse.class,
ServiceInstance.class);
loadBalancerFactory.getInstances(serviceName, LoadBalancerLifecycle.class),
HttpRequestContext.class, ClientHttpResponse.class, ServiceInstance.class);
String hint = getHint(serviceName);
DefaultRequest<HttpRequestContext> lbRequest = new DefaultRequest<>(
new HttpRequestContext(request, hint));
supportedLifecycleProcessors
.forEach(lifecycle -> lifecycle.onStart(lbRequest));
DefaultRequest<HttpRequestContext> lbRequest = new DefaultRequest<>(new HttpRequestContext(request, hint));
supportedLifecycleProcessors.forEach(lifecycle -> lifecycle.onStart(lbRequest));
if (serviceInstance == null) {
serviceInstance = loadBalancer.choose(serviceName, lbRequest);
}
Response<ServiceInstance> lbResponse = new DefaultResponse(serviceInstance);
if (serviceInstance == null) {
supportedLifecycleProcessors.forEach(lifecycle -> lifecycle.onComplete(
new CompletionContext<ClientHttpResponse, ServiceInstance>(
supportedLifecycleProcessors.forEach(
lifecycle -> lifecycle.onComplete(new CompletionContext<ClientHttpResponse, ServiceInstance>(
CompletionContext.Status.DISCARD, lbResponse)));
}
ClientHttpResponse response = RetryLoadBalancerInterceptor.this.loadBalancer
.execute(serviceName, serviceInstance,
requestFactory.createRequest(request, body, execution));
ClientHttpResponse response = RetryLoadBalancerInterceptor.this.loadBalancer.execute(serviceName,
serviceInstance, requestFactory.createRequest(request, body, execution));
int statusCode = response.getRawStatusCode();
if (retryPolicy != null && retryPolicy.retryableStatusCode(statusCode)) {
byte[] bodyCopy = StreamUtils.copyToByteArray(response.getBody());
response.close();
throw new ClientHttpResponseStatusCodeException(serviceName, response,
bodyCopy);
throw new ClientHttpResponseStatusCodeException(serviceName, response, bodyCopy);
}
return response;
}, new LoadBalancedRecoveryCallback<ClientHttpResponse, ClientHttpResponse>() {
@@ -121,8 +111,7 @@ public class RetryLoadBalancerInterceptor implements ClientHttpRequestIntercepto
// LoadBalancedRecoveryCallback are
// the same. In most cases they would be different.
@Override
protected ClientHttpResponse createResponse(ClientHttpResponse response,
URI uri) {
protected ClientHttpResponse createResponse(ClientHttpResponse response, URI uri) {
return response;
}
});
@@ -132,16 +121,14 @@ public class RetryLoadBalancerInterceptor implements ClientHttpRequestIntercepto
LoadBalancedRetryPolicy retryPolicy) {
RetryTemplate template = new RetryTemplate();
BackOffPolicy backOffPolicy = lbRetryFactory.createBackOffPolicy(serviceName);
template.setBackOffPolicy(
backOffPolicy == null ? new NoBackOffPolicy() : backOffPolicy);
template.setBackOffPolicy(backOffPolicy == null ? new NoBackOffPolicy() : backOffPolicy);
template.setThrowLastExceptionOnExhausted(true);
RetryListener[] retryListeners = lbRetryFactory.createRetryListeners(serviceName);
if (retryListeners != null && retryListeners.length != 0) {
template.setListeners(retryListeners);
}
template.setRetryPolicy(!retryProperties.isEnabled() || retryPolicy == null
? new NeverRetryPolicy() : new InterceptorRetryPolicy(request,
retryPolicy, loadBalancer, serviceName));
template.setRetryPolicy(!retryProperties.isEnabled() || retryPolicy == null ? new NeverRetryPolicy()
: new InterceptorRetryPolicy(request, retryPolicy, loadBalancer, serviceName));
return template;
}

View File

@@ -32,8 +32,7 @@ public class RetryableStatusCodeException extends IOException {
private final URI uri;
public RetryableStatusCodeException(String serviceId, int statusCode, Object response,
URI uri) {
public RetryableStatusCodeException(String serviceId, int statusCode, Object response, URI uri) {
super(String.format(MESSAGE, serviceId, statusCode));
this.response = response;
this.uri = uri;

View File

@@ -31,8 +31,7 @@ public class ServiceRequestWrapper extends HttpRequestWrapper {
private final LoadBalancerClient loadBalancer;
public ServiceRequestWrapper(HttpRequest request, ServiceInstance instance,
LoadBalancerClient loadBalancer) {
public ServiceRequestWrapper(HttpRequest request, ServiceInstance instance, LoadBalancerClient loadBalancer) {
super(request);
this.instance = instance;
this.loadBalancer = loadBalancer;

View File

@@ -40,8 +40,7 @@ public class DeferringLoadBalancerExchangeFilterFunction<T extends ExchangeFilte
private T delegate;
public DeferringLoadBalancerExchangeFilterFunction(
ObjectProvider<T> exchangeFilterFunctionProvider) {
public DeferringLoadBalancerExchangeFilterFunction(ObjectProvider<T> exchangeFilterFunctionProvider) {
this.exchangeFilterFunctionProvider = exchangeFilterFunctionProvider;
}
@@ -56,8 +55,7 @@ public class DeferringLoadBalancerExchangeFilterFunction<T extends ExchangeFilte
if (delegate == null) {
delegate = exchangeFilterFunctionProvider.getIfAvailable();
if (delegate == null) {
throw new IllegalStateException(
"ReactorLoadBalancerExchangeFilterFunction not available.");
throw new IllegalStateException("ReactorLoadBalancerExchangeFilterFunction not available.");
}
}
}

View File

@@ -48,10 +48,8 @@ public class LoadBalancerBeanPostProcessorAutoConfiguration {
@Bean
public LoadBalancerWebClientBuilderBeanPostProcessor loadBalancerWebClientBuilderBeanPostProcessor(
DeferringLoadBalancerExchangeFilterFunction deferringExchangeFilterFunction,
ApplicationContext context) {
return new LoadBalancerWebClientBuilderBeanPostProcessor(
deferringExchangeFilterFunction, context);
DeferringLoadBalancerExchangeFilterFunction deferringExchangeFilterFunction, ApplicationContext context) {
return new LoadBalancerWebClientBuilderBeanPostProcessor(deferringExchangeFilterFunction, context);
}
@Configuration(proxyBeanMethods = false)
@@ -62,14 +60,12 @@ public class LoadBalancerBeanPostProcessorAutoConfiguration {
@Primary
DeferringLoadBalancerExchangeFilterFunction<ReactorLoadBalancerExchangeFilterFunction> reactorDeferringLoadBalancerExchangeFilterFunction(
ObjectProvider<ReactorLoadBalancerExchangeFilterFunction> exchangeFilterFunctionProvider) {
return new DeferringLoadBalancerExchangeFilterFunction<>(
exchangeFilterFunctionProvider);
return new DeferringLoadBalancerExchangeFilterFunction<>(exchangeFilterFunctionProvider);
}
}
static final class OnAnyLoadBalancerImplementationPresentCondition
extends AnyNestedCondition {
static final class OnAnyLoadBalancerImplementationPresentCondition extends AnyNestedCondition {
private OnAnyLoadBalancerImplementationPresentCondition() {
super(ConfigurationPhase.REGISTER_BEAN);

View File

@@ -37,15 +37,13 @@ public class LoadBalancerWebClientBuilderBeanPostProcessor implements BeanPostPr
private final ApplicationContext context;
public LoadBalancerWebClientBuilderBeanPostProcessor(
DeferringLoadBalancerExchangeFilterFunction exchangeFilterFunction,
ApplicationContext context) {
DeferringLoadBalancerExchangeFilterFunction exchangeFilterFunction, ApplicationContext context) {
this.exchangeFilterFunction = exchangeFilterFunction;
this.context = context;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof WebClient.Builder) {
if (context.findAnnotationOnBean(beanName, LoadBalanced.class) == null) {
return bean;

View File

@@ -40,10 +40,8 @@ public class ReactorLoadBalancerClientAutoConfiguration {
@ConditionalOnMissingBean
@Bean
public ReactorLoadBalancerExchangeFilterFunction loadBalancerExchangeFilterFunction(
ReactiveLoadBalancer.Factory loadBalancerFactory,
LoadBalancerProperties properties) {
return new ReactorLoadBalancerExchangeFilterFunction(loadBalancerFactory,
properties);
ReactiveLoadBalancer.Factory loadBalancerFactory, LoadBalancerProperties properties) {
return new ReactorLoadBalancerExchangeFilterFunction(loadBalancerFactory, properties);
}
}

View File

@@ -49,41 +49,33 @@ import org.springframework.web.reactive.function.client.ExchangeFunction;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class ReactorLoadBalancerExchangeFilterFunction implements ExchangeFilterFunction {
private static final Log LOG = LogFactory
.getLog(ReactorLoadBalancerExchangeFilterFunction.class);
private static final Log LOG = LogFactory.getLog(ReactorLoadBalancerExchangeFilterFunction.class);
private final ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory;
private final LoadBalancerProperties properties;
public ReactorLoadBalancerExchangeFilterFunction(
ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory,
public ReactorLoadBalancerExchangeFilterFunction(ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory,
LoadBalancerProperties properties) {
this.loadBalancerFactory = loadBalancerFactory;
this.properties = properties;
}
@Override
public Mono<ClientResponse> filter(ClientRequest clientRequest,
ExchangeFunction next) {
public Mono<ClientResponse> filter(ClientRequest clientRequest, ExchangeFunction next) {
URI originalUrl = clientRequest.url();
String serviceId = originalUrl.getHost();
if (serviceId == null) {
String message = String.format(
"Request URI does not contain a valid hostname: %s",
originalUrl.toString());
String message = String.format("Request URI does not contain a valid hostname: %s", originalUrl.toString());
if (LOG.isWarnEnabled()) {
LOG.warn(message);
}
return Mono.just(
ClientResponse.create(HttpStatus.BAD_REQUEST).body(message).build());
return Mono.just(ClientResponse.create(HttpStatus.BAD_REQUEST).body(message).build());
}
Set<LoadBalancerLifecycle> supportedLifecycleProcessors = LoadBalancerLifecycleValidator
.getSupportedLifecycleProcessors(
loadBalancerFactory.getInstances(serviceId,
LoadBalancerLifecycle.class),
ClientRequestContext.class, ClientResponse.class,
ServiceInstance.class);
loadBalancerFactory.getInstances(serviceId, LoadBalancerLifecycle.class),
ClientRequestContext.class, ClientResponse.class, ServiceInstance.class);
String hint = getHint(serviceId);
DefaultRequest<ClientRequestContext> lbRequest = new DefaultRequest<>(
new ClientRequestContext(clientRequest, hint));
@@ -95,31 +87,24 @@ public class ReactorLoadBalancerExchangeFilterFunction implements ExchangeFilter
if (LOG.isWarnEnabled()) {
LOG.warn(message);
}
supportedLifecycleProcessors.forEach(
lifecycle -> lifecycle.onComplete(new CompletionContext<>(
CompletionContext.Status.DISCARD, lbResponse)));
supportedLifecycleProcessors.forEach(lifecycle -> lifecycle
.onComplete(new CompletionContext<>(CompletionContext.Status.DISCARD, lbResponse)));
return Mono.just(ClientResponse.create(HttpStatus.SERVICE_UNAVAILABLE)
.body(serviceInstanceUnavailableMessage(serviceId)).build());
}
if (LOG.isDebugEnabled()) {
LOG.debug(String.format(
"Load balancer has retrieved the instance for service %s: %s",
serviceId, instance.getUri()));
LOG.debug(String.format("Load balancer has retrieved the instance for service %s: %s", serviceId,
instance.getUri()));
}
ClientRequest newRequest = buildClientRequest(clientRequest,
reconstructURI(instance, originalUrl));
ClientRequest newRequest = buildClientRequest(clientRequest, reconstructURI(instance, originalUrl));
return next.exchange(newRequest)
.doOnError(throwable -> supportedLifecycleProcessors
.forEach(lifecycle -> lifecycle.onComplete(
new CompletionContext<ClientResponse, ServiceInstance>(
CompletionContext.Status.FAILED, throwable,
lbResponse))))
.doOnSuccess(clientResponse -> supportedLifecycleProcessors
.forEach(lifecycle -> lifecycle.onComplete(
new CompletionContext<ClientResponse, ServiceInstance>(
CompletionContext.Status.SUCCESS, lbResponse,
clientResponse))));
.doOnError(throwable -> supportedLifecycleProcessors.forEach(
lifecycle -> lifecycle.onComplete(new CompletionContext<ClientResponse, ServiceInstance>(
CompletionContext.Status.FAILED, throwable, lbResponse))))
.doOnSuccess(clientResponse -> supportedLifecycleProcessors.forEach(
lifecycle -> lifecycle.onComplete(new CompletionContext<ClientResponse, ServiceInstance>(
CompletionContext.Status.SUCCESS, lbResponse, clientResponse))));
});
}
@@ -127,10 +112,8 @@ public class ReactorLoadBalancerExchangeFilterFunction implements ExchangeFilter
return LoadBalancerUriTools.reconstructURI(instance, original);
}
protected Mono<Response<ServiceInstance>> choose(String serviceId,
Request<ClientRequestContext> request) {
ReactiveLoadBalancer<ServiceInstance> loadBalancer = loadBalancerFactory
.getInstance(serviceId);
protected Mono<Response<ServiceInstance>> choose(String serviceId, Request<ClientRequestContext> request) {
ReactiveLoadBalancer<ServiceInstance> loadBalancer = loadBalancerFactory.getInstance(serviceId);
if (loadBalancer == null) {
return Mono.just(new EmptyResponse());
}
@@ -142,11 +125,9 @@ public class ReactorLoadBalancerExchangeFilterFunction implements ExchangeFilter
}
private ClientRequest buildClientRequest(ClientRequest request, URI uri) {
return ClientRequest.create(request.method(), uri)
.headers(headers -> headers.addAll(request.headers()))
return ClientRequest.create(request.method(), uri).headers(headers -> headers.addAll(request.headers()))
.cookies(cookies -> cookies.addAll(request.cookies()))
.attributes(attributes -> attributes.putAll(request.attributes()))
.body(request.body()).build();
.attributes(attributes -> attributes.putAll(request.attributes())).body(request.body()).build();
}
private String getHint(String serviceId) {

View File

@@ -45,11 +45,9 @@ import org.springframework.core.env.Environment;
* @author Spencer Gibb
*/
public abstract class AbstractAutoServiceRegistration<R extends Registration>
implements AutoServiceRegistration, ApplicationContextAware,
ApplicationListener<WebServerInitializedEvent> {
implements AutoServiceRegistration, ApplicationContextAware, ApplicationListener<WebServerInitializedEvent> {
private static final Log logger = LogFactory
.getLog(AbstractAutoServiceRegistration.class);
private static final Log logger = LogFactory.getLog(AbstractAutoServiceRegistration.class);
private final ServiceRegistry<R> serviceRegistry;
@@ -92,8 +90,7 @@ public abstract class AbstractAutoServiceRegistration<R extends Registration>
public void bind(WebServerInitializedEvent event) {
ApplicationContext context = event.getApplicationContext();
if (context instanceof ConfigurableWebServerApplicationContext) {
if ("management".equals(((ConfigurableWebServerApplicationContext) context)
.getServerNamespace())) {
if ("management".equals(((ConfigurableWebServerApplicationContext) context).getServerNamespace())) {
return;
}
}
@@ -102,8 +99,7 @@ public abstract class AbstractAutoServiceRegistration<R extends Registration>
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.context = applicationContext;
this.environment = this.context.getEnvironment();
}
@@ -133,14 +129,12 @@ public abstract class AbstractAutoServiceRegistration<R extends Registration>
// only initialize if nonSecurePort is greater than 0 and it isn't already running
// because of containerPortInitializer below
if (!this.running.get()) {
this.context.publishEvent(
new InstancePreRegisteredEvent(this, getRegistration()));
this.context.publishEvent(new InstancePreRegisteredEvent(this, getRegistration()));
register();
if (shouldRegisterManagement()) {
registerManagement();
}
this.context.publishEvent(
new InstanceRegisteredEvent<>(this, getConfiguration()));
this.context.publishEvent(new InstanceRegisteredEvent<>(this, getConfiguration()));
this.running.compareAndSet(false, true);
}
@@ -152,8 +146,7 @@ public abstract class AbstractAutoServiceRegistration<R extends Registration>
*/
protected boolean shouldRegisterManagement() {
if (this.properties == null || this.properties.isRegisterManagement()) {
return getManagementPort() != null
&& ManagementServerPortUtils.isDifferent(this.context);
return getManagementPort() != null && ManagementServerPortUtils.isDifferent(this.context);
}
return false;
}

View File

@@ -28,8 +28,7 @@ import org.springframework.context.annotation.Import;
*/
@Configuration(proxyBeanMethods = false)
@Import(AutoServiceRegistrationConfiguration.class)
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled",
matchIfMissing = true)
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true)
public class AutoServiceRegistrationAutoConfiguration {
@Autowired(required = false)
@@ -41,8 +40,8 @@ public class AutoServiceRegistrationAutoConfiguration {
@PostConstruct
protected void init() {
if (this.autoServiceRegistration == null && this.properties.isFailFast()) {
throw new IllegalStateException("Auto Service Registration has "
+ "been requested, but there is no AutoServiceRegistration bean");
throw new IllegalStateException(
"Auto Service Registration has " + "been requested, but there is no AutoServiceRegistration bean");
}
}

View File

@@ -25,8 +25,7 @@ import org.springframework.context.annotation.Configuration;
*/
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(AutoServiceRegistrationProperties.class)
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled",
matchIfMissing = true)
@ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true)
public class AutoServiceRegistrationConfiguration {
}

View File

@@ -40,10 +40,8 @@ public class ServiceRegistryAutoConfiguration {
@Bean
@ConditionalOnAvailableEndpoint
public ServiceRegistryEndpoint serviceRegistryEndpoint(
ServiceRegistry serviceRegistry) {
ServiceRegistryEndpoint endpoint = new ServiceRegistryEndpoint(
serviceRegistry);
public ServiceRegistryEndpoint serviceRegistryEndpoint(ServiceRegistry serviceRegistry) {
ServiceRegistryEndpoint endpoint = new ServiceRegistryEndpoint(serviceRegistry);
endpoint.setRegistration(this.registration);
return endpoint;
}

View File

@@ -51,8 +51,7 @@ public class ServiceRegistryEndpoint {
Assert.notNull(status, "status may not by null");
if (this.registration == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body("no registration found");
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("no registration found");
}
this.serviceRegistry.setStatus(this.registration, status);
@@ -62,12 +61,10 @@ public class ServiceRegistryEndpoint {
@ReadOperation
public ResponseEntity getStatus() {
if (this.registration == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body("no registration found");
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("no registration found");
}
return ResponseEntity.ok()
.body(this.serviceRegistry.getStatus(this.registration));
return ResponseEntity.ok().body(this.serviceRegistry.getStatus(this.registration));
}
}

View File

@@ -49,8 +49,7 @@ public interface ApacheHttpClientConnectionManagerFactory {
* manager.
* @return A new {@link HttpClientConnectionManager}.
*/
HttpClientConnectionManager newConnectionManager(boolean disableSslValidation,
int maxTotalConnections, int maxConnectionsPerRoute, long timeToLive,
TimeUnit timeUnit, RegistryBuilder registryBuilder);
HttpClientConnectionManager newConnectionManager(boolean disableSslValidation, int maxTotalConnections,
int maxConnectionsPerRoute, long timeToLive, TimeUnit timeUnit, RegistryBuilder registryBuilder);
}

View File

@@ -44,34 +44,29 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
* @author Ryan Baxter
* @author Michael Wirth
*/
public class DefaultApacheHttpClientConnectionManagerFactory
implements ApacheHttpClientConnectionManagerFactory {
public class DefaultApacheHttpClientConnectionManagerFactory implements ApacheHttpClientConnectionManagerFactory {
private static final Log LOG = LogFactory
.getLog(DefaultApacheHttpClientConnectionManagerFactory.class);
private static final Log LOG = LogFactory.getLog(DefaultApacheHttpClientConnectionManagerFactory.class);
public HttpClientConnectionManager newConnectionManager(boolean disableSslValidation,
int maxTotalConnections, int maxConnectionsPerRoute) {
return newConnectionManager(disableSslValidation, maxTotalConnections,
maxConnectionsPerRoute, -1, TimeUnit.MILLISECONDS, null);
public HttpClientConnectionManager newConnectionManager(boolean disableSslValidation, int maxTotalConnections,
int maxConnectionsPerRoute) {
return newConnectionManager(disableSslValidation, maxTotalConnections, maxConnectionsPerRoute, -1,
TimeUnit.MILLISECONDS, null);
}
@Override
public HttpClientConnectionManager newConnectionManager(boolean disableSslValidation,
int maxTotalConnections, int maxConnectionsPerRoute, long timeToLive,
TimeUnit timeUnit, RegistryBuilder registryBuilder) {
public HttpClientConnectionManager newConnectionManager(boolean disableSslValidation, int maxTotalConnections,
int maxConnectionsPerRoute, long timeToLive, TimeUnit timeUnit, RegistryBuilder registryBuilder) {
if (registryBuilder == null) {
registryBuilder = RegistryBuilder.<ConnectionSocketFactory>create()
.register(HTTP_SCHEME, PlainConnectionSocketFactory.INSTANCE);
registryBuilder = RegistryBuilder.<ConnectionSocketFactory>create().register(HTTP_SCHEME,
PlainConnectionSocketFactory.INSTANCE);
}
if (disableSslValidation) {
try {
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null,
new TrustManager[] { new DisabledValidationTrustManager() },
new SecureRandom());
registryBuilder.register(HTTPS_SCHEME, new SSLConnectionSocketFactory(
sslContext, NoopHostnameVerifier.INSTANCE));
sslContext.init(null, new TrustManager[] { new DisabledValidationTrustManager() }, new SecureRandom());
registryBuilder.register(HTTPS_SCHEME,
new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE));
}
catch (NoSuchAlgorithmException e) {
LOG.warn("Error creating SSLContext", e);
@@ -81,13 +76,12 @@ public class DefaultApacheHttpClientConnectionManagerFactory
}
}
else {
registryBuilder.register("https",
SSLConnectionSocketFactory.getSocketFactory());
registryBuilder.register("https", SSLConnectionSocketFactory.getSocketFactory());
}
final Registry<ConnectionSocketFactory> registry = registryBuilder.build();
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(
registry, null, null, null, timeToLive, timeUnit);
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry, null,
null, null, timeToLive, timeUnit);
connectionManager.setMaxTotal(maxTotalConnections);
connectionManager.setDefaultMaxPerRoute(maxConnectionsPerRoute);
@@ -97,13 +91,11 @@ public class DefaultApacheHttpClientConnectionManagerFactory
class DisabledValidationTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override

View File

@@ -38,8 +38,7 @@ public class DefaultApacheHttpClientFactory implements ApacheHttpClientFactory {
*/
@Override
public HttpClientBuilder createBuilder() {
return this.builder.disableContentCompression().disableCookieManagement()
.useSystemProperties();
return this.builder.disableContentCompression().disableCookieManagement().useSystemProperties();
}
}

View File

@@ -25,12 +25,10 @@ import okhttp3.ConnectionPool;
*
* @author Ryan Baxter
*/
public class DefaultOkHttpClientConnectionPoolFactory
implements OkHttpClientConnectionPoolFactory {
public class DefaultOkHttpClientConnectionPoolFactory implements OkHttpClientConnectionPoolFactory {
@Override
public ConnectionPool create(int maxIdleConnections, long keepAliveDuration,
TimeUnit timeUnit) {
public ConnectionPool create(int maxIdleConnections, long keepAliveDuration, TimeUnit timeUnit) {
return new ConnectionPool(maxIdleConnections, keepAliveDuration, timeUnit);
}

View File

@@ -53,8 +53,7 @@ public class DefaultOkHttpClientFactory implements OkHttpClientFactory {
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManagers, new java.security.SecureRandom());
SSLSocketFactory disabledSSLSocketFactory = sslContext.getSocketFactory();
this.builder.sslSocketFactory(disabledSSLSocketFactory,
disabledTrustManager);
this.builder.sslSocketFactory(disabledSSLSocketFactory, disabledTrustManager);
this.builder.hostnameVerifier(new TrustAllHostnames());
}
catch (NoSuchAlgorithmException e) {

View File

@@ -33,8 +33,7 @@ import org.springframework.context.annotation.Configuration;
public class HttpClientConfiguration {
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name = "spring.cloud.httpclientfactories.apache.enabled",
matchIfMissing = true)
@ConditionalOnProperty(name = "spring.cloud.httpclientfactories.apache.enabled", matchIfMissing = true)
@ConditionalOnClass(HttpClient.class)
static class ApacheHttpClientConfiguration {
@@ -52,16 +51,14 @@ public class HttpClientConfiguration {
@Bean
@ConditionalOnMissingBean
public ApacheHttpClientFactory apacheHttpClientFactory(
HttpClientBuilder builder) {
public ApacheHttpClientFactory apacheHttpClientFactory(HttpClientBuilder builder) {
return new DefaultApacheHttpClientFactory(builder);
}
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(name = "spring.cloud.httpclientfactories.ok.enabled",
matchIfMissing = true)
@ConditionalOnProperty(name = "spring.cloud.httpclientfactories.ok.enabled", matchIfMissing = true)
@ConditionalOnClass(OkHttpClient.class)
static class OkHttpClientConfiguration {

View File

@@ -34,7 +34,6 @@ public interface OkHttpClientConnectionPoolFactory {
* @param timeUnit The time unit for the keep-alive duration.
* @return A new {@link ConnectionPool}.
*/
ConnectionPool create(int maxIdleConnections, long keepAliveDuration,
TimeUnit timeUnit);
ConnectionPool create(int maxIdleConnections, long keepAliveDuration, TimeUnit timeUnit);
}

View File

@@ -45,13 +45,11 @@ public interface OkHttpClientFactory {
class DisableValidationTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s)
throws CertificateException {
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override

View File

@@ -39,8 +39,7 @@ public final class IdUtils {
return getDefaultInstanceId(resolver, true);
}
public static String getDefaultInstanceId(PropertyResolver resolver,
boolean includeHostname) {
public static String getDefaultInstanceId(PropertyResolver resolver, boolean includeHostname) {
String vcapInstanceId = resolver.getProperty("vcap.application.instance_id");
if (StringUtils.hasText(vcapInstanceId)) {
return vcapInstanceId;
@@ -54,8 +53,7 @@ public final class IdUtils {
String namePart = combineParts(hostname, SEPARATOR, appName);
String indexPart = resolver.getProperty("spring.application.instance_id",
resolver.getProperty("server.port"));
String indexPart = resolver.getProperty("spring.application.instance_id", resolver.getProperty("server.port"));
return combineParts(namePart, SEPARATOR, indexPart);
}
@@ -77,8 +75,7 @@ public final class IdUtils {
return DEFAULT_SERVICE_ID_STRING;
}
public static String combineParts(String firstPart, String separator,
String secondPart) {
public static String combineParts(String firstPart, String separator, String secondPart) {
String combined = null;
if (firstPart != null && secondPart != null) {
combined = firstPart + separator + secondPart;

View File

@@ -75,8 +75,8 @@ public class InetUtils implements Closeable {
InetAddress result = null;
try {
int lowest = Integer.MAX_VALUE;
for (Enumeration<NetworkInterface> nics = NetworkInterface
.getNetworkInterfaces(); nics.hasMoreElements();) {
for (Enumeration<NetworkInterface> nics = NetworkInterface.getNetworkInterfaces(); nics
.hasMoreElements();) {
NetworkInterface ifc = nics.nextElement();
if (ifc.isUp()) {
this.log.trace("Testing interface: " + ifc.getDisplayName());

View File

@@ -54,8 +54,8 @@ public abstract class SpringFactoryImportSelector<T>
@SuppressWarnings("unchecked")
protected SpringFactoryImportSelector() {
this.annotationClass = (Class<T>) GenericTypeResolver
.resolveTypeArgument(this.getClass(), SpringFactoryImportSelector.class);
this.annotationClass = (Class<T>) GenericTypeResolver.resolveTypeArgument(this.getClass(),
SpringFactoryImportSelector.class);
}
@Override
@@ -63,15 +63,15 @@ public abstract class SpringFactoryImportSelector<T>
if (!isEnabled()) {
return new String[0];
}
AnnotationAttributes attributes = AnnotationAttributes.fromMap(
metadata.getAnnotationAttributes(this.annotationClass.getName(), true));
AnnotationAttributes attributes = AnnotationAttributes
.fromMap(metadata.getAnnotationAttributes(this.annotationClass.getName(), true));
Assert.notNull(attributes, "No " + getSimpleName() + " attributes found. Is "
+ metadata.getClassName() + " annotated with @" + getSimpleName() + "?");
Assert.notNull(attributes, "No " + getSimpleName() + " attributes found. Is " + metadata.getClassName()
+ " annotated with @" + getSimpleName() + "?");
// Find all possible auto configuration classes, filtering duplicates
List<String> factories = new ArrayList<>(new LinkedHashSet<>(SpringFactoriesLoader
.loadFactoryNames(this.annotationClass, this.beanClassLoader)));
List<String> factories = new ArrayList<>(new LinkedHashSet<>(
SpringFactoriesLoader.loadFactoryNames(this.annotationClass, this.beanClassLoader)));
if (factories.isEmpty() && !hasDefaultFactory()) {
throw new IllegalStateException("Annotation @" + getSimpleName()

View File

@@ -28,18 +28,17 @@ import org.springframework.boot.diagnostics.FailureAnalysis;
* @author Marcin Grzejszczak
* @since 1.3.6
*/
public final class CompatibilityNotMetFailureAnalyzer
extends AbstractFailureAnalyzer<CompatibilityNotMetException> {
public final class CompatibilityNotMetFailureAnalyzer extends AbstractFailureAnalyzer<CompatibilityNotMetException> {
@Override
protected FailureAnalysis analyze(Throwable rootFailure,
CompatibilityNotMetException cause) {
protected FailureAnalysis analyze(Throwable rootFailure, CompatibilityNotMetException cause) {
return new FailureAnalysis(getDescription(cause), getAction(cause), cause);
}
private String getDescription(CompatibilityNotMetException ex) {
return String.format("Your project setup is incompatible with our requirements "
+ "due to following reasons:%s", descriptions(ex.results));
return String.format(
"Your project setup is incompatible with our requirements " + "due to following reasons:%s",
descriptions(ex.results));
}
private String descriptions(List<VerificationResult> results) {
@@ -51,8 +50,7 @@ public final class CompatibilityNotMetFailureAnalyzer
}
private String getAction(CompatibilityNotMetException ex) {
return String.format("Consider applying the following actions:%s",
actions(ex.results));
return String.format("Consider applying the following actions:%s", actions(ex.results));
}
private String actions(List<VerificationResult> results) {

View File

@@ -33,24 +33,20 @@ import org.springframework.context.annotation.Configuration;
* @since 1.3.6
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnProperty(value = "spring.cloud.compatibility-verifier.enabled",
matchIfMissing = true)
@ConditionalOnProperty(value = "spring.cloud.compatibility-verifier.enabled", matchIfMissing = true)
@AutoConfigureOrder(0)
@EnableConfigurationProperties(CompatibilityVerifierProperties.class)
public class CompatibilityVerifierAutoConfiguration {
@Bean
CompositeCompatibilityVerifier compositeCompatibilityVerifier(
List<CompatibilityVerifier> verifiers) {
CompositeCompatibilityVerifier verifier = new CompositeCompatibilityVerifier(
verifiers);
CompositeCompatibilityVerifier compositeCompatibilityVerifier(List<CompatibilityVerifier> verifiers) {
CompositeCompatibilityVerifier verifier = new CompositeCompatibilityVerifier(verifiers);
verifier.verifyDependencies();
return verifier;
}
@Bean
SpringBootVersionVerifier springBootVersionVerifier(
CompatibilityVerifierProperties properties) {
SpringBootVersionVerifier springBootVersionVerifier(CompatibilityVerifierProperties properties) {
return new SpringBootVersionVerifier(properties.getCompatibleBootVersions());
}

View File

@@ -28,8 +28,7 @@ import org.apache.commons.logging.LogFactory;
*/
class CompositeCompatibilityVerifier {
private static final Log log = LogFactory
.getLog(CompositeCompatibilityVerifier.class);
private static final Log log = LogFactory.getLog(CompositeCompatibilityVerifier.class);
private final List<CompatibilityVerifier> verifiers;

View File

@@ -69,8 +69,7 @@ public class SSLContextFactory {
throw new KeyStoreException("Keystore not specified.");
}
if (!properties.getKeyStore().exists()) {
throw new KeyStoreException(
"Keystore not exists: " + properties.getKeyStore());
throw new KeyStoreException("Keystore not exists: " + properties.getKeyStore());
}
KeyStore result = KeyStore.getInstance(properties.getKeyStoreType());
@@ -93,8 +92,8 @@ public class SSLContextFactory {
return result;
}
private static void loadKeyStore(KeyStore keyStore, Resource keyStoreResource,
char[] keyStorePassword) throws IOException, GeneralSecurityException {
private static void loadKeyStore(KeyStore keyStore, Resource keyStoreResource, char[] keyStorePassword)
throws IOException, GeneralSecurityException {
try (InputStream inputStream = keyStoreResource.getInputStream()) {
keyStore.load(inputStream, keyStorePassword);
}
@@ -105,8 +104,7 @@ public class SSLContextFactory {
return null;
}
if (!properties.getTrustStore().exists()) {
throw new KeyStoreException(
"KeyStore not exists: " + properties.getTrustStore());
throw new KeyStoreException("KeyStore not exists: " + properties.getTrustStore());
}
KeyStore result = KeyStore.getInstance(properties.getTrustStoreType());

View File

@@ -71,8 +71,7 @@ class SpringBootVersionVerifier implements CompatibilityVerifier {
public boolean isCompatible() {
try {
// deprecated 1.5
Class.forName(
"org.springframework.boot.context.config.ResourceNotFoundException");
Class.forName("org.springframework.boot.context.config.ResourceNotFoundException");
return true;
}
catch (ClassNotFoundException e) {
@@ -179,8 +178,7 @@ class SpringBootVersionVerifier implements CompatibilityVerifier {
public boolean isCompatible() {
try {
// since 2.3
Class.forName(
"org.springframework.boot.context.propertie.BoundConfigurationProperties");
Class.forName("org.springframework.boot.context.propertie.BoundConfigurationProperties");
return true;
}
catch (ClassNotFoundException e) {
@@ -194,20 +192,18 @@ class SpringBootVersionVerifier implements CompatibilityVerifier {
private String errorDescription() {
String versionFromManifest = getVersionFromManifest();
if (StringUtils.hasText(versionFromManifest)) {
return String.format(
"Spring Boot [%s] is not compatible with this Spring Cloud release train",
return String.format("Spring Boot [%s] is not compatible with this Spring Cloud release train",
versionFromManifest);
}
return "Spring Boot is not compatible with this Spring Cloud release train";
}
private String action() {
return String.format(
"Change Spring Boot version to one of the following versions %s .\n"
+ "You can find the latest Spring Boot versions here [%s]. \n"
+ "If you want to learn more about the Spring Cloud Release train compatibility, you "
+ "can visit this page [%s] and check the [Release Trains] section.\n"
+ "If you want to disable this check, just set the property [spring.cloud.compatibility-verifier.enabled=false]",
return String.format("Change Spring Boot version to one of the following versions %s .\n"
+ "You can find the latest Spring Boot versions here [%s]. \n"
+ "If you want to learn more about the Spring Cloud Release train compatibility, you "
+ "can visit this page [%s] and check the [Release Trains] section.\n"
+ "If you want to disable this check, just set the property [spring.cloud.compatibility-verifier.enabled=false]",
this.acceptedVersions, "https://spring.io/projects/spring-boot#learn",
"https://spring.io/projects/spring-cloud#overview");
}

View File

@@ -54,8 +54,7 @@ public abstract class CloudFlux<T> extends Flux<T> {
* @return a new {@link reactor.core.publisher.Flux} behaving like the fastest of its
* sources
*/
public static <I> Flux<I> firstNonEmpty(
Iterable<? extends Publisher<? extends I>> sources) {
public static <I> Flux<I> firstNonEmpty(Iterable<? extends Publisher<? extends I>> sources) {
return onAssembly(new FluxFirstNonEmptyEmitting<>(sources));
}

View File

@@ -59,12 +59,10 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
Iterator<? extends Publisher<? extends T>> it;
try {
it = Objects.requireNonNull(iterable.iterator(),
"The iterator returned is null");
it = Objects.requireNonNull(iterable.iterator(), "The iterator returned is null");
}
catch (Throwable e) {
Operators.error(actual,
Operators.onOperatorError(e, actual.currentContext()));
Operators.error(actual, Operators.onOperatorError(e, actual.currentContext()));
return;
}
@@ -76,8 +74,7 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
b = it.hasNext();
}
catch (Throwable e) {
Operators.error(actual,
Operators.onOperatorError(e, actual.currentContext()));
Operators.error(actual, Operators.onOperatorError(e, actual.currentContext()));
return;
}
@@ -88,12 +85,10 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
Publisher<? extends T> p;
try {
p = Objects.requireNonNull(it.next(),
"The Publisher returned by the iterator is null");
p = Objects.requireNonNull(it.next(), "The Publisher returned by the iterator is null");
}
catch (Throwable e) {
Operators.error(actual,
Operators.onOperatorError(e, actual.currentContext()));
Operators.error(actual, Operators.onOperatorError(e, actual.currentContext()));
return;
}
@@ -118,8 +113,7 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
Publisher<? extends T> p = a[0];
if (p == null) {
Operators.error(actual,
new NullPointerException("The single source Publisher is null"));
Operators.error(actual, new NullPointerException("The single source Publisher is null"));
}
else {
p.subscribe(actual);
@@ -176,8 +170,7 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
return null;
}
void subscribe(Publisher<? extends T>[] sources, int n,
CoreSubscriber<? super T> actual) {
void subscribe(Publisher<? extends T>[] sources, int n, CoreSubscriber<? super T> actual) {
FirstNonEmptyEmittingSubscriber<T>[] a = subscribers;
for (int i = 0; i < n; i++) {
@@ -195,8 +188,7 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
if (p == null) {
if (WIP.compareAndSet(this, Integer.MIN_VALUE, -1)) {
actual.onError(new NullPointerException(
"The " + i + " th Publisher source is null"));
actual.onError(new NullPointerException("The " + i + " th Publisher source is null"));
}
return;
}
@@ -264,8 +256,8 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
}
static final class FirstNonEmptyEmittingSubscriber<T>
extends Operators.DeferredSubscription implements InnerOperator<T, T> {
static final class FirstNonEmptyEmittingSubscriber<T> extends Operators.DeferredSubscription
implements InnerOperator<T, T> {
final RaceCoordinator<T> parent;
@@ -275,8 +267,7 @@ final class FluxFirstNonEmptyEmitting<T> extends Flux<T> implements SourceProduc
boolean won;
FirstNonEmptyEmittingSubscriber(CoreSubscriber<? super T> actual,
RaceCoordinator<T> parent, int index) {
FirstNonEmptyEmittingSubscriber(CoreSubscriber<? super T> actual, RaceCoordinator<T> parent, int index) {
this.actual = actual;
this.parent = parent;
this.index = index;

View File

@@ -30,8 +30,7 @@ import org.springframework.cloud.client.hypermedia.CloudHypermediaAutoConfigurat
* @author Dave Syer
*/
@RunWith(Suite.class)
@SuiteClasses({ EnableDiscoveryClientMissingImplTests.class,
CloudHypermediaAutoConfigurationIntegrationTests.class })
@SuiteClasses({ EnableDiscoveryClientMissingImplTests.class, CloudHypermediaAutoConfigurationIntegrationTests.class })
@Ignore
public class AdhocTestSuite {

View File

@@ -43,19 +43,14 @@ public class CommonsClientAutoConfigurationTests {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(CommonsClientAutoConfiguration.class,
SimpleDiscoveryClientAutoConfiguration.class,
UtilAutoConfiguration.class));
SimpleDiscoveryClientAutoConfiguration.class, UtilAutoConfiguration.class));
@Test
public void beansCreatedNormally() {
applicationContextRunner
.withConfiguration(
AutoConfigurations.of(HealthEndpointAutoConfiguration.class))
.withPropertyValues("management.endpoints.web.exposure.include=features")
.run(ctxt -> {
applicationContextRunner.withConfiguration(AutoConfigurations.of(HealthEndpointAutoConfiguration.class))
.withPropertyValues("management.endpoints.web.exposure.include=features").run(ctxt -> {
then(ctxt.getBean(DiscoveryClientHealthIndicator.class)).isNotNull();
then(ctxt.getBean(DiscoveryCompositeHealthContributor.class))
.isNotNull();
then(ctxt.getBean(DiscoveryCompositeHealthContributor.class)).isNotNull();
then(ctxt.getBean(FeaturesEndpoint.class)).isNotNull();
then(ctxt.getBeansOfType(HasFeatures.class).values()).isNotEmpty();
});
@@ -63,14 +58,10 @@ public class CommonsClientAutoConfigurationTests {
@Test
public void disableAll() {
applicationContextRunner
.withPropertyValues("spring.cloud.discovery.enabled=false",
"management.endpoints.web.exposure.include=features")
.run(ctxt -> {
assertThat(ctxt)
.doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt)
.doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
applicationContextRunner.withPropertyValues("spring.cloud.discovery.enabled=false",
"management.endpoints.web.exposure.include=features").run(ctxt -> {
assertThat(ctxt).doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt).doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
then(ctxt.getBean(FeaturesEndpoint.class)).isNotNull();
// features actuator is independent of discovery
assertThat(ctxt).doesNotHaveBean(HasFeatures.class);
@@ -79,14 +70,10 @@ public class CommonsClientAutoConfigurationTests {
@Test
public void disableBlocking() {
applicationContextRunner
.withPropertyValues("spring.cloud.discovery.blocking.enabled=false",
"management.endpoints.web.exposure.include=features")
.run(ctxt -> {
assertThat(ctxt)
.doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt)
.doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
applicationContextRunner.withPropertyValues("spring.cloud.discovery.blocking.enabled=false",
"management.endpoints.web.exposure.include=features").run(ctxt -> {
assertThat(ctxt).doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt).doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
then(ctxt.getBean(FeaturesEndpoint.class)).isNotNull();
// features actuator is independent of discovery
assertThat(ctxt).doesNotHaveBean(HasFeatures.class);
@@ -95,41 +82,30 @@ public class CommonsClientAutoConfigurationTests {
@Test
public void disableAllIndividually() {
applicationContextRunner.withPropertyValues(
"spring.cloud.discovery.client.health-indicator.enabled=false",
applicationContextRunner.withPropertyValues("spring.cloud.discovery.client.health-indicator.enabled=false",
"spring.cloud.discovery.client.composite-indicator.enabled=false",
"spring.cloud.features.enabled=false").run(ctxt -> {
assertThat(ctxt)
.doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt)
.doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
assertThat(ctxt).doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt).doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
assertThat(ctxt).doesNotHaveBean(FeaturesEndpoint.class);
});
}
@Test
public void disableHealthIndicator() {
applicationContextRunner
.withPropertyValues(
"spring.cloud.discovery.client.health-indicator.enabled=false")
applicationContextRunner.withPropertyValues("spring.cloud.discovery.client.health-indicator.enabled=false")
.run(ctxt -> {
assertThat(ctxt)
.doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt)
.doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
assertThat(ctxt).doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(ctxt).doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
});
}
@Test
public void worksWithoutActuator() {
applicationContextRunner
.withClassLoader(
new FilteredClassLoader("org.springframework.boot.actuate"))
applicationContextRunner.withClassLoader(new FilteredClassLoader("org.springframework.boot.actuate"))
.run(context -> {
assertThat(context)
.doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(context)
.doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(DiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(DiscoveryCompositeHealthContributor.class);
then(context.getBeansOfType(HasFeatures.class).values()).isEmpty();
});
}
@@ -146,12 +122,10 @@ public class CommonsClientAutoConfigurationTests {
@Test
public void conditionalOnBlockingDiscoveryEnabledWorks() {
applicationContextRunner
.withUserConfiguration(BlockingDiscoveryEnabledConfig.class)
applicationContextRunner.withUserConfiguration(BlockingDiscoveryEnabledConfig.class)
.withPropertyValues("spring.cloud.discovery.blocking.enabled=false")
.run(context -> assertThat(context).doesNotHaveBean(TestBean.class));
applicationContextRunner
.withUserConfiguration(BlockingDiscoveryEnabledConfig.class)
applicationContextRunner.withUserConfiguration(BlockingDiscoveryEnabledConfig.class)
.withPropertyValues("spring.cloud.discovery.blocking.enabled=true")
.run(context -> assertThat(context.getBean(TestBean.class)).isNotNull());
}

View File

@@ -40,20 +40,15 @@ public class ReactiveCommonsClientAutoConfigurationTests {
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(CommonsClientAutoConfiguration.class,
SimpleReactiveDiscoveryClientAutoConfiguration.class,
UtilAutoConfiguration.class,
SimpleReactiveDiscoveryClientAutoConfiguration.class, UtilAutoConfiguration.class,
ReactiveCommonsClientAutoConfiguration.class));
@Test
public void beansCreatedNormally() {
applicationContextRunner
.withPropertyValues("management.endpoints.web.exposure.include=features")
applicationContextRunner.withPropertyValues("management.endpoints.web.exposure.include=features")
.run(context -> {
then(context.getBean(ReactiveDiscoveryClientHealthIndicator.class))
.isNotNull();
then(context
.getBean(ReactiveDiscoveryCompositeHealthContributor.class))
.isNotNull();
then(context.getBean(ReactiveDiscoveryClientHealthIndicator.class)).isNotNull();
then(context.getBean(ReactiveDiscoveryCompositeHealthContributor.class)).isNotNull();
then(context.getBean(FeaturesEndpoint.class)).isNotNull();
then(context.getBeansOfType(HasFeatures.class).values()).isNotEmpty();
});
@@ -61,14 +56,10 @@ public class ReactiveCommonsClientAutoConfigurationTests {
@Test
public void disableAll() {
applicationContextRunner
.withPropertyValues("spring.cloud.discovery.enabled=false",
"management.endpoints.web.exposure.include=features")
.run(context -> {
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryCompositeHealthContributor.class);
applicationContextRunner.withPropertyValues("spring.cloud.discovery.enabled=false",
"management.endpoints.web.exposure.include=features").run(context -> {
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryCompositeHealthContributor.class);
// features actuator is independent of discovery
then(context.getBean(FeaturesEndpoint.class)).isNotNull();
assertThat(context).doesNotHaveBean(HasFeatures.class);
@@ -77,14 +68,10 @@ public class ReactiveCommonsClientAutoConfigurationTests {
@Test
public void disableReactive() {
applicationContextRunner
.withPropertyValues("spring.cloud.discovery.reactive.enabled=false",
"management.endpoints.web.exposure.include=features")
.run(context -> {
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryCompositeHealthContributor.class);
applicationContextRunner.withPropertyValues("spring.cloud.discovery.reactive.enabled=false",
"management.endpoints.web.exposure.include=features").run(context -> {
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryCompositeHealthContributor.class);
// features actuator is independent of discovery
then(context.getBean(FeaturesEndpoint.class)).isNotNull();
assertThat(context).doesNotHaveBean(HasFeatures.class);
@@ -93,55 +80,40 @@ public class ReactiveCommonsClientAutoConfigurationTests {
@Test
public void disableAllIndividually() {
applicationContextRunner.withPropertyValues(
"spring.cloud.discovery.client.health-indicator.enabled=false",
applicationContextRunner.withPropertyValues("spring.cloud.discovery.client.health-indicator.enabled=false",
"spring.cloud.discovery.client.composite-indicator.enabled=false",
"spring.cloud.features.enabled=false").run(context -> {
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(FeaturesEndpoint.class);
});
}
@Test
public void disableHealthIndicator() {
applicationContextRunner
.withPropertyValues(
"spring.cloud.discovery.client.health-indicator.enabled=false")
applicationContextRunner.withPropertyValues("spring.cloud.discovery.client.health-indicator.enabled=false")
.run(context -> {
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryCompositeHealthContributor.class);
});
}
@Test
public void worksWithoutActuator() {
applicationContextRunner
.withClassLoader(
new FilteredClassLoader("org.springframework.boot.actuate"))
applicationContextRunner.withClassLoader(new FilteredClassLoader("org.springframework.boot.actuate"))
.run(context -> {
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryCompositeHealthContributor.class);
then(context.getBeansOfType(HasFeatures.class).values()).isEmpty();
});
}
@Test
public void worksWithoutWebflux() {
applicationContextRunner
.withClassLoader(
new FilteredClassLoader("org.springframework.web.reactive"))
applicationContextRunner.withClassLoader(new FilteredClassLoader("org.springframework.web.reactive"))
.run(context -> {
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(
ReactiveDiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryClientHealthIndicator.class);
assertThat(context).doesNotHaveBean(ReactiveDiscoveryCompositeHealthContributor.class);
assertThat(context).doesNotHaveBean(HasFeatures.class);
});
}

View File

@@ -42,8 +42,7 @@ public class FeaturesEndpointTests {
@Before
public void setup() {
this.context = new AnnotationConfigApplicationContext();
this.context.register(JacksonAutoConfiguration.class, FeaturesConfig.class,
Config.class);
this.context.register(JacksonAutoConfiguration.class, FeaturesConfig.class, Config.class);
this.context.refresh();
}
@@ -56,8 +55,7 @@ public class FeaturesEndpointTests {
@Test
public void invokeWorks() {
FeaturesEndpoint.Features features = this.context.getBean(FeaturesEndpoint.class)
.features();
FeaturesEndpoint.Features features = this.context.getBean(FeaturesEndpoint.class).features();
then(features).isNotNull();
then(features.getEnabled()).hasSize(2).contains(newFeature("foo", Foo.class),
newFeature("Baz Feature", Baz.class));
@@ -78,8 +76,7 @@ public class FeaturesEndpointTests {
@Bean
HasFeatures localFeatures() {
HasFeatures features = HasFeatures.namedFeatures(
new NamedFeature("foo", Foo.class),
HasFeatures features = HasFeatures.namedFeatures(new NamedFeature("foo", Foo.class),
new NamedFeature("Baz Feature", Baz.class));
features.getAbstractFeatures().add(Bar.class);
return features;

View File

@@ -26,8 +26,7 @@ public class CustomizerTests {
@Test
public void testCustomizedOnlyOnce() {
AtomicInteger counter = new AtomicInteger(0);
final Customizer<AtomicInteger> customizer = Customizer
.once(AtomicInteger::incrementAndGet, Object::hashCode);
final Customizer<AtomicInteger> customizer = Customizer.once(AtomicInteger::incrementAndGet, Object::hashCode);
customizer.customize(counter);
customizer.customize(counter);
customizer.customize(counter);

View File

@@ -35,8 +35,7 @@ import static org.assertj.core.api.BDDAssertions.then;
* @author Ryan Baxter
*/
@RunWith(SpringRunner.class)
@SpringBootTest(
properties = { "spring.cloud.service-registry.auto-registration.enabled: false" })
@SpringBootTest(properties = { "spring.cloud.service-registry.auto-registration.enabled: false" })
public class AutoRegisterPropertyFalseTests {
@Autowired(required = false)

View File

@@ -54,8 +54,7 @@ public class EnableDiscoveryClientImportSelectorTests {
public void autoRegistrationIsEnabled() {
configureAnnotation(true);
String[] imports = this.importSelector.selectImports(this.annotationMetadata);
then(this.environment.getProperty(
"spring.cloud.service-registry.auto-registration.enabled", Boolean.class,
then(this.environment.getProperty("spring.cloud.service-registry.auto-registration.enabled", Boolean.class,
true)).isTrue();
then(imports).hasSize(1);
}
@@ -64,9 +63,8 @@ public class EnableDiscoveryClientImportSelectorTests {
public void autoRegistrationIsDisabled() {
configureAnnotation(false);
String[] imports = this.importSelector.selectImports(this.annotationMetadata);
then(this.environment.getProperty(
"spring.cloud.service-registry.auto-registration.enabled", Boolean.class))
.isFalse();
then(this.environment.getProperty("spring.cloud.service-registry.auto-registration.enabled", Boolean.class))
.isFalse();
then(imports).isEmpty();
}
@@ -75,8 +73,7 @@ public class EnableDiscoveryClientImportSelectorTests {
given(this.annotationMetadata.isAnnotated(annotationName)).willReturn(true);
given(this.annotationMetadata.getAnnotationAttributes(annotationName, true))
.willReturn(this.annotationAttributes);
given(this.annotationAttributes.getBoolean("autoRegister"))
.willReturn(autoRegistration);
given(this.annotationAttributes.getBoolean("autoRegister")).willReturn(autoRegistration);
}
}

View File

@@ -37,8 +37,8 @@ public class EnableDiscoveryClientMissingImplTests {
@Test
public void testContextFails() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder()
.sources(App.class).web(WebApplicationType.NONE).run()) {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder().sources(App.class)
.web(WebApplicationType.NONE).run()) {
// do sth
}
catch (NestedRuntimeException e) {

View File

@@ -35,8 +35,8 @@ public class ManagementServerPortUtilsTests {
@Test
public void contextStarts() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder()
.web(WebApplicationType.NONE).sources(TestApp.class).run()) {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder().web(WebApplicationType.NONE)
.sources(TestApp.class).run()) {
then(ManagementServerPortUtils.hasActuator).isFalse();
}

View File

@@ -60,8 +60,7 @@ public class CompositeDiscoveryClientAutoConfigurationTests {
CompositeDiscoveryClient compositeDiscoveryClient = (CompositeDiscoveryClient) this.discoveryClient;
then(compositeDiscoveryClient.getDiscoveryClients().get(0).description())
.isEqualTo("A custom discovery client");
then(compositeDiscoveryClient.getDiscoveryClients().get(1))
.isInstanceOf(SimpleDiscoveryClient.class);
then(compositeDiscoveryClient.getDiscoveryClients().get(1)).isInstanceOf(SimpleDiscoveryClient.class);
}
@EnableAutoConfiguration

View File

@@ -55,8 +55,7 @@ public class CompositeDiscoveryClientOrderTest {
// then:
then(discoveryClients.get(0).description()).isEqualTo(CUSTOM_DISCOVERY_CLIENT);
then(discoveryClients.get(1).description())
.isEqualTo(DEFAULT_ORDER_DISCOVERY_CLIENT);
then(discoveryClients.get(1).description()).isEqualTo(DEFAULT_ORDER_DISCOVERY_CLIENT);
then(discoveryClients.get(2).description()).isEqualTo("Simple Discovery Client");
then(discoveryClients.get(3).description()).isEqualTo(FOURTH_DISCOVERY_CLIENT);
}
@@ -64,8 +63,7 @@ public class CompositeDiscoveryClientOrderTest {
@Test
public void shouldOnlyReturnServiceInstancesForTheHighestPrecedenceDiscoveryClient() {
// when:
List<ServiceInstance> serviceInstances = this.discoveryClient
.getInstances(CUSTOM_SERVICE_ID);
List<ServiceInstance> serviceInstances = this.discoveryClient.getInstances(CUSTOM_SERVICE_ID);
// then:
then(serviceInstances).hasSize(1);

View File

@@ -37,11 +37,12 @@ import static org.springframework.cloud.client.discovery.composite.CompositeDisc
*/
@RunWith(SpringRunner.class)
@SpringBootTest(properties = { "spring.application.name=service0",
"spring.cloud.discovery.client.simple.instances.service1[0].uri=http://s11:8080",
"spring.cloud.discovery.client.simple.instances.service1[1].uri=https://s12:8443",
"spring.cloud.discovery.client.simple.instances.service2[0].uri=https://s21:8080",
"spring.cloud.discovery.client.simple.instances.service2[1].uri=https://s22:443" },
@SpringBootTest(
properties = { "spring.application.name=service0",
"spring.cloud.discovery.client.simple.instances.service1[0].uri=http://s11:8080",
"spring.cloud.discovery.client.simple.instances.service1[1].uri=https://s12:8443",
"spring.cloud.discovery.client.simple.instances.service2[0].uri=https://s21:8080",
"spring.cloud.discovery.client.simple.instances.service2[1].uri=https://s22:443" },
classes = { CompositeDiscoveryClientTestsConfig.class })
public class CompositeDiscoveryClientTests {
@@ -63,8 +64,7 @@ public class CompositeDiscoveryClientTests {
@Test
public void getServicesShouldAggregateAllServiceNames() {
then(this.discoveryClient.getServices()).containsOnlyOnce("service1", "service2",
"custom");
then(this.discoveryClient.getServices()).containsOnlyOnce("service1", "service2", "custom");
}
@Test

View File

@@ -68,8 +68,8 @@ public class CompositeDiscoveryClientTestsConfig {
@Override
public List<ServiceInstance> getInstances(String serviceId) {
if (serviceId.equals(CUSTOM_SERVICE_ID)) {
ServiceInstance s1 = new DefaultServiceInstance("customInstance",
CUSTOM_SERVICE_ID, "host", 123, false);
ServiceInstance s1 = new DefaultServiceInstance("customInstance", CUSTOM_SERVICE_ID, "host", 123,
false);
return singletonList(s1);
}
return Collections.emptyList();

View File

@@ -34,30 +34,25 @@ import static org.assertj.core.api.Assertions.assertThat;
class ReactiveCompositeDiscoveryClientAutoConfigurationTests {
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations
.of(ReactiveCompositeDiscoveryClientAutoConfiguration.class));
.withConfiguration(AutoConfigurations.of(ReactiveCompositeDiscoveryClientAutoConfiguration.class));
@Test
public void shouldCreateCompositeReactiveDiscoveryClientWithoutDelegates() {
this.contextRunner.run((context) -> {
ReactiveDiscoveryClient client = context
.getBean(ReactiveDiscoveryClient.class);
ReactiveDiscoveryClient client = context.getBean(ReactiveDiscoveryClient.class);
assertThat(client).isNotNull();
assertThat(client).isInstanceOf(ReactiveCompositeDiscoveryClient.class);
assertThat(((ReactiveCompositeDiscoveryClient) client).getDiscoveryClients())
.isEmpty();
assertThat(((ReactiveCompositeDiscoveryClient) client).getDiscoveryClients()).isEmpty();
});
}
@Test
public void shouldCreateCompositeReactiveDiscoveryClientWithDelegate() {
this.contextRunner.withUserConfiguration(Configuration.class).run((context) -> {
ReactiveDiscoveryClient client = context
.getBean(ReactiveDiscoveryClient.class);
ReactiveDiscoveryClient client = context.getBean(ReactiveDiscoveryClient.class);
assertThat(client).isNotNull();
assertThat(client).isInstanceOf(ReactiveCompositeDiscoveryClient.class);
assertThat(((ReactiveCompositeDiscoveryClient) client).getDiscoveryClients())
.hasSize(1);
assertThat(((ReactiveCompositeDiscoveryClient) client).getDiscoveryClients()).hasSize(1);
});
}

View File

@@ -47,8 +47,7 @@ class ReactiveCompositeDiscoveryClientTests {
@Test
public void shouldReturnEmptyFluxOfServices() {
ReactiveCompositeDiscoveryClient client = new ReactiveCompositeDiscoveryClient(
emptyList());
ReactiveCompositeDiscoveryClient client = new ReactiveCompositeDiscoveryClient(emptyList());
Flux<String> services = client.getServices();
@@ -76,15 +75,13 @@ class ReactiveCompositeDiscoveryClientTests {
Flux<String> services = client.getServices();
StepVerifier.create(services).expectNext("serviceAFromClient1")
.expectNext("serviceBFromClient1").expectNext("serviceCFromClient2")
.expectComplete().verify();
StepVerifier.create(services).expectNext("serviceAFromClient1").expectNext("serviceBFromClient1")
.expectNext("serviceCFromClient2").expectComplete().verify();
}
@Test
public void shouldReturnEmptyFluxOfServiceInstances() {
ReactiveCompositeDiscoveryClient client = new ReactiveCompositeDiscoveryClient(
emptyList());
ReactiveCompositeDiscoveryClient client = new ReactiveCompositeDiscoveryClient(emptyList());
Flux<ServiceInstance> instances = client.getInstances("service");
@@ -93,32 +90,28 @@ class ReactiveCompositeDiscoveryClientTests {
@Test
public void shouldReturnFluxOfServiceInstances() {
DefaultServiceInstance serviceInstance1 = new DefaultServiceInstance("instance",
"service", "localhost", 8080, false);
DefaultServiceInstance serviceInstance2 = new DefaultServiceInstance("instance2",
"service", "localhost", 8080, false);
TestPublisher<ServiceInstance> discoveryClient1Publisher = TestPublisher
.createCold();
DefaultServiceInstance serviceInstance1 = new DefaultServiceInstance("instance", "service", "localhost", 8080,
false);
DefaultServiceInstance serviceInstance2 = new DefaultServiceInstance("instance2", "service", "localhost", 8080,
false);
TestPublisher<ServiceInstance> discoveryClient1Publisher = TestPublisher.createCold();
discoveryClient1Publisher.emit(serviceInstance1);
discoveryClient1Publisher.emit(serviceInstance2);
discoveryClient1Publisher.complete();
TestPublisher<ServiceInstance> discoveryClient2Publisher = TestPublisher
.createCold();
TestPublisher<ServiceInstance> discoveryClient2Publisher = TestPublisher.createCold();
discoveryClient2Publisher.complete();
when(discoveryClient1.getInstances("service"))
.thenReturn(discoveryClient1Publisher.flux());
when(discoveryClient2.getInstances("service"))
.thenReturn(discoveryClient2Publisher.flux());
when(discoveryClient1.getInstances("service")).thenReturn(discoveryClient1Publisher.flux());
when(discoveryClient2.getInstances("service")).thenReturn(discoveryClient2Publisher.flux());
ReactiveCompositeDiscoveryClient client = new ReactiveCompositeDiscoveryClient(
asList(discoveryClient1, discoveryClient2));
Flux<ServiceInstance> instances = client.getInstances("service");
StepVerifier.create(instances).expectNext(serviceInstance1)
.expectNext(serviceInstance2).expectComplete().verify();
StepVerifier.create(instances).expectNext(serviceInstance1).expectNext(serviceInstance2).expectComplete()
.verify();
}
}

View File

@@ -45,9 +45,7 @@ import static org.mockito.Mockito.mock;
*/
@RunWith(SpringRunner.class)
// @checkstyle:off
@SpringBootTest(
classes = { DiscoveryClientHealthIndicatorTests.Config.class,
CommonsClientAutoConfiguration.class },
@SpringBootTest(classes = { DiscoveryClientHealthIndicatorTests.Config.class, CommonsClientAutoConfiguration.class },
properties = "spring.cloud.discovery.client.health-indicator.include-description:true")
// @checkstyle:on
public class DiscoveryClientHealthIndicatorTests {
@@ -64,18 +62,15 @@ public class DiscoveryClientHealthIndicatorTests {
assertHealth(getHealth("testDiscoveryHealthIndicator"), Status.UNKNOWN);
assertHealth(getHealth("discoveryClient"), Status.UNKNOWN);
this.clientHealthIndicator
.onApplicationEvent(new InstanceRegisteredEvent<>(this, null));
this.clientHealthIndicator.onApplicationEvent(new InstanceRegisteredEvent<>(this, null));
assertHealth(getHealth("testDiscoveryHealthIndicator"), Status.UNKNOWN);
Status status = assertHealth(getHealth("discoveryClient"), Status.UP);
then(status.getDescription()).as("status description was wrong")
.isEqualTo("TestDiscoveryClient");
then(status.getDescription()).as("status description was wrong").isEqualTo("TestDiscoveryClient");
}
private Health getHealth(String name) {
HealthContributor delegate = ((CompositeHealthContributor) this.healthContributor)
.getContributor(name);
HealthContributor delegate = ((CompositeHealthContributor) this.healthContributor).getContributor(name);
return ((HealthIndicator) delegate).health();
}

View File

@@ -39,15 +39,13 @@ public class DiscoveryCompositeHealthContributorTests {
@Test
public void createWhenIndicatorsAreNullThrowsException() throws Exception {
assertThatIllegalArgumentException()
.isThrownBy(() -> new DiscoveryCompositeHealthContributor(null))
assertThatIllegalArgumentException().isThrownBy(() -> new DiscoveryCompositeHealthContributor(null))
.withMessage("'indicators' must not be null");
}
@Test
public void getContributorReturnsContributor() throws Exception {
TestDiscoveryHealthIndicator indicator = new TestDiscoveryHealthIndicator("test",
Health.up().build());
TestDiscoveryHealthIndicator indicator = new TestDiscoveryHealthIndicator("test", Health.up().build());
DiscoveryCompositeHealthContributor composite = new DiscoveryCompositeHealthContributor(
Arrays.asList(indicator));
HealthIndicator adapted = (HealthIndicator) composite.getContributor("test");
@@ -57,8 +55,7 @@ public class DiscoveryCompositeHealthContributorTests {
@Test
public void getContributorWhenMissingReturnsNull() throws Exception {
TestDiscoveryHealthIndicator indicator = new TestDiscoveryHealthIndicator("test",
Health.up().build());
TestDiscoveryHealthIndicator indicator = new TestDiscoveryHealthIndicator("test", Health.up().build());
DiscoveryCompositeHealthContributor composite = new DiscoveryCompositeHealthContributor(
Arrays.asList(indicator));
assertThat((HealthIndicator) composite.getContributor("missing")).isNull();
@@ -66,10 +63,8 @@ public class DiscoveryCompositeHealthContributorTests {
@Test
public void iteratorIteratesNamedContributors() throws Exception {
TestDiscoveryHealthIndicator indicator1 = new TestDiscoveryHealthIndicator(
"test1", Health.up().build());
TestDiscoveryHealthIndicator indicator2 = new TestDiscoveryHealthIndicator(
"test2", Health.down().build());
TestDiscoveryHealthIndicator indicator1 = new TestDiscoveryHealthIndicator("test1", Health.up().build());
TestDiscoveryHealthIndicator indicator2 = new TestDiscoveryHealthIndicator("test2", Health.down().build());
DiscoveryCompositeHealthContributor composite = new DiscoveryCompositeHealthContributor(
Arrays.asList(indicator1, indicator2));
List<NamedContributor<HealthContributor>> contributors = new ArrayList<>();
@@ -77,14 +72,12 @@ public class DiscoveryCompositeHealthContributorTests {
contributors.add(contributor);
}
assertThat(contributors).hasSize(2);
assertThat(contributors).extracting("name").containsExactlyInAnyOrder("test1",
"test2");
assertThat(contributors).extracting("name").containsExactlyInAnyOrder("test1", "test2");
assertThat(contributors).extracting("contributor").extracting("health")
.containsExactlyInAnyOrder(indicator1.health(), indicator2.health());
}
private static class TestDiscoveryHealthIndicator
implements DiscoveryHealthIndicator {
private static class TestDiscoveryHealthIndicator implements DiscoveryHealthIndicator {
private final String name;

View File

@@ -61,8 +61,7 @@ class ReactiveDiscoveryClientHealthIndicatorTests {
@Test
public void shouldReturnUnknownStatusWhenNotInitialized() {
Health expectedHealth = Health.status(
new Status(Status.UNKNOWN.getCode(), "Discovery Client not initialized"))
Health expectedHealth = Health.status(new Status(Status.UNKNOWN.getCode(), "Discovery Client not initialized"))
.build();
Mono<Health> health = indicator.health();
StepVerifier.create(health).expectNext(expectedHealth).expectComplete().verify();
@@ -72,8 +71,8 @@ class ReactiveDiscoveryClientHealthIndicatorTests {
public void shouldReturnUpStatusWithoutServices() {
when(discoveryClient.description()).thenReturn("Mocked Service Discovery Client");
when(discoveryClient.getServices()).thenReturn(Flux.empty());
Health expectedHealth = Health.status(new Status(Status.UP.getCode(), ""))
.withDetail("services", emptyList()).build();
Health expectedHealth = Health.status(new Status(Status.UP.getCode(), "")).withDetail("services", emptyList())
.build();
indicator.onApplicationEvent(new InstanceRegisteredEvent<>(this, null));
Mono<Health> health = indicator.health();
@@ -87,9 +86,7 @@ class ReactiveDiscoveryClientHealthIndicatorTests {
when(discoveryClient.getServices()).thenReturn(Flux.just("service"));
when(properties.isIncludeDescription()).thenReturn(true);
when(discoveryClient.description()).thenReturn("Mocked Service Discovery Client");
Health expectedHealth = Health
.status(new Status(Status.UP.getCode(),
"Mocked Service Discovery Client"))
Health expectedHealth = Health.status(new Status(Status.UP.getCode(), "Mocked Service Discovery Client"))
.withDetail("services", singletonList("service")).build();
indicator.onApplicationEvent(new InstanceRegisteredEvent<>(this, null));
@@ -108,8 +105,7 @@ class ReactiveDiscoveryClientHealthIndicatorTests {
indicator.onApplicationEvent(new InstanceRegisteredEvent<>(this, null));
Mono<Health> health = indicator.health();
StepVerifier.create(health).expectNext(expectedHealth).expectComplete()
.verifyThenAssertThat();
StepVerifier.create(health).expectNext(expectedHealth).expectComplete().verifyThenAssertThat();
}
}

View File

@@ -54,8 +54,7 @@ class ReactiveDiscoveryCompositeHealthContributorTests {
@Test
void shouldReturnKnownContributor() {
ReactiveDiscoveryHealthIndicator indicator = mock(
ReactiveDiscoveryHealthIndicator.class);
ReactiveDiscoveryHealthIndicator indicator = mock(ReactiveDiscoveryHealthIndicator.class);
Health health = Health.up().build();
when(indicator.getName()).thenReturn("known");
when(indicator.health()).thenReturn(Mono.just(health));
@@ -64,19 +63,15 @@ class ReactiveDiscoveryCompositeHealthContributorTests {
singletonList(indicator));
assertThat(healthContributor.getContributor("known")).isNotNull();
Iterator<NamedContributor<ReactiveHealthContributor>> iterator = healthContributor
.iterator();
Iterator<NamedContributor<ReactiveHealthContributor>> iterator = healthContributor.iterator();
assertThat(iterator.hasNext()).isTrue();
NamedContributor<ReactiveHealthContributor> contributor = iterator.next();
assertThat(contributor).isNotNull();
assertThat(contributor.getName()).isEqualTo("known");
assertThat(contributor.getContributor()).isNotNull();
assertThat(contributor.getContributor())
.isInstanceOf(ReactiveHealthIndicator.class);
ReactiveHealthIndicator healthIndicator = (ReactiveHealthIndicator) contributor
.getContributor();
StepVerifier.create(healthIndicator.getHealth(true)).expectNext(health)
.expectComplete().verify();
assertThat(contributor.getContributor()).isInstanceOf(ReactiveHealthIndicator.class);
ReactiveHealthIndicator healthIndicator = (ReactiveHealthIndicator) contributor.getContributor();
StepVerifier.create(healthIndicator.getHealth(true)).expectNext(health).expectComplete().verify();
}
}

View File

@@ -32,8 +32,7 @@ import static org.assertj.core.api.BDDAssertions.then;
* @author Ryan Baxter
*/
@RunWith(SpringRunner.class)
@SpringBootTest(
classes = ReactiveSimpleDiscoveryPropertiesAutoConfigurationTests.Config.class,
@SpringBootTest(classes = ReactiveSimpleDiscoveryPropertiesAutoConfigurationTests.Config.class,
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
properties = "spring.main.web-application-type=reactive")
public class ReactiveSimpleDiscoveryPropertiesAutoConfigurationTests {

View File

@@ -32,8 +32,7 @@ import static org.assertj.core.api.BDDAssertions.then;
* @author Ryan Baxter
*/
@RunWith(SpringRunner.class)
@SpringBootTest(
classes = ServletSimpleDiscoveryPropertiesAutoConfigurationTests.Config.class,
@SpringBootTest(classes = ServletSimpleDiscoveryPropertiesAutoConfigurationTests.Config.class,
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ServletSimpleDiscoveryPropertiesAutoConfigurationTests {

View File

@@ -56,16 +56,13 @@ public class SimpleDiscoveryClientPropertiesMappingTests {
then(this.props.getInstances().get("service1").size()).isEqualTo(2);
then(this.props.getInstances().get("service1").get(0).getHost()).isEqualTo("s11");
then(this.props.getInstances().get("service1").get(0).getPort()).isEqualTo(8080);
then(this.props.getInstances().get("service1").get(0).getUri())
.isEqualTo(URI.create("http://s11:8080"));
then(this.props.getInstances().get("service1").get(0).isSecure())
.isEqualTo(false);
then(this.props.getInstances().get("service1").get(0).getUri()).isEqualTo(URI.create("http://s11:8080"));
then(this.props.getInstances().get("service1").get(0).isSecure()).isEqualTo(false);
then(this.props.getInstances().get("service2").size()).isEqualTo(2);
then(this.props.getInstances().get("service2").get(0).getHost()).isEqualTo("s21");
then(this.props.getInstances().get("service2").get(0).getPort()).isEqualTo(8080);
then(this.props.getInstances().get("service2").get(0).getUri())
.isEqualTo(URI.create("https://s21:8080"));
then(this.props.getInstances().get("service2").get(0).getUri()).isEqualTo(URI.create("https://s21:8080"));
then(this.props.getInstances().get("service2").get(0).isSecure()).isEqualTo(true);
}
@@ -83,8 +80,7 @@ public class SimpleDiscoveryClientPropertiesMappingTests {
@Test
public void testGetServices() {
then(this.discoveryClient.getServices()).containsExactlyInAnyOrder("service1",
"service2");
then(this.discoveryClient.getServices()).containsExactlyInAnyOrder("service1", "service2");
}
@Test

View File

@@ -42,10 +42,8 @@ public class SimpleDiscoveryClientTests {
SimpleDiscoveryProperties simpleDiscoveryProperties = new SimpleDiscoveryProperties();
Map<String, List<SimpleServiceInstance>> map = new HashMap<>();
SimpleServiceInstance service1Inst1 = new SimpleServiceInstance(
URI.create("http://host1:8080"));
SimpleServiceInstance service1Inst2 = new SimpleServiceInstance(
URI.create("https://host2:8443"));
SimpleServiceInstance service1Inst1 = new SimpleServiceInstance(URI.create("http://host1:8080"));
SimpleServiceInstance service1Inst2 = new SimpleServiceInstance(URI.create("https://host2:8443"));
map.put("service1", Arrays.asList(service1Inst1, service1Inst2));
simpleDiscoveryProperties.setInstances(map);
simpleDiscoveryProperties.init();
@@ -54,8 +52,7 @@ public class SimpleDiscoveryClientTests {
@Test
public void shouldBeAbleToRetrieveServiceDetailsByName() {
List<ServiceInstance> instances = this.simpleDiscoveryClient
.getInstances("service1");
List<ServiceInstance> instances = this.simpleDiscoveryClient.getInstances("service1");
then(instances.size()).isEqualTo(2);
then(instances.get(0).getServiceId()).isEqualTo("service1");
then(instances.get(0).getHost()).isEqualTo("host1");

View File

@@ -34,27 +34,21 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class SimpleReactiveDiscoveryClientAutoConfigurationTests {
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(
SimpleReactiveDiscoveryClientAutoConfiguration.class,
UtilAutoConfiguration.class));
private ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration(
AutoConfigurations.of(SimpleReactiveDiscoveryClientAutoConfiguration.class, UtilAutoConfiguration.class));
@Test
public void shouldUseDefaults() {
this.contextRunner.run((context) -> {
ReactiveDiscoveryClient client = context
.getBean(ReactiveDiscoveryClient.class);
ReactiveDiscoveryClient client = context.getBean(ReactiveDiscoveryClient.class);
assertThat(client).isNotNull();
assertThat(client.getOrder())
.isEqualTo(ReactiveDiscoveryClient.DEFAULT_ORDER);
assertThat(client.getOrder()).isEqualTo(ReactiveDiscoveryClient.DEFAULT_ORDER);
InetUtils inet = context.getBean(InetUtils.class);
assertThat(inet).isNotNull();
SimpleReactiveDiscoveryProperties properties = context
.getBean(SimpleReactiveDiscoveryProperties.class);
SimpleReactiveDiscoveryProperties properties = context.getBean(SimpleReactiveDiscoveryProperties.class);
assertThat(properties).isNotNull();
assertThat(properties.getLocal().getServiceId()).isEqualTo("application");
assertThat(properties.getLocal().getHost())
.isEqualTo(inet.findFirstNonLoopbackHostInfo().getHostname());
assertThat(properties.getLocal().getHost()).isEqualTo(inet.findFirstNonLoopbackHostInfo().getHostname());
assertThat(properties.getLocal().getPort()).isEqualTo(8080);
});
}
@@ -63,11 +57,9 @@ class SimpleReactiveDiscoveryClientAutoConfigurationTests {
public void shouldUseCustomConfiguration() {
this.contextRunner.withUserConfiguration(Configuration.class)
.withPropertyValues("spring.application.name=my-service",
"spring.cloud.discovery.client.simple.order=1",
"server.port=8443")
"spring.cloud.discovery.client.simple.order=1", "server.port=8443")
.run((context) -> {
ReactiveDiscoveryClient client = context
.getBean(ReactiveDiscoveryClient.class);
ReactiveDiscoveryClient client = context.getBean(ReactiveDiscoveryClient.class);
assertThat(client).isNotNull();
assertThat(client.getOrder()).isEqualTo(1);
InetUtils inet = context.getBean(InetUtils.class);
@@ -75,8 +67,7 @@ class SimpleReactiveDiscoveryClientAutoConfigurationTests {
SimpleReactiveDiscoveryProperties properties = context
.getBean(SimpleReactiveDiscoveryProperties.class);
assertThat(properties).isNotNull();
assertThat(properties.getLocal().getServiceId())
.isEqualTo("my-service");
assertThat(properties.getLocal().getServiceId()).isEqualTo("my-service");
assertThat(properties.getLocal().getHost())
.isEqualTo(inet.findFirstNonLoopbackHostInfo().getHostname());
assertThat(properties.getLocal().getPort()).isEqualTo(8443);

View File

@@ -36,22 +36,19 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class SimpleReactiveDiscoveryClientTests {
private final SimpleServiceInstance service1Inst1 = new SimpleServiceInstance(
URI.create("http://host1:8080"));
private final SimpleServiceInstance service1Inst1 = new SimpleServiceInstance(URI.create("http://host1:8080"));
private final SimpleServiceInstance service1Inst2 = new SimpleServiceInstance(
URI.create("https://host2:8443"));
private final SimpleServiceInstance service1Inst2 = new SimpleServiceInstance(URI.create("https://host2:8443"));
private SimpleReactiveDiscoveryClient client;
@BeforeEach
public void setUp() {
SimpleReactiveDiscoveryProperties simpleReactiveDiscoveryProperties = new SimpleReactiveDiscoveryProperties();
simpleReactiveDiscoveryProperties.setInstances(
singletonMap("service", Arrays.asList(service1Inst1, service1Inst2)));
simpleReactiveDiscoveryProperties
.setInstances(singletonMap("service", Arrays.asList(service1Inst1, service1Inst2)));
simpleReactiveDiscoveryProperties.init();
this.client = new SimpleReactiveDiscoveryClient(
simpleReactiveDiscoveryProperties);
this.client = new SimpleReactiveDiscoveryClient(simpleReactiveDiscoveryProperties);
}
@Test
@@ -75,8 +72,7 @@ public class SimpleReactiveDiscoveryClientTests {
@Test
public void shouldReturnFluxOfServiceInstances() {
Flux<ServiceInstance> services = this.client.getInstances("service");
StepVerifier.create(services).expectNext(service1Inst1).expectNext(service1Inst2)
.expectComplete().verify();
StepVerifier.create(services).expectNext(service1Inst1).expectNext(service1Inst2).expectComplete().verify();
}
}

View File

@@ -36,20 +36,16 @@ import static org.assertj.core.api.BDDAssertions.then;
*/
public class CloudHypermediaAutoConfigurationIntegrationTests {
private static ConfigurableApplicationContext getApplicationContext(
Class<?> configuration) {
return new SpringApplicationBuilder(configuration).properties("server.port=0")
.run();
private static ConfigurableApplicationContext getApplicationContext(Class<?> configuration) {
return new SpringApplicationBuilder(configuration).properties("server.port=0").run();
}
@Test
public void picksUpHypermediaProperties() {
try (ConfigurableApplicationContext context = getApplicationContext(
ConfigWithRemoteResource.class)) {
try (ConfigurableApplicationContext context = getApplicationContext(ConfigWithRemoteResource.class)) {
CloudHypermediaProperties properties = context
.getBean(CloudHypermediaProperties.class);
CloudHypermediaProperties properties = context.getBean(CloudHypermediaProperties.class);
then(properties.getRefresh().getInitialDelay()).isEqualTo(50000);
then(properties.getRefresh().getFixedDelay()).isEqualTo(10000);
@@ -59,8 +55,7 @@ public class CloudHypermediaAutoConfigurationIntegrationTests {
@Test
public void doesNotCreateCloudHypermediaPropertiesifNotActive() {
try (ConfigurableApplicationContext context = getApplicationContext(
Config.class)) {
try (ConfigurableApplicationContext context = getApplicationContext(Config.class)) {
then(context.getBeanNamesForType(CloudHypermediaProperties.class)).hasSize(0);
}
}
@@ -68,8 +63,7 @@ public class CloudHypermediaAutoConfigurationIntegrationTests {
@Test
public void doesNotRegisterResourceRefresherIfNoDiscoveredResourceIsDefined() {
try (ConfigurableApplicationContext context = getApplicationContext(
Config.class)) {
try (ConfigurableApplicationContext context = getApplicationContext(Config.class)) {
then(context.getBeansOfType(RemoteResource.class).values()).hasSize(0);
then(context.getBeanNamesForType(RemoteResourceRefresher.class)).hasSize(0);
@@ -79,8 +73,7 @@ public class CloudHypermediaAutoConfigurationIntegrationTests {
@Test
public void registersResourceRefresherIfDiscoverredResourceIsDefined() {
try (ConfigurableApplicationContext context = getApplicationContext(
ConfigWithRemoteResource.class)) {
try (ConfigurableApplicationContext context = getApplicationContext(ConfigWithRemoteResource.class)) {
then(context.getBeansOfType(RemoteResource.class).values()).hasSize(1);
then(context.getBean(RemoteResourceRefresher.class)).isNotNull();
@@ -101,8 +94,7 @@ public class CloudHypermediaAutoConfigurationIntegrationTests {
public RemoteResource resource() {
ServiceInstanceProvider provider = new StaticServiceInstanceProvider(
new DefaultServiceInstance("instance", "service", "localhost", 80,
false));
new DefaultServiceInstance("instance", "service", "localhost", 80, false));
return new DiscoveredResource(provider, traverson -> traverson.follow("rel"));
}

View File

@@ -59,8 +59,7 @@ public class DiscoveredResourceUnitTests {
@Before
public void setUp() {
when(this.traversal.buildTraversal(Matchers.any(Traverson.class)))
.thenReturn(this.builder);
when(this.traversal.buildTraversal(Matchers.any(Traverson.class))).thenReturn(this.builder);
this.resource = new DiscoveredResource(this.provider, this.traversal);
this.resource.setRestOperations(this.operations);
@@ -76,8 +75,8 @@ public class DiscoveredResourceUnitTests {
Link link = new Link("target", "rel");
when(this.provider.getServiceInstance()).thenReturn(new DefaultServiceInstance(
"instance", "service", "localhost", 8080, false));
when(this.provider.getServiceInstance())
.thenReturn(new DefaultServiceInstance("instance", "service", "localhost", 8080, false));
when(this.builder.asTemplatedLink()).thenReturn(link);
this.resource.verifyOrDiscover();
@@ -103,8 +102,7 @@ public class DiscoveredResourceUnitTests {
verificationTriggersDiscovery();
doThrow(RestClientException.class).when(this.operations)
.headForHeaders(anyString());
doThrow(RestClientException.class).when(this.operations).headForHeaders(anyString());
this.resource.verifyOrDiscover();
then(this.resource.getLink()).isNull();

View File

@@ -42,8 +42,7 @@ public class DynamicServiceInstanceProviderUnitTests {
@Test
public void returnsNoServiceInCaseNoneIsAvailable() {
then(new DynamicServiceInstanceProvider(this.client, "service")
.getServiceInstance()).isNull();
then(new DynamicServiceInstanceProvider(this.client, "service").getServiceInstance()).isNull();
}
@Test
@@ -52,11 +51,9 @@ public class DynamicServiceInstanceProviderUnitTests {
ServiceInstance first = mock(ServiceInstance.class);
ServiceInstance second = mock(ServiceInstance.class);
when(this.client.getInstances(anyString()))
.thenReturn(Arrays.asList(first, second));
when(this.client.getInstances(anyString())).thenReturn(Arrays.asList(first, second));
then(new DynamicServiceInstanceProvider(this.client, "service")
.getServiceInstance()).isEqualTo(first);
then(new DynamicServiceInstanceProvider(this.client, "service").getServiceInstance()).isEqualTo(first);
}
}

Some files were not shown because too many files have changed in this diff Show More