diff --git a/pom.xml b/pom.xml index edad14432134d1414d427a883bcece7ec614118c..30345bd5e601c9bb9b313a0556555a60d6d6c297 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ <zufi-manager.version>1.6.0</zufi-manager.version> <shedlock.version>5.16.0</shedlock.version> + <spring-vault-core.version>3.1.2</spring-vault-core.version> </properties> <dependencies> @@ -149,6 +150,11 @@ <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </dependency> + <dependency> + <groupId>org.springframework.vault</groupId> + <artifactId>spring-vault-core</artifactId> + <version>${spring-vault-core.version}</version> + </dependency> <!-- commons --> <dependency> diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java index a6e74eac7d909eeefc363eebb43cb5cf078e49e5..82193473a132420319d5ba5f997b71ba7e74b29b 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java @@ -33,6 +33,7 @@ import org.springframework.cloud.config.environment.Environment; import org.springframework.cloud.config.environment.PropertySource; import org.springframework.cloud.config.server.environment.EnvironmentRepository; import org.springframework.stereotype.Component; +import org.springframework.vault.support.JsonMapFlattener; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -74,8 +75,9 @@ public class SettingEnvironmentRepository implements EnvironmentRepository { } PropertySource transformToPropertySource(ApplicationSettingDTO settingDTO) { - return new PropertySource(StringUtils.EMPTY, objectMapper.convertValue(settingDTO, new TypeReference<Map<String, Object>>() { - })); + return new PropertySource(StringUtils.EMPTY, + JsonMapFlattener.flatten(objectMapper.convertValue(settingDTO, new TypeReference<Map<String, Object>>() { + }))); } } diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java index d65fc2dbc0b24c6dca93ec46a91614f6bca34b2c..197adf567c5b2dd23b8cc004dafb230a31cbfc1d 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java @@ -36,7 +36,7 @@ import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; -import de.ozgcloud.admin.setting.YamlTestFactory; +import de.ozgcloud.admin.setting.PropertiesTestFactory; import de.ozgcloud.common.test.DataITCase; import lombok.SneakyThrows; @@ -63,36 +63,36 @@ public class AggregationMappingEnvironmentSettingITCase { var result = getAggregationSettings(); assertThat(result.andReturn().getResponse().getContentAsString()) - .isEqualTo(YamlTestFactory.createAggregationYaml()); + .isEqualTo(PropertiesTestFactory.createAggregationProperties()); } private ResultActions getAggregationSettings() throws Exception { - return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager-any.yaml")) + return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager/default")) .andExpect(status().isOk()); } private void fillDbWithAggregationMappings() { var aggregationMapping1 = AggregationMapping.builder() .formIdentifier(AggregationMapping.FormIdentifier.builder() - .formEngineName(YamlTestFactory.FORM_ENGINE_NAME_1) - .formId(YamlTestFactory.FORM_ID_1) + .formEngineName(PropertiesTestFactory.FORM_ENGINE_NAME_1) + .formId(PropertiesTestFactory.FORM_ID_1) .build()) - .mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_1) - .targetPath(YamlTestFactory.TARGET_PATH_1_1).build()) - .mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_2) - .targetPath(YamlTestFactory.TARGET_PATH_1_2).build()) - .mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_3) - .targetPath(YamlTestFactory.TARGET_PATH_1_3).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_1) + .targetPath(PropertiesTestFactory.TARGET_PATH_1_1).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_2) + .targetPath(PropertiesTestFactory.TARGET_PATH_1_2).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_3) + .targetPath(PropertiesTestFactory.TARGET_PATH_1_3).build()) .build(); var aggregationMapping2 = AggregationMapping.builder() .formIdentifier(AggregationMapping.FormIdentifier.builder() - .formEngineName(YamlTestFactory.FORM_ENGINE_NAME_2) - .formId(YamlTestFactory.FORM_ID_2) + .formEngineName(PropertiesTestFactory.FORM_ENGINE_NAME_2) + .formId(PropertiesTestFactory.FORM_ID_2) .build()) - .mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_2_1) - .targetPath(YamlTestFactory.TARGET_PATH_2_1).build()) - .mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_2_2) - .targetPath(YamlTestFactory.TARGET_PATH_2_2).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_2_1) + .targetPath(PropertiesTestFactory.TARGET_PATH_2_1).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_2_2) + .targetPath(PropertiesTestFactory.TARGET_PATH_2_2).build()) .build(); mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME); diff --git a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java similarity index 97% rename from src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java rename to src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java index 40ac3f169a6f6d28409515e1a89d38b39bfc918a..3c149bd9bcf9a8ff46c0cc434b2f5a48ee629bb7 100644 --- a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java @@ -31,7 +31,7 @@ import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; import de.ozgcloud.common.test.TestUtils; -public class YamlTestFactory { +public class PropertiesTestFactory { public static final PostfachSettingBody POSTFACH = PostfachSettingBodyTestFactory.create(); public static final String FORM_ENGINE_NAME_1 = LoremIpsum.getInstance().getWords(1); @@ -72,8 +72,8 @@ public class YamlTestFactory { return TestUtils.loadTextFile("yamlTemplates/settings/initial.yaml.tmpl"); } - public static String createAggregationYaml() { - return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.yaml.tmpl", + public static String createAggregationProperties() { + return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.json.tmpl", FORM_ENGINE_NAME_1, FORM_ID_1, SOURCE_PATH_1_1, diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java index 4fe44a5e5de623e8c08dfd39cb6073058c497ed5..455c4825d89d40417b9b459983f7272b6ad21dd5 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java @@ -80,7 +80,8 @@ class SettingEnvironmentITCase { void shouldHandleEmptySetting() { var result = getAlfaSettings(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) + .isEqualTo(PropertiesTestFactory.createInitialYaml()); } } @@ -97,7 +98,7 @@ class SettingEnvironmentITCase { void shouldReturnValuesForAlfa() { var result = getAlfaSettings(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createAlfaYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(PropertiesTestFactory.createAlfaYaml()); } } @@ -122,7 +123,8 @@ class SettingEnvironmentITCase { void shouldHandleEmptySetting() { var result = getVorgangManagerSettings(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) + .isEqualTo(PropertiesTestFactory.createInitialYaml()); } } @@ -140,7 +142,7 @@ class SettingEnvironmentITCase { var result = getVorgangManagerSettings(); assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) - .isEqualTo(YamlTestFactory.createVorgangManagerYaml()); + .isEqualTo(PropertiesTestFactory.createVorgangManagerYaml()); } } diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java index b59b5edc50936b0254c90b3f8c27d53c688c7cf6..25e1a2ac159611db2ecc333a31a3ab3b42614cfa 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java @@ -199,7 +199,10 @@ class SettingEnvironmentRepositoryTest { @Getter private ApplicationSettingDTO attribute = new ApplicationSettingDTO() { @Getter - private String nestedAttribute = "innerValue"; + private ApplicationSettingDTO nestedAttribute = new ApplicationSettingDTO() { + @Getter + private String nestedAttribute = "innerValue"; + }; }; }; @@ -213,8 +216,8 @@ class SettingEnvironmentRepositoryTest { } @Test - void shouldReturnPropertySourceOfNestedObject() { - var expectedPropertySource = new PropertySource(StringUtils.EMPTY, Map.of("attribute.nestedAttribute", "innerValue")); + void shouldReturnPropertySourceOfFlattenedNestedObject() { + var expectedPropertySource = new PropertySource(StringUtils.EMPTY, Map.of("attribute.nestedAttribute.nestedAttribute", "innerValue")); var resultPropertySource = repository.transformToPropertySource(nestedSettingDTO); diff --git a/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..b4db7c454072b20b8eb93e8e8fc7dbcaa32d9234 --- /dev/null +++ b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl @@ -0,0 +1 @@ +{"name":"OzgCloud_AggregationManager","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"","source":{"ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].targetPath":"%s"}}]} \ No newline at end of file diff --git a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl deleted file mode 100644 index 0b8a9c513f6ed3a08f3b91f081bfcf583dbfd62a..0000000000000000000000000000000000000000 --- a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl +++ /dev/null @@ -1,21 +0,0 @@ -ozgcloud: - aggregation: - aggregationMappings: - - formIdentifier: - formEngineName: %s - formId: %s - fieldMappings: - - sourcePath: %s - targetPath: %s - - sourcePath: %s - targetPath: %s - - sourcePath: %s - targetPath: %s - - formIdentifier: - formEngineName: %s - formId: %s - fieldMappings: - - sourcePath: %s - targetPath: %s - - sourcePath: %s - targetPath: %s