pull/7593/head
Phillip Webb 8 years ago
parent 6061dd492e
commit e430583eaf

@ -28,6 +28,8 @@ import org.springframework.boot.bind.RelaxedDataBinder;
import org.springframework.boot.bind.RelaxedNames;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;
import org.springframework.core.env.PropertySources;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.validation.DataBinder;
@ -41,20 +43,19 @@ class OnBootstrapHostsCondition extends SpringBootCondition {
@Override
public ConditionOutcome getMatchOutcome(ConditionContext context,
AnnotatedTypeMetadata metadata) {
ConfigurableEnvironment environment = (ConfigurableEnvironment) context
.getEnvironment();
PropertyResolver resolver = new PropertyResolver(environment, "spring.couchbase");
Environment environment = context.getEnvironment();
PropertyResolver resolver = new PropertyResolver(
((ConfigurableEnvironment) environment).getPropertySources(),
"spring.couchbase");
Map.Entry<String, Object> entry = resolver.resolveProperty("bootstrap-hosts");
if (entry != null) {
return ConditionOutcome.match(
ConditionMessage.forCondition(OnBootstrapHostsCondition.class.getName())
.found("property").items("spring.couchbase.bootstrap-hosts"));
}
else {
return ConditionOutcome.noMatch(
ConditionMessage.forCondition(OnBootstrapHostsCondition.class.getName())
.didNotFind("property").items("spring.couchbase.bootstrap-hosts"));
return ConditionOutcome.match(ConditionMessage
.forCondition(OnBootstrapHostsCondition.class.getName())
.found("property").items("spring.couchbase.bootstrap-hosts"));
}
return ConditionOutcome.noMatch(ConditionMessage
.forCondition(OnBootstrapHostsCondition.class.getName())
.didNotFind("property").items("spring.couchbase.bootstrap-hosts"));
}
private static class PropertyResolver {
@ -63,12 +64,11 @@ class OnBootstrapHostsCondition extends SpringBootCondition {
private final Map<String, Object> content;
PropertyResolver(ConfigurableEnvironment environment, String prefix) {
PropertyResolver(PropertySources propertySources, String prefix) {
this.prefix = prefix;
this.content = new HashMap<String, Object>();
DataBinder binder = new RelaxedDataBinder(this.content, this.prefix);
binder.bind(new PropertySourcesPropertyValues(
environment.getPropertySources()));
binder.bind(new PropertySourcesPropertyValues(propertySources));
}
Map.Entry<String, Object> resolveProperty(String name) {
@ -89,5 +89,3 @@ class OnBootstrapHostsCondition extends SpringBootCondition {
}
}

@ -73,7 +73,6 @@ public class OnBootstrapHostsConditionTests {
assertThat(this.context.containsBean("foo")).isTrue();
}
private void load(Class<?> config, String... environment) {
this.context = new AnnotationConfigApplicationContext();
EnvironmentTestUtils.addEnvironment(this.context, environment);

@ -276,45 +276,55 @@ class ImportsContextCustomizer implements ContextCustomizer {
return (obj != null && getClass().equals(obj.getClass())
&& this.annotations.equals(((ContextCustomizerKey) obj).annotations));
}
}
private interface AnnotationFilter {
boolean isIgnored(Annotation annotation);
/**
* Filter used to limit considered annotations.
*/
private interface AnnotationFilter {
}
boolean isIgnored(Annotation annotation);
private static final class JavaLangAnnotationFilter implements AnnotationFilter {
}
@Override
public boolean isIgnored(Annotation annotation) {
return AnnotationUtils.isInJavaLangAnnotationPackage(annotation);
}
/**
* {@link AnnotationFilter} for {@literal java.lang} annotations.
*/
private static final class JavaLangAnnotationFilter implements AnnotationFilter {
@Override
public boolean isIgnored(Annotation annotation) {
return AnnotationUtils.isInJavaLangAnnotationPackage(annotation);
}
private static final class KotlinAnnotationFilter implements AnnotationFilter {
}
@Override
public boolean isIgnored(Annotation annotation) {
return "kotlin.Metadata".equals(annotation.annotationType().getName())
|| isInKotlinAnnotationPackage(annotation);
}
/**
* {@link AnnotationFilter} for Kotlin annotations.
*/
private static final class KotlinAnnotationFilter implements AnnotationFilter {
private boolean isInKotlinAnnotationPackage(Annotation annotation) {
return annotation.annotationType().getName()
.startsWith("kotlin.annotation.");
}
@Override
public boolean isIgnored(Annotation annotation) {
return "kotlin.Metadata".equals(annotation.annotationType().getName())
|| isInKotlinAnnotationPackage(annotation);
}
private boolean isInKotlinAnnotationPackage(Annotation annotation) {
return annotation.annotationType().getName().startsWith("kotlin.annotation.");
}
private static final class SpockAnnotationFilter implements AnnotationFilter {
}
@Override
public boolean isIgnored(Annotation annotation) {
return annotation.annotationType().getName()
.startsWith("org.spockframework.");
}
/**
* {@link AnnotationFilter} for Spock annotations.
*/
private static final class SpockAnnotationFilter implements AnnotationFilter {
@Override
public boolean isIgnored(Annotation annotation) {
return annotation.annotationType().getName()
.startsWith("org.spockframework.");
}
}

@ -128,10 +128,10 @@ public class ArtifactsLibrariesTests {
this.libs = new ArtifactsLibraries(this.artifacts, null, mock(Log.class));
this.libs.doWithLibraries(this.callback);
verify(this.callback, times(2)).library(this.libraryCaptor.capture());
assertThat(this.libraryCaptor.getAllValues().get(0).getName()).isEqualTo(
"g1-artifact-1.0.jar");
assertThat(this.libraryCaptor.getAllValues().get(1).getName()).isEqualTo(
"g2-artifact-1.0.jar");
assertThat(this.libraryCaptor.getAllValues().get(0).getName())
.isEqualTo("g1-artifact-1.0.jar");
assertThat(this.libraryCaptor.getAllValues().get(1).getName())
.isEqualTo("g2-artifact-1.0.jar");
}
}

Loading…
Cancel
Save