Avoids NPE in case OriginLookup.getOrigin() returns null.
fixes gh-1572
This commit is contained in:
@@ -63,15 +63,15 @@ public class PassthruEnvironmentRepository implements EnvironmentRepository {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Environment findOne(String application, String env, String label) {
|
||||
return findOne(application, env, label, false);
|
||||
public Environment findOne(String application, String profile, String label) {
|
||||
return findOne(application, profile, label, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Environment findOne(String application, String env, String label,
|
||||
public Environment findOne(String application, String profile, String label,
|
||||
boolean includeOrigin) {
|
||||
Environment result = new Environment(application,
|
||||
StringUtils.commaDelimitedListToStringArray(env), label, null, null);
|
||||
StringUtils.commaDelimitedListToStringArray(profile), label, null, null);
|
||||
for (org.springframework.core.env.PropertySource<?> source : this.environment
|
||||
.getPropertySources()) {
|
||||
String name = source.getName();
|
||||
@@ -92,6 +92,10 @@ public class PassthruEnvironmentRepository implements EnvironmentRepository {
|
||||
OriginLookup<String> originLookup = (OriginLookup<String>) source;
|
||||
for (Object key : input.keySet()) {
|
||||
Origin origin = originLookup.getOrigin(key.toString());
|
||||
if (origin == null) {
|
||||
map.put(key, source.getProperty(key.toString()));
|
||||
continue;
|
||||
}
|
||||
String originDesc;
|
||||
if (origin instanceof TextResourceOrigin) {
|
||||
TextResourceOrigin tro = (TextResourceOrigin) origin;
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright 2018-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.config.server.environment;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.env.OriginTrackedMapPropertySource;
|
||||
import org.springframework.cloud.config.environment.Environment;
|
||||
import org.springframework.cloud.config.environment.PropertySource;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class PassthruEnvironmentRepositoryTests {
|
||||
|
||||
@Test
|
||||
public void originTrackedPropertySourceWithoutOriginWorks() {
|
||||
MockEnvironment mockEnvironment = new MockEnvironment();
|
||||
mockEnvironment.setProperty("normalKey", "normalValue");
|
||||
mockEnvironment.getPropertySources()
|
||||
.addFirst(new OriginTrackedMapPropertySource("myorigintrackedsource",
|
||||
Collections.singletonMap("keyNoOrigin", "valueNoOrigin")));
|
||||
PassthruEnvironmentRepository repository = new PassthruEnvironmentRepository(
|
||||
mockEnvironment);
|
||||
Environment environment = repository.findOne("testapp", "default", "master",
|
||||
true);
|
||||
assertThat(environment).isNotNull();
|
||||
List<PropertySource> propertySources = environment.getPropertySources();
|
||||
assertThat(propertySources).hasSize(2);
|
||||
for (PropertySource propertySource : propertySources) {
|
||||
Map source = propertySource.getSource();
|
||||
if (propertySource.getName().equals("myorigintrackedsource")) {
|
||||
assertThat(source).containsEntry("keyNoOrigin", "valueNoOrigin");
|
||||
}
|
||||
else if (propertySource.getName().equals("mockProperties")) {
|
||||
assertThat(source).containsEntry("normalKey", "normalValue");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user