Merge branch '1.5.x'

This commit is contained in:
Phillip Webb
2016-12-05 11:20:24 -08:00
8 changed files with 106 additions and 48 deletions

View File

@@ -195,7 +195,7 @@ abstract class AbstractNestedCondition extends SpringBootCondition
metadata);
}
return new ConditionOutcome(condition.matches(this.context, metadata),
(ConditionMessage) null);
ConditionMessage.empty());
}
public ConditionOutcome getUltimateOutcome() {

View File

@@ -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 {
}
}

View File

@@ -21,8 +21,11 @@ import org.junit.Test;
import org.springframework.boot.test.util.EnvironmentTestUtils;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
import static org.assertj.core.api.Assertions.assertThat;
@@ -94,6 +97,20 @@ public class AllNestedConditionsTests {
}
@Conditional(NonSpringBootCondition.class)
static class SubclassC {
}
}
static class NonSpringBootCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return true;
}
}
}

View File

@@ -21,8 +21,11 @@ import org.junit.Test;
import org.springframework.boot.test.util.EnvironmentTestUtils;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
import static org.assertj.core.api.Assertions.assertThat;
@@ -98,6 +101,20 @@ public class AnyNestedConditionTests {
}
@Conditional(NonSpringBootCondition.class)
static class SubclassC {
}
}
static class NonSpringBootCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return false;
}
}
}

View File

@@ -21,8 +21,11 @@ import org.junit.Test;
import org.springframework.boot.test.util.EnvironmentTestUtils;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
import static org.assertj.core.api.Assertions.assertThat;
@@ -94,6 +97,20 @@ public class NoneNestedConditionsTests {
}
@Conditional(NonSpringBootCondition.class)
static class SubClassC {
}
}
static class NonSpringBootCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return false;
}
}
}

View File

@@ -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);