Guards Should Use Environment
Previously all of the guard behavior was triggered by the contents of environment variables. In a Spring Boot application, looking at the environment isn't the only way to get configuration. This change updates the guards to use the Environment for configuration retrieval. [resolves #30] Signed-off-by: Ben Hale <bhale@vmware.com>
This commit is contained in:
@@ -23,7 +23,6 @@ import org.springframework.boot.context.config.ConfigFileApplicationListener;
|
||||
import org.springframework.boot.env.EnvironmentPostProcessor;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
import org.springframework.core.env.ConfigurableEnvironment;
|
||||
import org.springframework.core.env.PropertySource;
|
||||
import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||
@@ -66,7 +65,6 @@ public final class BindingSpecificEnvironmentPostProcessor implements Environmen
|
||||
this.bindings = new Bindings();
|
||||
this.processors = SpringFactoriesLoader.
|
||||
loadFactories(BindingsPropertiesProcessor.class, getClass().getClassLoader());
|
||||
AnnotationAwareOrderComparator.sort(this.processors);
|
||||
}
|
||||
|
||||
BindingSpecificEnvironmentPostProcessor(Bindings bindings, BindingsPropertiesProcessor... processors) {
|
||||
@@ -76,7 +74,7 @@ public final class BindingSpecificEnvironmentPostProcessor implements Environmen
|
||||
|
||||
@Override
|
||||
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
|
||||
if (!isGlobalEnabled()) {
|
||||
if (!isGlobalEnabled(environment)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -86,7 +84,7 @@ public final class BindingSpecificEnvironmentPostProcessor implements Environmen
|
||||
}
|
||||
|
||||
Map<String, Object> properties = new HashMap<>();
|
||||
processors.forEach(processor -> processor.process(bindings, properties));
|
||||
processors.forEach(processor -> processor.process(environment, bindings, properties));
|
||||
if (properties.isEmpty()) {
|
||||
log.debug("No properties set from CNB Bindings. Skipping PropertySource creation.");
|
||||
return;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -30,9 +31,10 @@ public interface BindingsPropertiesProcessor {
|
||||
/**
|
||||
* Transform the currently accumulated {@link Bindings}-related properties.
|
||||
*
|
||||
* @param bindings the {@code Bindings} exposed to the application.
|
||||
* @param properties the currently accumulated properties.
|
||||
* @param environment the {@link Environment} that the processor is executing with.
|
||||
* @param bindings the {@code Bindings} exposed to the application.
|
||||
* @param properties the currently accumulated properties.
|
||||
*/
|
||||
void process(Bindings bindings, Map<String, Object> properties);
|
||||
void process(Environment environment, Bindings bindings, Map<String, Object> properties);
|
||||
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -35,8 +36,8 @@ public final class CassandraBindingsPropertiesProcessor implements BindingsPrope
|
||||
public static final String KIND = "Cassandra";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -36,8 +37,8 @@ public final class Db2BindingsPropertiesProcessor implements BindingsPropertiesP
|
||||
public static final String KIND = "DB2";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,17 +16,18 @@
|
||||
|
||||
package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
final class Guards {
|
||||
|
||||
static boolean isGlobalEnabled() {
|
||||
String value = System.getProperty("org.springframework.cloud.bindings.boot.enable", "false");
|
||||
return Boolean.parseBoolean(value);
|
||||
static boolean isGlobalEnabled(Environment environment) {
|
||||
return environment.getProperty("org.springframework.cloud.bindings.boot.enable", Boolean.class, false);
|
||||
}
|
||||
|
||||
static boolean isKindEnabled(String kind) {
|
||||
String property = String.format("org.springframework.cloud.bindings.boot.%s.enable", kind.toLowerCase());
|
||||
String value = System.getProperty(property, "true");
|
||||
return Boolean.parseBoolean(value);
|
||||
static boolean isKindEnabled(Environment environment, String kind) {
|
||||
return environment.getProperty(
|
||||
String.format("org.springframework.cloud.bindings.boot.%s.enable", kind.toLowerCase()),
|
||||
Boolean.class, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -34,8 +35,8 @@ public final class MongoDbBindingsPropertiesProcessor implements BindingsPropert
|
||||
public static final String KIND = "MongoDB";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -36,8 +37,8 @@ public final class MySqlBindingsPropertiesProcessor implements BindingsPropertie
|
||||
public static final String KIND = "MySQL";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -36,8 +37,8 @@ public final class OracleBindingsPropertiesProcessor implements BindingsProperti
|
||||
public static final String KIND = "Oracle";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -36,8 +37,8 @@ public final class PostgreSqlBindingsPropertiesProcessor implements BindingsProp
|
||||
public static final String KIND = "PostgreSQL";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -34,8 +35,8 @@ public final class RedisBindingsPropertiesProcessor implements BindingsPropertie
|
||||
public static final String KIND = "Redis";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.cloud.bindings.boot;
|
||||
|
||||
import org.springframework.cloud.bindings.Binding;
|
||||
import org.springframework.cloud.bindings.Bindings;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -36,8 +37,8 @@ public final class SqlServerBindingsPropertiesProcessor implements BindingsPrope
|
||||
public static final String KIND = "SQLServer";
|
||||
|
||||
@Override
|
||||
public void process(Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(KIND)) {
|
||||
public void process(Environment environment, Bindings bindings, Map<String, Object> properties) {
|
||||
if (!isKindEnabled(environment, KIND)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user