diff --git a/src/main/java/de/ozgcloud/admin/AdministrationApplication.java b/src/main/java/de/ozgcloud/admin/AdministrationApplication.java index 69932910471a8d0cfc81064a9bec7dcbe40c0389..a0c579e40acea317e9280c230706e1321a8a67ca 100644 --- a/src/main/java/de/ozgcloud/admin/AdministrationApplication.java +++ b/src/main/java/de/ozgcloud/admin/AdministrationApplication.java @@ -2,10 +2,11 @@ package de.ozgcloud.admin; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.config.server.EnableConfigServer; + +import de.ozgcloud.admin.environment.EnableMongoConfigServer; @SpringBootApplication -@EnableConfigServer +@EnableMongoConfigServer public class AdministrationApplication { public static void main(String[] args) { diff --git a/src/main/java/de/ozgcloud/admin/environment/EnableMongoConfigServer.java b/src/main/java/de/ozgcloud/admin/environment/EnableMongoConfigServer.java index af6c7542139f953725758d7ee1bb8c895b6d031b..b94610f7240a0c5ea17043d10668f43b5726ed11 100644 --- a/src/main/java/de/ozgcloud/admin/environment/EnableMongoConfigServer.java +++ b/src/main/java/de/ozgcloud/admin/environment/EnableMongoConfigServer.java @@ -5,13 +5,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.springframework.cloud.config.server.EnableConfigServer; import org.springframework.context.annotation.Import; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import(MongoEnvironmentRepositoryConfiguration.class) -@EnableConfigServer +@EnableMongoConfigServer public @interface EnableMongoConfigServer { } diff --git a/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepository.java b/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepository.java index 43d89436629c657288e254f8059aff1b0875ff92..fbf621bb197cbccdadf3a09c6efdae8c03a0117f 100644 --- a/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepository.java +++ b/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepository.java @@ -9,13 +9,12 @@ import org.springframework.cloud.config.server.environment.EnvironmentRepository import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import org.springframework.stereotype.Component; -@Component +// @Component public class MongoEnvironmentRepository implements EnvironmentRepository { - private static final String LABEL = "label"; + public static final String COLLECTION_NAME = "configuration_properties"; + private static final String APPLICATION = "application"; private static final String PROFILE = "profile"; - private static final String DEFAULT = "default"; private MongoOperations mongoOperations; @@ -25,30 +24,29 @@ public class MongoEnvironmentRepository implements EnvironmentRepository { @Override public Environment findOne(String application, String profile, String label) { - String[] profiles = splitInputProfileIntoArrayAndAddDefaultProfile(profile); - Query query = buildQuery(profiles, label); - List<MongoPropertySource> sources = findMatchingEntriesInMongoDB(query, application); - Environment environment = new Environment(application, profiles, label == null ? DEFAULT : label, null, null); + String[] profiles = splitInputProfileIntoArray(profile); + Query query = buildMongoQuery(application, profiles); + List<MongoPropertySource> matchingPropertyEntries = findMatchingEntriesInMongoDB(query, COLLECTION_NAME); + Environment environment = new Environment(application, profiles, null, null, null); - environment.addAll(sources.stream().map(this::transformMonPropertySourceToPropertySource).collect(Collectors.toList())); + environment.addAll(matchingPropertyEntries.stream().map(this::transformMonPropertySourceToPropertySource).collect(Collectors.toList())); return environment; } - private String[] splitInputProfileIntoArrayAndAddDefaultProfile(String profile) { - return (profile + "," + DEFAULT).split(","); + private String[] splitInputProfileIntoArray(String profile) { + return (profile).split(","); } - private Query buildQuery(String[] profiles, String label) { + private Query buildMongoQuery(String application, String[] profiles) { Query query = new Query(); - query.addCriteria(Criteria.where(LABEL).in(label, null)); - query.addCriteria(Criteria.where(PROFILE).in(profiles)); + query.addCriteria(Criteria.where(APPLICATION).in(application)); + query.addCriteria(Criteria.where(PROFILE).in((Object[]) profiles)); return query; } private PropertySource transformMonPropertySourceToPropertySource(MongoPropertySource mongoPropertySource) { - String sourceName = ((mongoPropertySource.getProfile() == null) ? DEFAULT : mongoPropertySource.getProfile()) + "-" - + ((mongoPropertySource.getLabel() == null) ? DEFAULT : mongoPropertySource.getLabel()); + String sourceName = mongoPropertySource.getApplication() + '-' + mongoPropertySource.getProfile(); return new PropertySource(sourceName, mongoPropertySource.getSource()); } diff --git a/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryConfiguration.java b/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryConfiguration.java index 41bf93541f98e7a3b8a70eefab02046cda7a35d7..5495aacd24b8311912971fbc5f9ce6d108a1b90b 100644 --- a/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryConfiguration.java +++ b/src/main/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryConfiguration.java @@ -1,5 +1,6 @@ package de.ozgcloud.admin.environment; +import org.springframework.cloud.config.server.environment.EnvironmentRepository; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoOperations; @@ -12,8 +13,12 @@ public class MongoEnvironmentRepositoryConfiguration { private MongoOperations mongoOperations; @Bean - public MongoEnvironmentRepository mongoEnvironmentRepository() { + public EnvironmentRepository environmentRepository() { return new MongoEnvironmentRepository(mongoOperations); } + // @Bean + // public MongoEnvironmentRepository mongoEnvironmentRepository() { + // return new MongoEnvironmentRepository(mongoOperations); + // } } diff --git a/src/main/java/de/ozgcloud/admin/environment/MongoPropertySource.java b/src/main/java/de/ozgcloud/admin/environment/MongoPropertySource.java index 278b76a481bcc897d5ae53b502f60fe22aeec25e..25dbc8545a0b7bc7d4e5982c1174b095b6683dd2 100644 --- a/src/main/java/de/ozgcloud/admin/environment/MongoPropertySource.java +++ b/src/main/java/de/ozgcloud/admin/environment/MongoPropertySource.java @@ -9,7 +9,7 @@ import lombok.Setter; @Getter @Setter public class MongoPropertySource { - private String profile = "default"; - private String label; + private String application; + private String profile; private Map<String, Object> source = new LinkedHashMap<>(); } diff --git a/src/test/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryTest.java b/src/test/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryTest.java index 91cff9cad52c4742e85afcf4e0da049d2522e866..7ad2ab092171cba1417afb3f2140e45e41f71b40 100644 --- a/src/test/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryTest.java +++ b/src/test/java/de/ozgcloud/admin/environment/MongoEnvironmentRepositoryTest.java @@ -9,16 +9,15 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.cloud.config.environment.Environment; +import org.springframework.cloud.config.server.environment.EnvironmentRepository; import org.springframework.data.mongodb.core.MongoOperations; -import de.ozgcloud.common.test.DataITCase; - -@DataITCase +@DataMongoTest class MongoEnvironmentRepositoryTest { private final String APPNAME = "testapp"; private final String PROFILE = "testprofile"; - private final String LABEL = "testlabel"; private final String PROPERTY1 = "property1"; private final String VALUE1 = "value1"; private final String DEFAULT = "default"; @@ -26,7 +25,7 @@ class MongoEnvironmentRepositoryTest { @Autowired private MongoOperations mongoOperations; @Autowired - private MongoEnvironmentRepository repository; + private EnvironmentRepository repository; private MongoPropertySource mongoPropertySource; @@ -41,70 +40,34 @@ class MongoEnvironmentRepositoryTest { @AfterEach public void clearData() { - mongoOperations.dropCollection(APPNAME); + mongoOperations.dropCollection(MongoEnvironmentRepository.COLLECTION_NAME); } @Test void shouldFindCorrectEnvironment() { mongoPropertySource.setProfile(PROFILE); - mongoPropertySource.setLabel(LABEL); - mongoOperations.save(mongoPropertySource, APPNAME); + mongoPropertySource.setApplication(APPNAME); + mongoOperations.save(mongoPropertySource, MongoEnvironmentRepository.COLLECTION_NAME); - Environment environment = repository.findOne(APPNAME, PROFILE, LABEL); + Environment environment = repository.findOne(APPNAME, PROFILE, null); assertEquals(APPNAME, environment.getName()); - assertEquals(LABEL, environment.getLabel()); assertEquals(PROFILE, environment.getProfiles()[0]); assertEquals(1, environment.getPropertySources().size()); - assertEquals(PROFILE + "-" + LABEL, environment.getPropertySources().getLast().getName()); + assertEquals(APPNAME + '-' + PROFILE, environment.getPropertySources().getLast().getName()); assertEquals(mongoPropertySource.getSource(), environment.getPropertySources().getLast().getSource()); } - @Test - void shouldAlwaysFindEntriesWithoutLabel() { - mongoPropertySource.setProfile(PROFILE); - mongoOperations.save(mongoPropertySource, APPNAME); - - Environment environment = repository.findOne(APPNAME, PROFILE, LABEL); - - assertEquals(1, environment.getPropertySources().size()); - assertEquals(PROFILE + "-" + DEFAULT, environment.getPropertySources().getLast().getName()); - } - - @Test - void shouldInterpretNullLabelAsDefaultLabel() { - mongoPropertySource.setProfile(PROFILE); - mongoOperations.save(mongoPropertySource, APPNAME); - - Environment environment = repository.findOne(APPNAME, PROFILE, null); - - assertEquals(1, environment.getPropertySources().size()); - assertEquals(DEFAULT, environment.getLabel()); - assertEquals(PROFILE + "-" + DEFAULT, environment.getPropertySources().getLast().getName()); - } - @Test void shouldTakemultipleProfilesSeperatedByComma() { mongoPropertySource.setProfile(PROFILE); - mongoPropertySource.setLabel(LABEL); - mongoOperations.save(mongoPropertySource, APPNAME); - - Environment environment = repository.findOne(APPNAME, PROFILE + "," + "SecondProfile", LABEL); - - assertEquals(1, environment.getPropertySources().size()); - assertEquals(PROFILE, environment.getProfiles()[0]); - assertEquals(PROFILE + "-" + LABEL, environment.getPropertySources().getLast().getName()); - } - - @Test - void shouldAlwaysFindEntrieswithNullProfile() { - mongoPropertySource.setLabel(LABEL); - mongoOperations.save(mongoPropertySource, APPNAME); + mongoPropertySource.setApplication(APPNAME); + mongoOperations.save(mongoPropertySource, MongoEnvironmentRepository.COLLECTION_NAME); - Environment environment = repository.findOne(APPNAME, PROFILE, LABEL); + Environment environment = repository.findOne(APPNAME, PROFILE + "," + "SecondProfile", null); assertEquals(1, environment.getPropertySources().size()); assertEquals(PROFILE, environment.getProfiles()[0]); - assertEquals(DEFAULT + "-" + LABEL, environment.getPropertySources().getLast().getName()); + assertEquals(APPNAME + '-' + PROFILE, environment.getPropertySources().getLast().getName()); } }