Merge branch '3.0.x' into main
This commit is contained in:
@@ -66,9 +66,16 @@ public class ConfigServerConfigDataLocationResolver
|
||||
protected PropertyHolder loadProperties(ConfigDataLocationResolverContext context, String uris) {
|
||||
Binder binder = context.getBinder();
|
||||
BindHandler bindHandler = getBindHandler(context);
|
||||
ConfigClientProperties configClientProperties = binder
|
||||
.bind(ConfigClientProperties.PREFIX, Bindable.of(ConfigClientProperties.class), bindHandler)
|
||||
.orElseGet(ConfigClientProperties::new);
|
||||
|
||||
ConfigClientProperties configClientProperties;
|
||||
if (context.getBootstrapContext().isRegistered(ConfigClientProperties.class)) {
|
||||
configClientProperties = context.getBootstrapContext().get(ConfigClientProperties.class);
|
||||
}
|
||||
else {
|
||||
configClientProperties = binder
|
||||
.bind(ConfigClientProperties.PREFIX, Bindable.of(ConfigClientProperties.class), bindHandler)
|
||||
.orElseGet(ConfigClientProperties::new);
|
||||
}
|
||||
if (!StringUtils.hasText(configClientProperties.getName())) {
|
||||
// default to spring.application.name if name isn't set
|
||||
String applicationName = binder.bind("spring.application.name", Bindable.of(String.class), bindHandler)
|
||||
|
||||
@@ -31,7 +31,10 @@ import org.springframework.boot.logging.DeferredLog;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class ConfigServerConfigDataLocationResolverTests {
|
||||
@@ -145,6 +148,38 @@ public class ConfigServerConfigDataLocationResolverTests {
|
||||
assertThat(resource.getProperties().getUri()).containsExactly(locationUri.split(","));
|
||||
}
|
||||
|
||||
@Test
|
||||
void useExistingConfigClientPropertiesInBootstrapContext() {
|
||||
ConfigurableBootstrapContext bootstrapContext = mock(ConfigurableBootstrapContext.class);
|
||||
when(bootstrapContext.isRegistered(eq(ConfigClientProperties.class))).thenReturn(true);
|
||||
ConfigClientProperties configClientProperties = new ConfigClientProperties();
|
||||
configClientProperties.setUri(new String[] { "http://myuri" });
|
||||
when(bootstrapContext.get(eq(ConfigClientProperties.class))).thenReturn(configClientProperties);
|
||||
when(context.getBootstrapContext()).thenReturn(bootstrapContext);
|
||||
List<ConfigServerConfigDataResource> resources = this.resolver.resolveProfileSpecific(context,
|
||||
ConfigDataLocation.of("configserver:"), mock(Profiles.class));
|
||||
assertThat(resources).hasSize(1);
|
||||
verify(bootstrapContext, times(1)).get(eq(ConfigClientProperties.class));
|
||||
ConfigServerConfigDataResource resource = resources.get(0);
|
||||
assertThat(resource.getProperties().getUri()).isEqualTo(new String[] { "http://myuri" });
|
||||
}
|
||||
|
||||
@Test
|
||||
void createNewConfigClientPropertiesInBootstrapContext() {
|
||||
ConfigurableBootstrapContext bootstrapContext = mock(ConfigurableBootstrapContext.class);
|
||||
when(bootstrapContext.isRegistered(eq(ConfigClientProperties.class))).thenReturn(false);
|
||||
ConfigClientProperties configClientProperties = new ConfigClientProperties();
|
||||
configClientProperties.setUri(new String[] { "http://myuri" });
|
||||
when(bootstrapContext.get(eq(ConfigClientProperties.class))).thenReturn(configClientProperties);
|
||||
when(context.getBootstrapContext()).thenReturn(bootstrapContext);
|
||||
List<ConfigServerConfigDataResource> resources = this.resolver.resolveProfileSpecific(context,
|
||||
ConfigDataLocation.of("configserver:http://locationuri"), mock(Profiles.class));
|
||||
assertThat(resources).hasSize(1);
|
||||
verify(bootstrapContext, times(0)).get(eq(ConfigClientProperties.class));
|
||||
ConfigServerConfigDataResource resource = resources.get(0);
|
||||
assertThat(resource.getProperties().getUri()).isEqualTo(new String[] { "http://locationuri" });
|
||||
}
|
||||
|
||||
private ConfigServerConfigDataResource testUri(String propertyUri, String locationUri) {
|
||||
this.environment.setProperty(ConfigClientProperties.PREFIX + ".uri", propertyUri);
|
||||
when(context.getBootstrapContext()).thenReturn(mock(ConfigurableBootstrapContext.class));
|
||||
|
||||
Reference in New Issue
Block a user