Updates to add new ConfigData optional parameter.

This commit is contained in:
spencergibb
2020-08-26 13:04:56 -04:00
parent e1478a1b45
commit 34e1220520
7 changed files with 41 additions and 20 deletions

View File

@@ -125,10 +125,16 @@ public abstract class AbstractConfigDataLoader<L extends AbstractConfigDataLocat
catch (Exception e) {
error = e;
}
if (properties.isFailFast()) {
throw new IllegalStateException(
"Could not locate PropertySource and the fail fast property is set, failing"
+ (errorBody == null ? "" : ": " + errorBody),
if (properties.isFailFast() || !location.isOptional()) {
String reason;
if (properties.isFailFast()) {
reason = "the fail fast property is set";
}
else {
reason = "the location is not optional";
}
throw new IllegalStateException("Could not locate PropertySource and "
+ reason + ", failing" + (errorBody == null ? "" : ": " + errorBody),
error);
}
logger.warn("Could not locate PropertySource: "

View File

@@ -29,12 +29,15 @@ public abstract class AbstractConfigDataLocation extends ConfigDataLocation {
private final ConfigClientProperties properties;
private final boolean optional;
private final Profiles profiles;
public AbstractConfigDataLocation(RestTemplate restTemplate,
ConfigClientProperties properties, Profiles profiles) {
ConfigClientProperties properties, boolean optional, Profiles profiles) {
this.restTemplate = restTemplate;
this.properties = properties;
this.optional = optional;
this.profiles = profiles;
}
@@ -46,6 +49,10 @@ public abstract class AbstractConfigDataLocation extends ConfigDataLocation {
return this.properties;
}
public boolean isOptional() {
return this.optional;
}
public Profiles getProfiles() {
return this.profiles;
}
@@ -61,18 +68,21 @@ public abstract class AbstractConfigDataLocation extends ConfigDataLocation {
AbstractConfigDataLocation that = (AbstractConfigDataLocation) o;
return Objects.equals(this.restTemplate, that.restTemplate)
&& Objects.equals(this.properties, that.properties)
&& Objects.equals(this.optional, that.optional)
&& Objects.equals(this.profiles, that.profiles);
}
@Override
public int hashCode() {
return Objects.hash(this.restTemplate, this.properties, this.profiles);
return Objects.hash(this.restTemplate, this.properties, this.optional,
this.profiles);
}
@Override
public String toString() {
return new ToStringCreator(this).append("uris", properties.getUri())
.append("profiles", profiles.getAccepted()).toString();
.append("optional", optional).append("profiles", profiles.getAccepted())
.toString();
}

View File

@@ -103,12 +103,13 @@ public abstract class AbstractConfigDataLocationResolver<L extends AbstractConfi
return PREFIX;
}
public List<L> resolve(ConfigDataLocationResolverContext context, String location) {
public List<L> resolve(ConfigDataLocationResolverContext context, String location,
boolean optional) {
return Collections.emptyList();
}
public List<L> resolveProfileSpecific(ConfigDataLocationResolverContext context,
String location, Profiles profiles) {
String location, boolean optional, Profiles profiles) {
ConfigClientProperties properties = loadProperties(context.getBinder());
@@ -123,12 +124,13 @@ public abstract class AbstractConfigDataLocationResolver<L extends AbstractConfi
RestTemplate restTemplate = createRestTemplate(properties);
List<L> locations = new ArrayList<>();
locations.add(createConfigDataLocation(profiles, properties, restTemplate));
locations.add(
createConfigDataLocation(optional, profiles, properties, restTemplate));
return locations;
}
protected abstract L createConfigDataLocation(Profiles profiles,
protected abstract L createConfigDataLocation(boolean optional, Profiles profiles,
ConfigClientProperties properties, RestTemplate restTemplate);
}

View File

@@ -22,8 +22,8 @@ import org.springframework.web.client.RestTemplate;
public class ConfigServerConfigDataLocation extends AbstractConfigDataLocation {
public ConfigServerConfigDataLocation(RestTemplate restTemplate,
ConfigClientProperties properties, Profiles profiles) {
super(restTemplate, properties, profiles);
ConfigClientProperties properties, boolean optional, Profiles profiles) {
super(restTemplate, properties, optional, profiles);
}
}

View File

@@ -31,9 +31,11 @@ public class ConfigServerConfigDataLocationResolver
}
@Override
protected ConfigServerConfigDataLocation createConfigDataLocation(Profiles profiles,
ConfigClientProperties properties, RestTemplate restTemplate) {
return new ConfigServerConfigDataLocation(restTemplate, properties, profiles);
protected ConfigServerConfigDataLocation createConfigDataLocation(boolean optional,
Profiles profiles, ConfigClientProperties properties,
RestTemplate restTemplate) {
return new ConfigServerConfigDataLocation(restTemplate, properties, optional,
profiles);
}
}

View File

@@ -22,8 +22,8 @@ import org.springframework.web.client.RestTemplate;
public class TestConfigServerConfigDataLocation extends AbstractConfigDataLocation {
public TestConfigServerConfigDataLocation(RestTemplate restTemplate,
ConfigClientProperties properties, Profiles profiles) {
super(restTemplate, properties, profiles);
ConfigClientProperties properties, boolean optional, Profiles profiles) {
super(restTemplate, properties, optional, profiles);
}
}

View File

@@ -53,9 +53,10 @@ public class TestConfigServerConfigDataLocationResolver
@Override
protected TestConfigServerConfigDataLocation createConfigDataLocation(
Profiles profiles, ConfigClientProperties properties,
boolean optional, Profiles profiles, ConfigClientProperties properties,
RestTemplate restTemplate) {
return new TestConfigServerConfigDataLocation(restTemplate, properties, profiles);
return new TestConfigServerConfigDataLocation(restTemplate, properties, optional,
profiles);
}
}