Adds reflection hack back.

Hopefully not for long.
This commit is contained in:
Spencer Gibb
2017-10-30 16:27:12 -04:00
parent 3a780623c1
commit d31e7ae499

View File

@@ -14,6 +14,7 @@
package org.springframework.cloud.context.scope.refresh;
import java.io.Serializable;
import java.lang.reflect.Field;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
@@ -26,8 +27,10 @@ import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.util.ReflectionUtils;
/**
* <p>
@@ -150,8 +153,11 @@ public class RefreshScope extends GenericScope
try {
ConfigurationPropertiesBindingPostProcessor processor = context
.getBean(ConfigurationPropertiesBindingPostProcessor.class);
processor.setPropertySources(((ConfigurableEnvironment) this.context.getEnvironment()).getPropertySources());
processor.destroy();
//TODO: replace reflection with agreed upon contract
Field field = ReflectionUtils.findField(ConfigurationPropertiesBindingPostProcessor.class, "propertySources");
ReflectionUtils.makeAccessible(field);
MutablePropertySources propertySources = ((ConfigurableEnvironment) this.context.getEnvironment()).getPropertySources();
ReflectionUtils.setField(field, processor, propertySources);
processor.afterPropertiesSet();
}
catch (Exception e) {