Skip to content

Commit

Permalink
Merge branch '2.0.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
philwebb committed May 22, 2018
2 parents e47e499 + 2dc4f1d commit c5f63c1
Show file tree
Hide file tree
Showing 14 changed files with 73 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,21 @@ public class WebMvcServletEndpointManagementContextConfiguration {

private final ApplicationContext context;

public WebMvcServletEndpointManagementContextConfiguration(ApplicationContext context) {
public WebMvcServletEndpointManagementContextConfiguration(
ApplicationContext context) {
this.context = context;
}

@Bean
public ServletEndpointRegistrar servletEndpointRegistrar(
WebEndpointProperties properties,
ServletEndpointsSupplier servletEndpointsSupplier) {
DispatcherServletPathProvider servletPathProvider = this.context.getBean(DispatcherServletPathProvider.class);
String servletPath = (servletPathProvider.getServletPath().equals("/") ? "" : servletPathProvider.getServletPath());
DispatcherServletPathProvider servletPathProvider = this.context
.getBean(DispatcherServletPathProvider.class);
String servletPath = servletPathProvider.getServletPath();
if (servletPath.equals("/")) {
servletPath = "";
}
return new ServletEndpointRegistrar(servletPath + properties.getBasePath(),
servletEndpointsSupplier.getEndpoints());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,12 @@

/**
* {@link BeanPostProcessor} that configures RabbitMQ metrics. Such arrangement is
* necessary because a connection can be eagerly created and cached without a reference
* to a proper {@link MetricsCollector}.
* necessary because a connection can be eagerly created and cached without a reference to
* a proper {@link MetricsCollector}.
*
* @author Stephane Nicoll
*/
class RabbitConnectionFactoryMetricsPostProcessor
implements BeanPostProcessor, Ordered {
class RabbitConnectionFactoryMetricsPostProcessor implements BeanPostProcessor, Ordered {

private static final String CONNECTION_FACTORY_SUFFIX = "connectionFactory";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,8 @@ private String getEndpointId(Object source) {
}

private String getEndpointId(Class<?> source) {
Endpoint annotation = AnnotatedElementUtils.getMergedAnnotation(source, Endpoint.class);
Endpoint annotation = AnnotatedElementUtils.getMergedAnnotation(source,
Endpoint.class);
Assert.state(annotation != null,
() -> "Class " + source + " is not annotated with @Endpoint");
return annotation.id();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,8 @@ private String getEndpointId(Object source) {
}

private String getEndpointId(Class<?> source) {
Endpoint annotation = AnnotatedElementUtils.getMergedAnnotation(source, Endpoint.class);
Endpoint annotation = AnnotatedElementUtils.getMergedAnnotation(source,
Endpoint.class);
Assert.state(annotation != null,
() -> "Class " + source + " is not annotated with @Endpoint");
return annotation.id();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,11 @@ public class ServletEndpointManagementContextConfigurationTests {

@Test
public void contextShouldContainServletEndpointRegistrar() {
FilteredClassLoader classLoader = new FilteredClassLoader(
ResourceConfig.class);
FilteredClassLoader classLoader = new FilteredClassLoader(ResourceConfig.class);
this.contextRunner.withClassLoader(classLoader).run((context) -> {
assertThat(context)
.hasSingleBean(ServletEndpointRegistrar.class);
ServletEndpointRegistrar bean = context.getBean(ServletEndpointRegistrar.class);
assertThat(context).hasSingleBean(ServletEndpointRegistrar.class);
ServletEndpointRegistrar bean = context
.getBean(ServletEndpointRegistrar.class);
String basePath = (String) ReflectionTestUtils.getField(bean, "basePath");
assertThat(basePath).isEqualTo("/test/actuator");
});
Expand All @@ -65,9 +64,9 @@ public void servletPathShouldNotAffectJerseyConfiguration() {
FilteredClassLoader classLoader = new FilteredClassLoader(
DispatcherServlet.class);
this.contextRunner.withClassLoader(classLoader).run((context) -> {
assertThat(context)
.hasSingleBean(ServletEndpointRegistrar.class);
ServletEndpointRegistrar bean = context.getBean(ServletEndpointRegistrar.class);
assertThat(context).hasSingleBean(ServletEndpointRegistrar.class);
ServletEndpointRegistrar bean = context
.getBean(ServletEndpointRegistrar.class);
String basePath = (String) ReflectionTestUtils.getField(bean, "basePath");
assertThat(basePath).isEqualTo("/actuator");
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ public class EndpointMBean implements DynamicMBean {
this.operations = getOperations(endpoint);
}


private Map<String, JmxOperation> getOperations(ExposableJmxEndpoint endpoint) {
Map<String, JmxOperation> operations = new HashMap<>();
endpoint.getOperations()
Expand All @@ -94,7 +93,8 @@ public Object invoke(String actionName, Object[] params, String[] signature)
+ "' has no operation named " + actionName;
throw new ReflectionException(new IllegalArgumentException(message), message);
}
ClassLoader previousClassLoader = overrideThreadContextClassLoader(this.classLoader);
ClassLoader previousClassLoader = overrideThreadContextClassLoader(
this.classLoader);
try {
return invoke(operation, params);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ public abstract class AbstractHealthAggregator implements HealthAggregator {

@Override
public final Health aggregate(Map<String, Health> healths) {
List<Status> statusCandidates = healths.values().stream()
.map(Health::getStatus).collect(Collectors.toList());
List<Status> statusCandidates = healths.values().stream().map(Health::getStatus)
.collect(Collectors.toList());
Status status = aggregateStatus(statusCandidates);
Map<String, Object> details = aggregateDetails(healths);
return new Health.Builder(status, details).build();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -64,26 +64,28 @@ public FreeMarkerAutoConfiguration(ApplicationContext applicationContext,

@PostConstruct
public void checkTemplateLocationExists() {
if (logger.isWarnEnabled()) {
if (this.properties.isCheckTemplateLocation()) {
TemplateLocation templatePathLocation = null;
List<TemplateLocation> locations = new ArrayList<>();
for (String templateLoaderPath : this.properties.getTemplateLoaderPath()) {
TemplateLocation location = new TemplateLocation(templateLoaderPath);
locations.add(location);
if (location.exists(this.applicationContext)) {
templatePathLocation = location;
break;
}
}
if (templatePathLocation == null) {
logger.warn("Cannot find template location(s): " + locations
+ " (please add some templates, "
+ "check your FreeMarker configuration, or set "
+ "spring.freemarker.checkTemplateLocation=false)");
}
if (logger.isWarnEnabled() && this.properties.isCheckTemplateLocation()) {
List<TemplateLocation> locations = getLocations();
if (locations.stream().noneMatch(this::locationExists)) {
logger.warn("Cannot find template location(s): " + locations
+ " (please add some templates, "
+ "check your FreeMarker configuration, or set "
+ "spring.freemarker.checkTemplateLocation=false)");
}
}
}

private List<TemplateLocation> getLocations() {
List<TemplateLocation> locations = new ArrayList<>();
for (String templateLoaderPath : this.properties.getTemplateLoaderPath()) {
TemplateLocation location = new TemplateLocation(templateLoaderPath);
locations.add(location);
}
return locations;
}

private boolean locationExists(TemplateLocation location) {
return location.exists(this.applicationContext);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,13 @@ public class QuartzDataSourceInitializerTests {
@Test
public void commentPrefixCanBeCustomized() {
this.contextRunner.withUserConfiguration(TestConfiguration.class)
.withPropertyValues(
"spring.quartz.jdbc.comment-prefix=##",
.withPropertyValues("spring.quartz.jdbc.comment-prefix=##",
"spring.quartz.jdbc.schema=classpath:org/springframework/boot/autoconfigure/quartz/tables_@@platform@@.sql")
.run((context) -> {
JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);
assertThat(jdbcTemplate.queryForObject(
"SELECT COUNT(*) FROM QRTZ_TEST_TABLE", Integer.class))
.isEqualTo(0);
.isEqualTo(0);
});
}

Expand All @@ -69,7 +68,8 @@ static class TestConfiguration {
@Bean
public QuartzDataSourceInitializer initializer(DataSource dataSource,
ResourceLoader resourceLoader, QuartzProperties properties) {
return new QuartzDataSourceInitializer(dataSource, resourceLoader, properties);
return new QuartzDataSourceInitializer(dataSource, resourceLoader,
properties);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ public void expandShouldUseCustomHandler() {
URI uri = URI.create("http://www.example.com");
given(uriTemplateHandler.expand("https://localhost:8080/", uriVariables))
.willReturn(uri);
LocalHostUriTemplateHandler handler = new LocalHostUriTemplateHandler(
environment, "https", uriTemplateHandler);
LocalHostUriTemplateHandler handler = new LocalHostUriTemplateHandler(environment,
"https", uriTemplateHandler);
assertThat(handler.expand("/", uriVariables)).isEqualTo(uri);
verify(uriTemplateHandler).expand("https://localhost:8080/", uriVariables);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;
import java.util.function.Supplier;
Expand Down Expand Up @@ -83,24 +82,26 @@ private void bindIndexed(ConfigurationPropertySource source,
ResolvableType aggregateType, ResolvableType elementType) {
ConfigurationProperty property = source.getConfigurationProperty(root);
if (property != null) {
Collection<Object> elements;
Object value = property.getValue();
if (value instanceof String && !StringUtils.hasText((String) value)) {
elements = Collections.emptyList();
}
else {
Object aggregate = convert(value, aggregateType, target.getAnnotations());
ResolvableType collectionType = ResolvableType
.forClassWithGenerics(collection.get().getClass(), elementType);
elements = convert(aggregate, collectionType);
}
collection.get().addAll(elements);
bindValue(target, collection.get(), aggregateType, elementType,
property.getValue());
}
else {
bindIndexed(source, root, elementBinder, collection, elementType);
}
}

private void bindValue(Bindable<?> target, Collection<Object> collection,
ResolvableType aggregateType, ResolvableType elementType, Object value) {
if (value instanceof String && !StringUtils.hasText((String) value)) {
return;
}
Object aggregate = convert(value, aggregateType, target.getAnnotations());
ResolvableType collectionType = ResolvableType
.forClassWithGenerics(collection.getClass(), elementType);
Collection<Object> elements = convert(aggregate, collectionType);
collection.addAll(elements);
}

private void bindIndexed(ConfigurationPropertySource source,
ConfigurationPropertyName root, AggregateElementBinder elementBinder,
IndexedCollectionSupplier collection, ResolvableType elementType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,10 @@ public ServletContextInitializerBeans(ListableBeanFactory beanFactory) {
this.initializers = new LinkedMultiValueMap<>();
addServletContextInitializerBeans(beanFactory);
addAdaptableBeans(beanFactory);
List<ServletContextInitializer> sortedInitializers = this.initializers.values().stream()
.flatMap(value -> value.stream().sorted(AnnotationAwareOrderComparator.INSTANCE))
List<ServletContextInitializer> sortedInitializers = this.initializers.values()
.stream()
.flatMap(value -> value.stream()
.sorted(AnnotationAwareOrderComparator.INSTANCE))
.collect(Collectors.toList());
this.sortedList = Collections.unmodifiableList(sortedInitializers);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down

0 comments on commit c5f63c1

Please sign in to comment.