typePropertyList = CompositeUtils
+ .getCompositeTypeList(this.environment);
+ for (int i = 0; i < typePropertyList.size(); i++) {
String type = typePropertyList.get(i);
String factoryName = CompositeUtils.getFactoryName(type, beanFactory);
-
- Type[] factoryTypes = CompositeUtils.getEnvironmentRepositoryFactoryTypeParams(beanFactory, factoryName);
- Class extends EnvironmentRepositoryProperties> propertiesClass =
- (Class extends EnvironmentRepositoryProperties>) factoryTypes[1];
- EnvironmentRepositoryProperties properties = bindProperties(i, propertiesClass, environment);
+ Type[] factoryTypes = CompositeUtils
+ .getEnvironmentRepositoryFactoryTypeParams(beanFactory, factoryName);
+ Class extends EnvironmentRepositoryProperties> propertiesClass;
+ propertiesClass = (Class extends EnvironmentRepositoryProperties>) factoryTypes[1];
+ EnvironmentRepositoryProperties properties = bindProperties(i,
+ propertiesClass, this.environment);
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder
.genericBeanDefinition(EnvironmentRepository.class)
.setFactoryMethodOnBean("build", factoryName)
- .addConstructorArgValue(properties)
- .getBeanDefinition();
+ .addConstructorArgValue(properties).getBeanDefinition();
String beanName = String.format("%s-env-repo%d", type, i);
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;
registry.registerBeanDefinition(beanName, beanDefinition);
}
}
- private P bindProperties(
- int index, Class
propertiesClass, Environment environment) {
+ private
P bindProperties(int index,
+ Class
propertiesClass, Environment environment) {
Binder binder = Binder.get(environment);
- String environmentConfigurationPropertyName = String.format("spring.cloud.config.server.composite[%d]", index);
- P properties = binder.bind(environmentConfigurationPropertyName, propertiesClass).orElseCreate(propertiesClass);
+ String environmentConfigurationPropertyName = String
+ .format("spring.cloud.config.server.composite[%d]", index);
+ P properties = binder.bind(environmentConfigurationPropertyName, propertiesClass)
+ .orElseCreate(propertiesClass);
properties.setOrder(index + 1);
return properties;
}
+
}
diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/composite/CompositeUtils.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/composite/CompositeUtils.java
index 1f6879e4..00e23d8a 100644
--- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/composite/CompositeUtils.java
+++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/composite/CompositeUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 the original author or authors.
+ * 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.
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.springframework.cloud.config.server.composite;
import java.lang.reflect.AnnotatedType;
@@ -34,60 +35,81 @@ import org.springframework.core.type.MethodMetadata;
/**
* @author Dylan Roberts
*/
-public class CompositeUtils {
+public final class CompositeUtils {
- /**
- * Returns list of values of the `type` field from the `spring.cloud.config.server.composite` collection.
- */
- public static List getCompositeTypeList(Environment environment) {
- return Binder.get(environment)
- .bind("spring.cloud.config.server", CompositeConfig.class)
- .get().getComposite().stream()
- .map(map -> (String)map.get("type"))
- .collect(Collectors.toList());
- }
+ private CompositeUtils() {
+ throw new IllegalStateException("Can't instantiate a utility class");
+ }
- static class CompositeConfig {
- List