From d31e7ae499f59f11ea0d16e7c49f2f911323e927 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Mon, 30 Oct 2017 16:27:12 -0400 Subject: [PATCH] Adds reflection hack back. Hopefully not for long. --- .../cloud/context/scope/refresh/RefreshScope.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java index 1d421ae5..a858dcf9 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java @@ -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; /** *

@@ -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) {