From d6ab8a64b6aed6d5e7bf74edc26307cad6e1984b Mon Sep 17 00:00:00 2001 From: spencergibb Date: Wed, 5 May 2021 20:08:24 -0400 Subject: [PATCH] Fixes ordering with local and remote sources with profiles. If the context is associated with a profile, the Option.PROFILE_SPECIFIC is added. Fixes gh-706 --- .../consul/config/ConsulConfigDataLoader.java | 31 +++++- .../ConsulConfigDataLocationResolver.java | 17 ++-- .../config/ConsulConfigDataResource.java | 24 ++++- .../consul/config/ConsulPropertySources.java | 49 ++++++++- ...nfigDataCustomizationIntegrationTests.java | 20 ++++ .../consul/test/ConsulTestcontainers.java | 7 ++ .../pom.xml | 27 +---- .../ConsulConfigDataApplication.java | 88 ----------------- ...sulConfigDataOrderingIntegrationTests.java | 99 +++++++++++++++++++ .../resources/orderingtest-dev.properties | 1 + .../test/resources/orderingtest.properties | 1 + 11 files changed, 237 insertions(+), 127 deletions(-) create mode 100644 spring-cloud-consul-integration-tests/spring-cloud-consul-configdata-tests/src/test/java/org/springframework/cloud/consul/configdatatests/ConsulConfigDataOrderingIntegrationTests.java create mode 100644 spring-cloud-consul-integration-tests/spring-cloud-consul-configdata-tests/src/test/resources/orderingtest-dev.properties create mode 100644 spring-cloud-consul-integration-tests/spring-cloud-consul-configdata-tests/src/test/resources/orderingtest.properties diff --git a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLoader.java b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLoader.java index 6a35437c..501b04a3 100644 --- a/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLoader.java +++ b/spring-cloud-consul-config/src/main/java/org/springframework/cloud/consul/config/ConsulConfigDataLoader.java @@ -16,21 +16,29 @@ package org.springframework.cloud.consul.config; +import java.util.ArrayList; import java.util.Collections; +import java.util.EnumSet; +import java.util.List; import com.ecwid.consul.v1.ConsulClient; import org.apache.commons.logging.Log; import org.springframework.boot.context.config.ConfigData; +import org.springframework.boot.context.config.ConfigData.Option; +import org.springframework.boot.context.config.ConfigData.Options; import org.springframework.boot.context.config.ConfigDataLoader; import org.springframework.boot.context.config.ConfigDataLoaderContext; import org.springframework.boot.context.config.ConfigDataResourceNotFoundException; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.cloud.consul.config.ConsulBootstrapper.LoadContext; import org.springframework.cloud.consul.config.ConsulBootstrapper.LoaderInterceptor; +import org.springframework.util.StringUtils; public class ConsulConfigDataLoader implements ConfigDataLoader { + private static final EnumSet