Browse Source

Move BootstrapPropertySource to its own class and expose delegate PropertySource via getter (#695)

pull/705/head
Ryan Baxter 5 years ago committed by GitHub
parent
commit
8127bab974
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 65
      spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/config/BootstrapPropertySource.java
  2. 34
      spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/config/PropertySourceBootstrapConfiguration.java

65
spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/config/BootstrapPropertySource.java

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
/*
* Copyright 2012-2020 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.bootstrap.config;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.util.StringUtils;
import static org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.BOOTSTRAP_PROPERTY_SOURCE_NAME;
/**
* @author Ryan Baxter
*/
public class BootstrapPropertySource<T> extends EnumerablePropertySource<T> {
private PropertySource<T> delegate;
BootstrapPropertySource(PropertySource<T> delegate) {
super(BOOTSTRAP_PROPERTY_SOURCE_NAME + "-" + delegate.getName(),
delegate.getSource());
this.delegate = delegate;
}
@Override
public Object getProperty(String name) {
return this.delegate.getProperty(name);
}
@Override
public String[] getPropertyNames() {
Set<String> names = new LinkedHashSet<>();
if (!(this.delegate instanceof EnumerablePropertySource)) {
throw new IllegalStateException(
"Failed to enumerate property names due to non-enumerable property source: "
+ this.delegate);
}
names.addAll(Arrays.asList(
((EnumerablePropertySource<?>) this.delegate).getPropertyNames()));
return StringUtils.toStringArray(names);
}
public PropertySource<T> getDelegate() {
return delegate;
}
}

34
spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/config/PropertySourceBootstrapConfiguration.java

@ -17,10 +17,8 @@ @@ -17,10 +17,8 @@
package org.springframework.cloud.bootstrap.config;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ -47,7 +45,6 @@ import org.springframework.core.Ordered; @@ -47,7 +45,6 @@ import org.springframework.core.Ordered;
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.springframework.core.env.CompositePropertySource;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;
@ -55,7 +52,6 @@ import org.springframework.core.env.StandardEnvironment; @@ -55,7 +52,6 @@ import org.springframework.core.env.StandardEnvironment;
import org.springframework.util.ResourceUtils;
import org.springframework.util.StringUtils;
import static org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.BOOTSTRAP_PROPERTY_SOURCE_NAME;
import static org.springframework.core.env.StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME;
/**
@ -264,33 +260,3 @@ public class PropertySourceBootstrapConfiguration implements @@ -264,33 +260,3 @@ public class PropertySourceBootstrapConfiguration implements
}
}
class BootstrapPropertySource<T> extends EnumerablePropertySource<T> {
private PropertySource<T> p;
BootstrapPropertySource(PropertySource<T> p) {
super(BOOTSTRAP_PROPERTY_SOURCE_NAME + "-" + p.getName(), p.getSource());
this.p = p;
}
@Override
public Object getProperty(String name) {
return this.p.getProperty(name);
}
@Override
public String[] getPropertyNames() {
Set<String> names = new LinkedHashSet<>();
if (!(this.p instanceof EnumerablePropertySource)) {
throw new IllegalStateException(
"Failed to enumerate property names due to non-enumerable property source: "
+ this.p);
}
names.addAll(
Arrays.asList(((EnumerablePropertySource<?>) this.p).getPropertyNames()));
return StringUtils.toStringArray(names);
}
}

Loading…
Cancel
Save