From 816f081642d088cc92283cecf0971c2df4959dc8 Mon Sep 17 00:00:00 2001 From: wind57 Date: Thu, 25 Sep 2025 22:57:56 +0300 Subject: [PATCH 1/3] clean Signed-off-by: wind57 --- .../commons/config/ConfigUtils.java | 64 ++++------ .../commons/config/LabeledSourceData.java | 23 ++-- .../config/MultipleSourcesContainer.java | 9 +- .../commons/config/NamedSourceData.java | 32 ++--- .../commons/config/PrefixContext.java | 32 ----- .../commons/config/SourceDataFlattener.java | 34 ++--- .../config/ConfigUtilsProcessSourceTests.java | 35 +++--- .../commons/config/ConfigUtilsTests.java | 26 ++-- .../config/SourceDataFlattenerTests.java | 84 +++++-------- .../config/Fabric8ConfigUtilsTests.java | 117 ++++++++---------- 10 files changed, 169 insertions(+), 287 deletions(-) delete mode 100644 spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java index b6321364c5..c6fbd89388 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.Base64; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -57,9 +58,9 @@ public final class ConfigUtils { // sourceName (configmap or secret name) ends with : "-dev.yaml" or the like. private static final BiPredicate ENDS_WITH_PROFILE_AND_EXTENSION = (sourceName, - activeProfile) -> sourceName.endsWith("-" + activeProfile + ".yml") - || sourceName.endsWith("-" + activeProfile + ".yaml") - || sourceName.endsWith("-" + activeProfile + ".properties"); + activeProfile) -> sourceName.endsWith("-" + activeProfile + ".yml") + || sourceName.endsWith("-" + activeProfile + ".yaml") + || sourceName.endsWith("-" + activeProfile + ".properties"); private static final ApplicationListener NO_OP = (e) -> { }; @@ -70,7 +71,7 @@ private ConfigUtils() { public static String getApplicationName(Environment env, String configName, String configurationTarget) { if (!StringUtils.hasLength(configName)) { LOG.debug(configurationTarget + " name has not been set, taking it from property/env " - + SPRING_APPLICATION_NAME + " (default=" + FALLBACK_APPLICATION_NAME + ")"); + + SPRING_APPLICATION_NAME + " (default=" + FALLBACK_APPLICATION_NAME + ")"); configName = env.getProperty(SPRING_APPLICATION_NAME, FALLBACK_APPLICATION_NAME); } @@ -90,7 +91,7 @@ public static String getApplicationName(Environment env, String configName, Stri * @return prefix to use in normalized sources */ public static Prefix findPrefix(String explicitPrefix, Boolean useNameAsPrefix, boolean defaultUseNameAsPrefix, - String normalizedName) { + String normalizedName) { // if explicitPrefix is set, it takes priority over useNameAsPrefix // (either the one from 'spring.cloud.kubernetes.config|secrets' or // 'spring.cloud.kubernetes.config|secrets.sources') @@ -140,7 +141,7 @@ public static Prefix findPrefix(String explicitPrefix, Boolean useNameAsPrefix, * @return useProfileNameAsPrefix to be used in normalized sources */ public static boolean includeProfileSpecificSources(boolean defaultIncludeProfileSpecificSources, - Boolean includeProfileSpecificSources) { + Boolean includeProfileSpecificSources) { if (includeProfileSpecificSources != null) { return includeProfileSpecificSources; } @@ -157,21 +158,6 @@ public static void onException(boolean failFast, Exception e) { LOG.warn(e.getMessage() + ". Ignoring.", e); } - /* - * This method will return a SourceData that has a name in the form : - * "configmap.my-configmap.my-configmap-2.namespace" and the "data" from the context - * is appended with prefix. So if incoming is "a=b", the result will be : "prefix.a=b" - */ - @Deprecated(forRemoval = true) - public static SourceData withPrefix(String target, PrefixContext context) { - Map withPrefix = CollectionUtils.newHashMap(context.data().size()); - context.data().forEach((key, value) -> withPrefix.put(context.prefix() + "." + key, value)); - - String propertySourceTokens = String.join(PROPERTY_SOURCE_NAME_SEPARATOR, - context.propertySourceNames().stream().sorted().collect(Collectors.toCollection(LinkedHashSet::new))); - return new SourceData(sourceName(target, propertySourceTokens, context.namespace()), withPrefix); - } - public static String sourceName(String target, String applicationName, String namespace) { return target + PROPERTY_SOURCE_NAME_SEPARATOR + applicationName + PROPERTY_SOURCE_NAME_SEPARATOR + namespace; } @@ -185,7 +171,7 @@ public static String sourceName(String target, String applicationName, String na } public static MultipleSourcesContainer processNamedData(List strippedSources, - Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode) { + Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode) { return processNamedData(strippedSources, environment, sourceNames, namespace, decode, true); } @@ -195,14 +181,13 @@ public static MultipleSourcesContainer processNamedData(List strippedSources, - Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode, - boolean includeDefaultProfileData) { + Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode, + boolean includeDefaultProfileData) { Map hashByName = strippedSources.stream() .collect(Collectors.toMap(StrippedSourceContainer::name, Function.identity())); - LinkedHashSet foundSourceNames = new LinkedHashSet<>(); - Map data = new HashMap<>(); + LinkedHashMap> data = new LinkedHashMap<>(); // This is an ordered stream, and it means that non-profile-based sources will be // processed before profile-based sources. @@ -212,7 +197,6 @@ public static MultipleSourcesContainer processNamedData(List rawData = stripped.data(); if (decode) { @@ -228,7 +212,7 @@ public static MultipleSourcesContainer processNamedData(List processedData = SourceDataEntriesProcessor.processAllEntries( - rawData == null ? Map.of() : rawData, environment, includeDefaultProfileData); + rawData == null ? Map.of() : rawData, environment, includeDefaultProfileData); data.put(sourceName, processedData); } } @@ -237,11 +221,11 @@ public static MultipleSourcesContainer processNamedData(List sourceRawData) { + Map sourceRawData) { List activeProfiles = Arrays.stream(environment.getActiveProfiles()).toList(); boolean emptyActiveProfiles = activeProfiles.isEmpty(); @@ -252,7 +236,7 @@ static boolean processSource(boolean includeDefaultProfileData, Environment envi boolean defaultProfilePresent = activeProfiles.contains("default"); return includeDefaultProfileData || emptyActiveProfiles || profileBasedSourceName || defaultProfilePresent - || rawDataContainsProfileBasedSource(activeProfiles, sourceRawData).getAsBoolean(); + || rawDataContainsProfileBasedSource(activeProfiles, sourceRawData).getAsBoolean(); } /* @@ -264,7 +248,7 @@ static boolean processSource(boolean includeDefaultProfileData, Environment envi * yaml/yml/properties. For example: 'account-k8s.yaml' or the like. */ static BooleanSupplier rawDataContainsProfileBasedSource(List activeProfiles, - Map sourceRawData) { + Map sourceRawData) { return () -> Optional.ofNullable(sourceRawData) .orElse(Map.of()) .keySet() @@ -273,7 +257,7 @@ static BooleanSupplier rawDataContainsProfileBasedSource(List activeProf .anyMatch(activeProfile -> ENDS_WITH_PROFILE_AND_EXTENSION.test(keyName, activeProfile))); } - static String sourceDataName(String target, LinkedHashSet sourceNames, String namespace) { + static String sourceDataName(String target, Set sourceNames, String namespace) { String sortedNames = sourceNames.stream().sorted().collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR)); return sourceName(target, sortedNames, namespace); } @@ -285,8 +269,8 @@ static String sourceDataName(String target, LinkedHashSet sourceNames, S * these names to find any profile-based sources. */ public static MultipleSourcesContainer processLabeledData(List containers, - Environment environment, Map labels, String namespace, Set profiles, - boolean decode) { + Environment environment, Map labels, String namespace, Set profiles, + boolean decode) { // find sources by provided labels List byLabels = containers.stream().filter(one -> { @@ -318,13 +302,11 @@ public static MultipleSourcesContainer processLabeledData(List sourceNames = new LinkedHashSet<>(); - Map data = new HashMap<>(); + LinkedHashMap> data = new LinkedHashMap<>(); all.forEach(source -> { String foundSourceName = source.name(); LOG.debug("Loaded source with name : '" + foundSourceName + " in namespace: '" + namespace + "'"); - sourceNames.add(foundSourceName); Map rawData = source.data(); if (decode) { @@ -335,7 +317,7 @@ public static MultipleSourcesContainer processLabeledData(List decodeData(Map data) { @@ -345,7 +327,7 @@ private static Map decodeData(Map data) { } public static void registerSingle(ConfigurableBootstrapContext bootstrapContext, Class cls, T instance, - String name, ApplicationListener listener) { + String name, ApplicationListener listener) { bootstrapContext.registerIfAbsent(cls, BootstrapRegistry.InstanceSupplier.of(instance)); bootstrapContext.addCloseListener(event -> { @@ -359,7 +341,7 @@ public static void registerSingle(ConfigurableBootstrapContext bootstrapCont } public static void registerSingle(ConfigurableBootstrapContext bootstrapContext, Class cls, T instance, - String name) { + String name) { registerSingle(bootstrapContext, cls, instance, name, NO_OP); } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java index ce90661ca6..1df2d7649b 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java @@ -17,7 +17,7 @@ package org.springframework.cloud.kubernetes.commons.config; import java.util.Arrays; -import java.util.LinkedHashSet; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -46,7 +46,7 @@ public abstract class LabeledSourceData { private static final Log LOG = LogFactory.getLog(LabeledSourceData.class); public final SourceData compute(Map labels, Prefix prefix, String target, boolean profileSources, - boolean failFast, String namespace, String[] activeProfiles) { + boolean failFast, String namespace, String[] activeProfiles) { MultipleSourcesContainer data = MultipleSourcesContainer.empty(); String sourceDataName; @@ -57,26 +57,24 @@ public final SourceData compute(Map labels, Prefix prefix, Strin profiles = Arrays.stream(activeProfiles).collect(Collectors.toSet()); } data = dataSupplier(labels, profiles); + LinkedHashMap> sourceData = data.data(); + sourceDataName = sourceDataName(target, sourceData.keySet(), namespace); - LinkedHashSet sourceNames = data.names(); - Map sourceDataForSourceName = data.data(); - sourceDataName = sourceDataName(target, sourceNames, namespace); - - if (sourceNames.isEmpty()) { + if (sourceData.isEmpty()) { return emptySourceData(labels, target, namespace); } if (prefix.getName().equals(Prefix.DEFAULT.getName())) { - return new SourceData(sourceDataName, defaultFlattenedSourceData(sourceNames, sourceDataForSourceName)); + return new SourceData(sourceDataName, defaultFlattenedSourceData(sourceData)); } if (prefix.getName().equals(Prefix.KNOWN.getName())) { return new SourceData(sourceDataName, - prefixFlattenedSourceData(sourceNames, sourceDataForSourceName, prefix.prefixProvider().get())); + prefixFlattenedSourceData(sourceData, prefix.prefixProvider().get())); } if (prefix.getName().equals(Prefix.DELAYED.getName())) { - return new SourceData(sourceDataName, nameFlattenedSourceData(sourceNames, sourceDataForSourceName)); + return new SourceData(sourceDataName, nameFlattenedSourceData(sourceData)); } throw new IllegalArgumentException("Unsupported prefix: " + prefix); @@ -84,7 +82,8 @@ public final SourceData compute(Map labels, Prefix prefix, Strin catch (Exception e) { LOG.warn("Failure in reading labeled sources"); onException(failFast, e); - return new SourceData(sourceDataName(target, data.names(), namespace), Map.of(ERROR_PROPERTY, "true")); + return new SourceData(sourceDataName(target, data.data().keySet(), namespace), + Map.of(ERROR_PROPERTY, "true")); } } @@ -98,7 +97,7 @@ private SourceData emptySourceData(Map labels, String target, St .stream() .sorted() .collect(Collectors.collectingAndThen(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR), - sortedLabels -> sourceName(target, sortedLabels, namespace))); + sortedLabels -> sourceName(target, sortedLabels, namespace))); return SourceData.emptyRecord(sourceName); } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java index 621e16539f..86a7cc63f7 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-present the original author or authors. + * Copyright 2013-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ package org.springframework.cloud.kubernetes.commons.config; -import java.util.LinkedHashSet; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -25,10 +25,9 @@ * Container that stores multiple sources, to be exact their names and their flattenned * data. We force a LinkedHashSet on purpose, to preserve the order of sources. */ -public record MultipleSourcesContainer(LinkedHashSet names, Map data) { +public record MultipleSourcesContainer(LinkedHashMap> data) { - private static final MultipleSourcesContainer EMPTY = new MultipleSourcesContainer(new LinkedHashSet<>(0), - Map.of()); + private static final MultipleSourcesContainer EMPTY = new MultipleSourcesContainer(new LinkedHashMap<>(0)); public static MultipleSourcesContainer empty() { return EMPTY; diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java index 8c1eb4bb13..9619a2f0a2 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java @@ -16,8 +16,10 @@ package org.springframework.cloud.kubernetes.commons.config; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.logging.Log; @@ -43,7 +45,7 @@ public abstract class NamedSourceData { private static final Log LOG = LogFactory.getLog(NamedSourceData.class); public final SourceData compute(String sourceName, Prefix prefix, String target, boolean profileSources, - boolean failFast, String namespace, String[] activeProfiles) { + boolean failFast, String namespace, String[] activeProfiles) { // first comes a non-profile-based source LinkedHashSet sourceNamesToSearchFor = new LinkedHashSet<>(); @@ -60,31 +62,29 @@ public final SourceData compute(String sourceName, Prefix prefix, String target, } data = dataSupplier(sourceNamesToSearchFor); - Map sourceDataForSourceName = data.data(); - LinkedHashSet sourceNamesFound = data.names(); - String sortedNames = data.names() - .stream() + LinkedHashMap> sourceData = data.data(); + + Set sourceNamesFound = sourceData.keySet(); + String sortedNames = sourceNamesFound.stream() .sorted() .collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR)); sourceDataName = generateSourceName(target, sortedNames, namespace, activeProfiles); - if (data.names().isEmpty()) { + if (sourceData.isEmpty()) { return emptySourceData(target, sourceName, namespace); } if (prefix.getName().equals(Prefix.DEFAULT.getName())) { - return new SourceData(sourceDataName, - defaultFlattenedSourceData(sourceNamesFound, sourceDataForSourceName)); + return new SourceData(sourceDataName, defaultFlattenedSourceData(sourceData)); } if (prefix.getName().equals(Prefix.KNOWN.getName())) { - return new SourceData(sourceDataName, prefixFlattenedSourceData(sourceNamesFound, - sourceDataForSourceName, prefix.prefixProvider().get())); + return new SourceData(sourceDataName, + prefixFlattenedSourceData(sourceData, prefix.prefixProvider().get())); } if (prefix.getName().equals(Prefix.DELAYED.getName())) { - return new SourceData(sourceDataName, - nameFlattenedSourceData(sourceNamesFound, sourceDataForSourceName)); + return new SourceData(sourceDataName, nameFlattenedSourceData(sourceData)); } throw new IllegalArgumentException("Unsupported prefix: " + prefix); @@ -93,9 +93,13 @@ public final SourceData compute(String sourceName, Prefix prefix, String target, catch (Exception e) { LOG.warn("Failure in reading named sources"); onException(failFast, e); - String names = data.names().stream().sorted().collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR)); + String names = data.data() + .keySet() + .stream() + .sorted() + .collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR)); return new SourceData(generateSourceName(target, names, namespace, activeProfiles), - Map.of(ERROR_PROPERTY, "true")); + Map.of(ERROR_PROPERTY, "true")); } } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java deleted file mode 100644 index 2c11087714..0000000000 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/PrefixContext.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2013-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.cloud.kubernetes.commons.config; - -import java.util.Map; -import java.util.Set; - -/** - * A holder for data needed to compute prefix based properties, in case of a secret or - * config map. - * - * @author wind57 - * @deprecated will be deleted in a future release. - */ -@Deprecated(forRemoval = true) -public record PrefixContext(Map data, String prefix, String namespace, - Set propertySourceNames) { -} diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java index ff60951914..2de6573efb 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java @@ -17,7 +17,7 @@ package org.springframework.cloud.kubernetes.commons.config; import java.util.HashMap; -import java.util.LinkedHashSet; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -32,31 +32,19 @@ private SourceDataFlattener() { /** * Flattens the data from rawData without any additional processing. */ - static Map defaultFlattenedSourceData(LinkedHashSet names, Map rawData) { + static Map defaultFlattenedSourceData(LinkedHashMap> sourceData) { Map flattenedData = new HashMap<>(); - - names.forEach(name -> { - @SuppressWarnings("unchecked") - Map singleDataEntry = (Map) rawData.getOrDefault(name, Map.of()); - flattenedData.putAll(singleDataEntry); - }); - + sourceData.values().forEach(flattenedData::putAll); return flattenedData; } /** * Flattens the data from rawData by adding a prefix for each key. */ - static Map prefixFlattenedSourceData(LinkedHashSet names, Map rawData, - String prefix) { + static Map prefixFlattenedSourceData(LinkedHashMap> sourceData, + String prefix) { Map flattenedData = new HashMap<>(); - - names.forEach(name -> { - @SuppressWarnings("unchecked") - Map singleDataEntry = (Map) rawData.getOrDefault(name, Map.of()); - singleDataEntry.forEach((key, value) -> flattenedData.put(prefix + "." + key, value)); - }); - + sourceData.values().forEach(data -> data.forEach((key, value) -> flattenedData.put(prefix + "." + key, value))); return flattenedData; } @@ -64,15 +52,9 @@ static Map prefixFlattenedSourceData(LinkedHashSet names * Flattens the data from rawData by adding a prefix for each key, which is equal to * the source name. */ - static Map nameFlattenedSourceData(LinkedHashSet names, Map rawData) { + static Map nameFlattenedSourceData(LinkedHashMap> sourceData) { Map flattenedData = new HashMap<>(); - - names.forEach(name -> { - @SuppressWarnings("unchecked") - Map singleDataEntry = (Map) rawData.getOrDefault(name, Map.of()); - singleDataEntry.forEach((key, value) -> flattenedData.put(name + "." + key, value)); - }); - + sourceData.forEach((name, data) -> data.forEach((key, value) -> flattenedData.put(name + "." + key, value))); return flattenedData; } diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java index f7e55e8cee..9546a7366a 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java @@ -78,12 +78,11 @@ void testProcessNamedDataOne() { boolean includeDefaultProfileData = true; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("configmap-a"); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("configmap-a"); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("configmap-a"); + Map data = result.data().get("configmap-a"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("one", "1")); } @@ -160,9 +159,9 @@ void testProcessNamedDataTwo(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("account"); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account"); /** *
@@ -176,8 +175,7 @@ void testProcessNamedDataTwo(CapturedOutput output) {
 		 *			since 'k8s' is not an active profile.
 		 * 
*/ - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("account"); + Map data = result.data().get("account"); Assertions.assertThat(data) .containsExactlyInAnyOrderEntriesOf(Map.of("one", "1", "two", "2", "three", "3", "five", "5")); Assertions.assertThat(output.getOut()).contains("entry : account-k8s.properties will be skipped"); @@ -256,9 +254,9 @@ void testProcessNamedDataThree(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("account-default"); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account-default"); /** *
@@ -274,8 +272,7 @@ void testProcessNamedDataThree(CapturedOutput output) {
 		 *		6. we do not have 'four=4' since we do not read 'account-k8s.properties'
 		 * 
*/ - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("account-default"); + Map data = result.data().get("account-default"); Assertions.assertThat(data) .containsExactlyInAnyOrderEntriesOf(Map.of("one", "1", "two", "2", "three", "3", "five", "5")); Assertions.assertThat(output.getOut()).contains("entry : account-k8s.properties will be skipped"); @@ -371,16 +368,15 @@ void testProcessNamedDataFive(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("account"); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account"); /* *
 - we only read from 'account-k8s.properties' 
*/ - @SuppressWarnings("unchecked") - Map accountData = (Map) result.data().get("account"); + Map accountData = result.data().get("account"); Assertions.assertThat(accountData).containsExactlyInAnyOrderEntriesOf(Map.of("one", "1111", "four", "4")); Assertions.assertThat(output.getOut()).contains("entry : account.properties will be skipped"); Assertions.assertThat(output.getOut()).contains("entry : account-default.properties will be skipped"); @@ -460,9 +456,9 @@ void testProcessNamedDataSix(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("account-k8s"); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account-k8s"); /** *
@@ -481,8 +477,7 @@ void testProcessNamedDataSix(CapturedOutput output) {
 		 *			(because 'prod' is not an active profile)
 		 * 
*/ - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("account-k8s"); + Map data = result.data().get("account-k8s"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("one", "1111", "five", "5")); Assertions.assertThat(output.getOut()).contains("entry : account-prod.properties will be skipped"); Assertions.assertThat(output.getOut()).contains("entry : account.properties will be skipped"); diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java index 0c86c2b42e..1b732df287 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java @@ -154,25 +154,23 @@ void testUseIncludeProfileSpecificSourcesSourcesOverridesDefault() { void testMerge() { StrippedSourceContainer configMapOne = new StrippedSourceContainer(Map.of(), "configmap-one", - Map.of(Constants.APPLICATION_YAML, "propA: A\npropB: B")); + Map.of(Constants.APPLICATION_YAML, "propA: A\npropB: B")); StrippedSourceContainer configMapOneK8s = new StrippedSourceContainer(Map.of(), "configmap-one-kubernetes", - Map.of(Constants.APPLICATION_YAML, "propA: AA\npropC: C")); + Map.of(Constants.APPLICATION_YAML, "propA: AA\npropC: C")); LinkedHashSet sourceNames = Stream.of("configmap-one", "configmap-one-kubernetes") .collect(Collectors.toCollection(LinkedHashSet::new)); MultipleSourcesContainer result = ConfigUtils.processNamedData(List.of(configMapOne, configMapOneK8s), - new MockEnvironment(), sourceNames, "default", false); + new MockEnvironment(), sourceNames, "default", false); Assertions.assertThat(result.data().size()).isEqualTo(2); - @SuppressWarnings("unchecked") - Map one = (Map) result.data().get("configmap-one"); + Map one = result.data().get("configmap-one"); Assertions.assertThat(one.get("propA")).isEqualTo("A"); Assertions.assertThat(one.get("propB")).isEqualTo("B"); - @SuppressWarnings("unchecked") - Map oneKubernetes = (Map) result.data().get("configmap-one-kubernetes"); + Map oneKubernetes = result.data().get("configmap-one-kubernetes"); Assertions.assertThat(oneKubernetes.get("propA")).isEqualTo("AA"); Assertions.assertThat(oneKubernetes.get("propC")).isEqualTo("C"); @@ -205,26 +203,24 @@ void testKeysWithPrefixNonEmptyPrefix() { } @Test - @SuppressWarnings("unchecked") void testIssue1757() { StrippedSourceContainer containerA = new StrippedSourceContainer(Map.of("load", "true"), "client-1", - Map.of("client-id", "clientA", "client-secret", "a")); + Map.of("client-id", "clientA", "client-secret", "a")); StrippedSourceContainer containerB = new StrippedSourceContainer(Map.of("load", "true"), "client-2", - Map.of("client-id", "clientB", "client-secret", "b")); + Map.of("client-id", "clientB", "client-secret", "b")); MultipleSourcesContainer container = ConfigUtils.processLabeledData(List.of(containerA, containerB), - new MockEnvironment(), Map.of("load", "true"), "default", Set.of(), false); + new MockEnvironment(), Map.of("load", "true"), "default", Set.of(), false); - System.out.println(container); - assertThat(container.names()).containsExactlyInAnyOrder("client-1", "client-2"); + assertThat(container.data().keySet()).containsExactlyInAnyOrder("client-1", "client-2"); - Map client1Data = (Map) container.data().get("client-1"); + Map client1Data = container.data().get("client-1"); assertThat(client1Data) .containsExactlyInAnyOrderEntriesOf(Map.of("client-id", "clientA", "client-secret", "a")); - Map client2Data = (Map) container.data().get("client-2"); + Map client2Data = container.data().get("client-2"); assertThat(client2Data) .containsExactlyInAnyOrderEntriesOf(Map.of("client-id", "clientB", "client-secret", "b")); diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattenerTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattenerTests.java index fc40ebed2f..02bd422f3d 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattenerTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattenerTests.java @@ -16,8 +16,7 @@ package org.springframework.cloud.kubernetes.commons.config; -import java.util.HashMap; -import java.util.LinkedHashSet; +import java.util.LinkedHashMap; import java.util.Map; import org.assertj.core.api.Assertions; @@ -36,15 +35,11 @@ class SourceDataFlattenerTests { */ @Test void defaultFlattenedSourceDataNoOverlap() { - LinkedHashSet names = new LinkedHashSet<>(); - names.add("nameA"); - names.add("nameB"); + LinkedHashMap> data = new LinkedHashMap<>(); + data.put("nameA", Map.of("a", "b")); + data.put("nameB", Map.of("c", "d")); - Map rawData = new HashMap<>(); - rawData.put("nameA", Map.of("a", "b")); - rawData.put("nameB", Map.of("c", "d")); - - Map result = SourceDataFlattener.defaultFlattenedSourceData(names, rawData); + Map result = SourceDataFlattener.defaultFlattenedSourceData(data); Assertions.assertThat(result).containsExactlyInAnyOrderEntriesOf(Map.of("a", "b", "c", "d")); } @@ -58,17 +53,12 @@ void defaultFlattenedSourceDataNoOverlap() { */ @Test void defaultFlattenedSourceDataOverlap() { - LinkedHashSet names = new LinkedHashSet<>(); - names.add("nameA"); - names.add("nameB"); - names.add("nameC"); - - Map rawData = new HashMap<>(); - rawData.put("nameA", Map.of("a", "b")); - rawData.put("nameB", Map.of("c", "d")); - rawData.put("nameC", Map.of("a", "w")); + LinkedHashMap> data = new LinkedHashMap<>(); + data.put("nameA", Map.of("a", "b")); + data.put("nameB", Map.of("c", "d")); + data.put("nameC", Map.of("a", "w")); - Map result = SourceDataFlattener.defaultFlattenedSourceData(names, rawData); + Map result = SourceDataFlattener.defaultFlattenedSourceData(data); Assertions.assertThat(result).containsExactlyInAnyOrderEntriesOf(Map.of("a", "w", "c", "d")); } @@ -82,15 +72,11 @@ void defaultFlattenedSourceDataOverlap() { */ @Test void prefixFlattenedSourceDataNoOverlap() { - LinkedHashSet names = new LinkedHashSet<>(); - names.add("nameA"); - names.add("nameB"); - - Map rawData = new HashMap<>(); - rawData.put("nameA", Map.of("a", "b")); - rawData.put("nameB", Map.of("c", "d")); + LinkedHashMap> data = new LinkedHashMap<>(); + data.put("nameA", Map.of("a", "b")); + data.put("nameB", Map.of("c", "d")); - Map result = SourceDataFlattener.prefixFlattenedSourceData(names, rawData, "one"); + Map result = SourceDataFlattener.prefixFlattenedSourceData(data, "one"); Assertions.assertThat(result).containsExactlyInAnyOrderEntriesOf(Map.of("one.a", "b", "one.c", "d")); } @@ -105,17 +91,12 @@ void prefixFlattenedSourceDataNoOverlap() { */ @Test void prefixFlattenedSourceDataOverlap() { - LinkedHashSet names = new LinkedHashSet<>(); - names.add("nameA"); - names.add("nameB"); - names.add("nameC"); + LinkedHashMap> data = new LinkedHashMap<>(); + data.put("nameA", Map.of("a", "b")); + data.put("nameB", Map.of("c", "d")); + data.put("nameC", Map.of("a", "w")); - Map rawData = new HashMap<>(); - rawData.put("nameA", Map.of("a", "b")); - rawData.put("nameB", Map.of("c", "d")); - rawData.put("nameC", Map.of("a", "w")); - - Map result = SourceDataFlattener.prefixFlattenedSourceData(names, rawData, "one"); + Map result = SourceDataFlattener.prefixFlattenedSourceData(data, "one"); Assertions.assertThat(result).containsExactlyInAnyOrderEntriesOf(Map.of("one.a", "w", "one.c", "d")); } @@ -128,15 +109,11 @@ void prefixFlattenedSourceDataOverlap() { */ @Test void nameFlattenedSourceDataNoOverlap() { - LinkedHashSet names = new LinkedHashSet<>(); - names.add("nameA"); - names.add("nameB"); - - Map rawData = new HashMap<>(); - rawData.put("nameA", Map.of("a", "b")); - rawData.put("nameB", Map.of("c", "d")); + LinkedHashMap> data = new LinkedHashMap<>(); + data.put("nameA", Map.of("a", "b")); + data.put("nameB", Map.of("c", "d")); - Map result = SourceDataFlattener.nameFlattenedSourceData(names, rawData); + Map result = SourceDataFlattener.nameFlattenedSourceData(data); Assertions.assertThat(result).containsExactlyInAnyOrderEntriesOf(Map.of("nameA.a", "b", "nameB.c", "d")); } @@ -150,17 +127,12 @@ void nameFlattenedSourceDataNoOverlap() { */ @Test void nameFlattenedSourceDataOverlap() { - LinkedHashSet names = new LinkedHashSet<>(); - names.add("nameA"); - names.add("nameB"); - names.add("nameC"); - - Map rawData = new HashMap<>(); - rawData.put("nameA", Map.of("a", "b")); - rawData.put("nameB", Map.of("c", "d")); - rawData.put("nameC", Map.of("a", "w")); + LinkedHashMap> data = new LinkedHashMap<>(); + data.put("nameA", Map.of("a", "b")); + data.put("nameB", Map.of("c", "d")); + data.put("nameC", Map.of("a", "w")); - Map result = SourceDataFlattener.nameFlattenedSourceData(names, rawData); + Map result = SourceDataFlattener.nameFlattenedSourceData(data); Assertions.assertThat(result) .containsExactlyInAnyOrderEntriesOf(Map.of("nameA.a", "b", "nameB.c", "d", "nameC.a", "w")); diff --git a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java index ba9e28d2e5..7c5835e3d5 100644 --- a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java +++ b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java @@ -61,9 +61,9 @@ void testSecretDataByLabelsSecretNotFound() { .resource(new SecretBuilder().withMetadata(new ObjectMetaBuilder().withName("my-secret").build()).build()) .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "red"), new MockEnvironment(), Set.of()); + Map.of("color", "red"), new MockEnvironment(), Set.of()); Assertions.assertThat(result.data()).isEmpty(); - Assertions.assertThat(result.names()).isEmpty(); + Assertions.assertThat(result.data().keySet()).isEmpty(); } // secret "my-secret" is deployed with label {color:pink}; we search for it by same @@ -79,11 +79,10 @@ void testSecretDataByLabelsSecretFound() { .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "pink"), new MockEnvironment(), Set.of()); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("my-secret"); + Map.of("color", "pink"), new MockEnvironment(), Set.of()); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-secret"); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-secret"); + Map data = result.data().get("my-secret"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("property", "value")); } @@ -101,11 +100,10 @@ void testSecretDataByLabelsSecretFoundWithPropertyFile() { .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "pink"), new MockEnvironment(), Set.of()); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("my-secret"); + Map.of("color", "pink"), new MockEnvironment(), Set.of()); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-secret"); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-secret"); + Map data = result.data().get("my-secret"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("key1", "value1")); } @@ -125,22 +123,20 @@ void testSecretDataByLabelsTwoSecretsFound() { .inNamespace("spring-k8s") .resource(new SecretBuilder() .withMetadata( - new ObjectMetaBuilder().withName("my-secret-2").withLabels(Map.of("color", "pink")).build()) + new ObjectMetaBuilder().withName("my-secret-2").withLabels(Map.of("color", "pink")).build()) .addToData(Map.of("property-2", Base64.getEncoder().encodeToString("value-2".getBytes()))) .build()) .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "pink"), new MockEnvironment(), Set.of()); - Assertions.assertThat(result.names()).contains("my-secret"); - Assertions.assertThat(result.names()).contains("my-secret-2"); + Map.of("color", "pink"), new MockEnvironment(), Set.of()); + Assertions.assertThat(result.data().keySet()).contains("my-secret"); + Assertions.assertThat(result.data().keySet()).contains("my-secret-2"); - @SuppressWarnings("unchecked") - Map mySecretData = (Map) result.data().get("my-secret"); + Map mySecretData = result.data().get("my-secret"); Assertions.assertThat(mySecretData).containsExactlyInAnyOrderEntriesOf(Map.of("property", "value")); - @SuppressWarnings("unchecked") - Map mySecret2Data = (Map) result.data().get("my-secret-2"); + Map mySecret2Data = result.data().get("my-secret-2"); Assertions.assertThat(mySecret2Data).containsExactlyInAnyOrderEntriesOf(Map.of("property-2", "value-2")); } @@ -200,22 +196,19 @@ void testSecretDataByLabelsThreeSecretsFound() { .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("tag", "fit", "color", "blue"), new MockEnvironment(), Set.of("k8s")); + Map.of("tag", "fit", "color", "blue"), new MockEnvironment(), Set.of("k8s")); - Assertions.assertThat(result.names()).contains("blue-circle-secret"); - Assertions.assertThat(result.names()).contains("blue-square-secret"); - Assertions.assertThat(result.names()).contains("blue-square-secret-k8s"); + Assertions.assertThat(result.data().keySet()).contains("blue-circle-secret"); + Assertions.assertThat(result.data().keySet()).contains("blue-square-secret"); + Assertions.assertThat(result.data().keySet()).contains("blue-square-secret-k8s"); - @SuppressWarnings("unchecked") - Map dataBlueSecret = (Map) result.data().get("blue-circle-secret"); + Map dataBlueSecret = result.data().get("blue-circle-secret"); Assertions.assertThat(dataBlueSecret).containsExactlyInAnyOrderEntriesOf(Map.of("one", "1")); - @SuppressWarnings("unchecked") - Map dataSquareSecret = (Map) result.data().get("blue-square-secret"); + Map dataSquareSecret = result.data().get("blue-square-secret"); Assertions.assertThat(dataSquareSecret).containsExactlyInAnyOrderEntriesOf(Map.of("two", "2")); - @SuppressWarnings("unchecked") - Map dataSquareSecretK8s = (Map) result.data().get("blue-square-secret-k8s"); + Map dataSquareSecretK8s = result.data().get("blue-square-secret-k8s"); Assertions.assertThat(dataSquareSecretK8s).containsExactlyInAnyOrderEntriesOf(Map.of("four", "4")); } @@ -230,8 +223,8 @@ void testSecretDataByNameSecretNotFound() { LinkedHashSet names = new LinkedHashSet<>(); names.add("nope"); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).isEmpty(); + new MockEnvironment()); + Assertions.assertThat(result.data()).isEmpty(); Assertions.assertThat(result.data()).isEmpty(); } @@ -248,11 +241,10 @@ void testSecretDataByNameSecretFound() { names.add("my-secret"); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names().size()).isEqualTo(1); + new MockEnvironment()); + Assertions.assertThat(result.data().size()).isEqualTo(1); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-secret"); + Map data = result.data().get("my-secret"); Assertions.assertThat(data.get("property")).isEqualTo("value"); } @@ -278,18 +270,16 @@ void testSecretDataByNameTwoSecretsFound() { names.add("my-secret-2"); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).contains("my-secret"); - Assertions.assertThat(result.names()).contains("my-secret-2"); + new MockEnvironment()); + Assertions.assertThat(result.data().keySet()).contains("my-secret"); + Assertions.assertThat(result.data().keySet()).contains("my-secret-2"); Assertions.assertThat(result.data().size()).isEqualTo(2); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-secret"); + Map data = result.data().get("my-secret"); Assertions.assertThat(data.get("property")).isEqualTo("value"); - @SuppressWarnings("unchecked") - Map data2 = (Map) result.data().get("my-secret-2"); + Map data2 = result.data().get("my-secret-2"); Assertions.assertThat(data2.get("property-2")).isEqualTo("value-2"); } @@ -306,11 +296,10 @@ void testConfigMapsDataByNameFoundNoData() { names.add("my-config-map"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("my-config-map"); + new MockEnvironment()); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-config-map"); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-config-map"); + Map data = result.data().get("my-config-map"); Assertions.assertThat(data).isEmpty(); } @@ -325,8 +314,8 @@ void testConfigMapsDataByNameNotFound() { LinkedHashSet names = new LinkedHashSet<>(); names.add("my-config-map-not-found"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).isEmpty(); + new MockEnvironment()); + Assertions.assertThat(result.data().keySet()).isEmpty(); Assertions.assertThat(result.data()).isEmpty(); } @@ -344,11 +333,10 @@ void testConfigMapDataByNameFound() { names.add("my-config-map"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("my-config-map"); + new MockEnvironment()); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-config-map"); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-config-map"); + Map data = result.data().get("my-config-map"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("property", "value")); } @@ -367,11 +355,10 @@ void testConfigMapDataByNameFoundWithPropertyFile() { names.add("my-config-map"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).containsExactlyInAnyOrder("my-config-map"); + new MockEnvironment()); + Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-config-map"); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-config-map"); + Map data = result.data().get("my-config-map"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("key1", "value1")); } @@ -398,28 +385,26 @@ void testConfigMapDataByNameTwoFound() { names.add("my-config-map-2"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); - Assertions.assertThat(result.names()).contains("my-config-map"); - Assertions.assertThat(result.names()).contains("my-config-map-2"); + new MockEnvironment()); + Assertions.assertThat(result.data().keySet()).contains("my-config-map"); + Assertions.assertThat(result.data().keySet()).contains("my-config-map-2"); Assertions.assertThat(result.data().size()).isEqualTo(2); - @SuppressWarnings("unchecked") - Map data = (Map) result.data().get("my-config-map"); + Map data = result.data().get("my-config-map"); Assertions.assertThat(data).containsExactlyInAnyOrderEntriesOf(Map.of("property", "value")); - @SuppressWarnings("unchecked") - Map data2 = (Map) result.data().get("my-config-map-2"); + Map data2 = result.data().get("my-config-map-2"); Assertions.assertThat(data2).containsExactlyInAnyOrderEntriesOf(Map.of("property-2", "value-2")); } @Test void testNamespacesFromProperties() { ConfigReloadProperties configReloadProperties = new ConfigReloadProperties(false, true, false, - ConfigReloadProperties.ReloadStrategy.REFRESH, ConfigReloadProperties.ReloadDetectionMode.EVENT, - Duration.ofMillis(15000), Set.of("non-default"), false, Duration.ofSeconds(2)); + ConfigReloadProperties.ReloadStrategy.REFRESH, ConfigReloadProperties.ReloadDetectionMode.EVENT, + Duration.ofMillis(15000), Set.of("non-default"), false, Duration.ofSeconds(2)); Set namespaces = Fabric8ConfigUtils.namespaces(null, - new KubernetesNamespaceProvider(new MockEnvironment()), configReloadProperties, "configmap"); + new KubernetesNamespaceProvider(new MockEnvironment()), configReloadProperties, "configmap"); Assertions.assertThat(namespaces.size()).isEqualTo(1); Assertions.assertThat(namespaces.iterator().next()).isEqualTo("non-default"); } @@ -430,7 +415,7 @@ void testNamespacesFromProvider() { environment.setProperty("spring.cloud.kubernetes.client.namespace", "some"); KubernetesNamespaceProvider provider = new KubernetesNamespaceProvider(environment); Set namespaces = Fabric8ConfigUtils.namespaces(null, provider, ConfigReloadProperties.DEFAULT, - "configmap"); + "configmap"); Assertions.assertThat(namespaces.size()).isEqualTo(1); Assertions.assertThat(namespaces.iterator().next()).isEqualTo("some"); } From 964374e4b4171bc99778225c32eba8511d689a89 Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 26 Sep 2025 10:27:36 +0300 Subject: [PATCH 2/3] fix checkstyle Signed-off-by: wind57 --- .../kubernetes/commons/config/MultipleSourcesContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java index 86a7cc63f7..4f47e985c3 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/MultipleSourcesContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2025 the original author or authors. + * Copyright 2013-present the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 76abe25b46597818f659a05a095ad1ce87384bfd Mon Sep 17 00:00:00 2001 From: wind57 Date: Fri, 26 Sep 2025 12:24:20 +0300 Subject: [PATCH 3/3] checkstyle Signed-off-by: wind57 --- .../commons/config/ConfigUtils.java | 34 +++++++++--------- .../commons/config/LabeledSourceData.java | 8 ++--- .../commons/config/NamedSourceData.java | 6 ++-- .../commons/config/SourceDataFlattener.java | 2 +- .../config/ConfigUtilsProcessSourceTests.java | 10 +++--- .../commons/config/ConfigUtilsTests.java | 12 +++---- .../config/Fabric8ConfigUtilsTests.java | 36 +++++++++---------- 7 files changed, 54 insertions(+), 54 deletions(-) diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java index c6fbd89388..3ea8160a13 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtils.java @@ -58,9 +58,9 @@ public final class ConfigUtils { // sourceName (configmap or secret name) ends with : "-dev.yaml" or the like. private static final BiPredicate ENDS_WITH_PROFILE_AND_EXTENSION = (sourceName, - activeProfile) -> sourceName.endsWith("-" + activeProfile + ".yml") - || sourceName.endsWith("-" + activeProfile + ".yaml") - || sourceName.endsWith("-" + activeProfile + ".properties"); + activeProfile) -> sourceName.endsWith("-" + activeProfile + ".yml") + || sourceName.endsWith("-" + activeProfile + ".yaml") + || sourceName.endsWith("-" + activeProfile + ".properties"); private static final ApplicationListener NO_OP = (e) -> { }; @@ -71,7 +71,7 @@ private ConfigUtils() { public static String getApplicationName(Environment env, String configName, String configurationTarget) { if (!StringUtils.hasLength(configName)) { LOG.debug(configurationTarget + " name has not been set, taking it from property/env " - + SPRING_APPLICATION_NAME + " (default=" + FALLBACK_APPLICATION_NAME + ")"); + + SPRING_APPLICATION_NAME + " (default=" + FALLBACK_APPLICATION_NAME + ")"); configName = env.getProperty(SPRING_APPLICATION_NAME, FALLBACK_APPLICATION_NAME); } @@ -91,7 +91,7 @@ public static String getApplicationName(Environment env, String configName, Stri * @return prefix to use in normalized sources */ public static Prefix findPrefix(String explicitPrefix, Boolean useNameAsPrefix, boolean defaultUseNameAsPrefix, - String normalizedName) { + String normalizedName) { // if explicitPrefix is set, it takes priority over useNameAsPrefix // (either the one from 'spring.cloud.kubernetes.config|secrets' or // 'spring.cloud.kubernetes.config|secrets.sources') @@ -141,7 +141,7 @@ public static Prefix findPrefix(String explicitPrefix, Boolean useNameAsPrefix, * @return useProfileNameAsPrefix to be used in normalized sources */ public static boolean includeProfileSpecificSources(boolean defaultIncludeProfileSpecificSources, - Boolean includeProfileSpecificSources) { + Boolean includeProfileSpecificSources) { if (includeProfileSpecificSources != null) { return includeProfileSpecificSources; } @@ -171,7 +171,7 @@ public static String sourceName(String target, String applicationName, String na } public static MultipleSourcesContainer processNamedData(List strippedSources, - Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode) { + Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode) { return processNamedData(strippedSources, environment, sourceNames, namespace, decode, true); } @@ -181,8 +181,8 @@ public static MultipleSourcesContainer processNamedData(List strippedSources, - Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode, - boolean includeDefaultProfileData) { + Environment environment, LinkedHashSet sourceNames, String namespace, boolean decode, + boolean includeDefaultProfileData) { Map hashByName = strippedSources.stream() .collect(Collectors.toMap(StrippedSourceContainer::name, Function.identity())); @@ -212,7 +212,7 @@ public static MultipleSourcesContainer processNamedData(List processedData = SourceDataEntriesProcessor.processAllEntries( - rawData == null ? Map.of() : rawData, environment, includeDefaultProfileData); + rawData == null ? Map.of() : rawData, environment, includeDefaultProfileData); data.put(sourceName, processedData); } } @@ -225,7 +225,7 @@ public static MultipleSourcesContainer processNamedData(List sourceRawData) { + Map sourceRawData) { List activeProfiles = Arrays.stream(environment.getActiveProfiles()).toList(); boolean emptyActiveProfiles = activeProfiles.isEmpty(); @@ -236,7 +236,7 @@ static boolean processSource(boolean includeDefaultProfileData, Environment envi boolean defaultProfilePresent = activeProfiles.contains("default"); return includeDefaultProfileData || emptyActiveProfiles || profileBasedSourceName || defaultProfilePresent - || rawDataContainsProfileBasedSource(activeProfiles, sourceRawData).getAsBoolean(); + || rawDataContainsProfileBasedSource(activeProfiles, sourceRawData).getAsBoolean(); } /* @@ -248,7 +248,7 @@ static boolean processSource(boolean includeDefaultProfileData, Environment envi * yaml/yml/properties. For example: 'account-k8s.yaml' or the like. */ static BooleanSupplier rawDataContainsProfileBasedSource(List activeProfiles, - Map sourceRawData) { + Map sourceRawData) { return () -> Optional.ofNullable(sourceRawData) .orElse(Map.of()) .keySet() @@ -269,8 +269,8 @@ static String sourceDataName(String target, Set sourceNames, String name * these names to find any profile-based sources. */ public static MultipleSourcesContainer processLabeledData(List containers, - Environment environment, Map labels, String namespace, Set profiles, - boolean decode) { + Environment environment, Map labels, String namespace, Set profiles, + boolean decode) { // find sources by provided labels List byLabels = containers.stream().filter(one -> { @@ -327,7 +327,7 @@ private static Map decodeData(Map data) { } public static void registerSingle(ConfigurableBootstrapContext bootstrapContext, Class cls, T instance, - String name, ApplicationListener listener) { + String name, ApplicationListener listener) { bootstrapContext.registerIfAbsent(cls, BootstrapRegistry.InstanceSupplier.of(instance)); bootstrapContext.addCloseListener(event -> { @@ -341,7 +341,7 @@ public static void registerSingle(ConfigurableBootstrapContext bootstrapCont } public static void registerSingle(ConfigurableBootstrapContext bootstrapContext, Class cls, T instance, - String name) { + String name) { registerSingle(bootstrapContext, cls, instance, name, NO_OP); } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java index 1df2d7649b..0cd26a3985 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/LabeledSourceData.java @@ -46,7 +46,7 @@ public abstract class LabeledSourceData { private static final Log LOG = LogFactory.getLog(LabeledSourceData.class); public final SourceData compute(Map labels, Prefix prefix, String target, boolean profileSources, - boolean failFast, String namespace, String[] activeProfiles) { + boolean failFast, String namespace, String[] activeProfiles) { MultipleSourcesContainer data = MultipleSourcesContainer.empty(); String sourceDataName; @@ -70,7 +70,7 @@ public final SourceData compute(Map labels, Prefix prefix, Strin if (prefix.getName().equals(Prefix.KNOWN.getName())) { return new SourceData(sourceDataName, - prefixFlattenedSourceData(sourceData, prefix.prefixProvider().get())); + prefixFlattenedSourceData(sourceData, prefix.prefixProvider().get())); } if (prefix.getName().equals(Prefix.DELAYED.getName())) { @@ -83,7 +83,7 @@ public final SourceData compute(Map labels, Prefix prefix, Strin LOG.warn("Failure in reading labeled sources"); onException(failFast, e); return new SourceData(sourceDataName(target, data.data().keySet(), namespace), - Map.of(ERROR_PROPERTY, "true")); + Map.of(ERROR_PROPERTY, "true")); } } @@ -97,7 +97,7 @@ private SourceData emptySourceData(Map labels, String target, St .stream() .sorted() .collect(Collectors.collectingAndThen(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR), - sortedLabels -> sourceName(target, sortedLabels, namespace))); + sortedLabels -> sourceName(target, sortedLabels, namespace))); return SourceData.emptyRecord(sourceName); } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java index 9619a2f0a2..28d28e1b2e 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/NamedSourceData.java @@ -45,7 +45,7 @@ public abstract class NamedSourceData { private static final Log LOG = LogFactory.getLog(NamedSourceData.class); public final SourceData compute(String sourceName, Prefix prefix, String target, boolean profileSources, - boolean failFast, String namespace, String[] activeProfiles) { + boolean failFast, String namespace, String[] activeProfiles) { // first comes a non-profile-based source LinkedHashSet sourceNamesToSearchFor = new LinkedHashSet<>(); @@ -80,7 +80,7 @@ public final SourceData compute(String sourceName, Prefix prefix, String target, if (prefix.getName().equals(Prefix.KNOWN.getName())) { return new SourceData(sourceDataName, - prefixFlattenedSourceData(sourceData, prefix.prefixProvider().get())); + prefixFlattenedSourceData(sourceData, prefix.prefixProvider().get())); } if (prefix.getName().equals(Prefix.DELAYED.getName())) { @@ -99,7 +99,7 @@ public final SourceData compute(String sourceName, Prefix prefix, String target, .sorted() .collect(Collectors.joining(PROPERTY_SOURCE_NAME_SEPARATOR)); return new SourceData(generateSourceName(target, names, namespace, activeProfiles), - Map.of(ERROR_PROPERTY, "true")); + Map.of(ERROR_PROPERTY, "true")); } } diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java index 2de6573efb..914a92dd82 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/config/SourceDataFlattener.java @@ -42,7 +42,7 @@ static Map defaultFlattenedSourceData(LinkedHashMap prefixFlattenedSourceData(LinkedHashMap> sourceData, - String prefix) { + String prefix) { Map flattenedData = new HashMap<>(); sourceData.values().forEach(data -> data.forEach((key, value) -> flattenedData.put(prefix + "." + key, value))); return flattenedData; diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java index 9546a7366a..db034844da 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsProcessSourceTests.java @@ -78,7 +78,7 @@ void testProcessNamedDataOne() { boolean includeDefaultProfileData = true; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("configmap-a"); @@ -159,7 +159,7 @@ void testProcessNamedDataTwo(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account"); @@ -254,7 +254,7 @@ void testProcessNamedDataThree(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account-default"); @@ -368,7 +368,7 @@ void testProcessNamedDataFive(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account"); @@ -456,7 +456,7 @@ void testProcessNamedDataSix(CapturedOutput output) { boolean includeDefaultProfileData = false; MultipleSourcesContainer result = ConfigUtils.processNamedData(strippedSources, environment, sourceNames, - namespace, decode, includeDefaultProfileData); + namespace, decode, includeDefaultProfileData); Assertions.assertThat(result).isNotNull(); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("account-k8s"); diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java index 1b732df287..dfaf071564 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/config/ConfigUtilsTests.java @@ -154,16 +154,16 @@ void testUseIncludeProfileSpecificSourcesSourcesOverridesDefault() { void testMerge() { StrippedSourceContainer configMapOne = new StrippedSourceContainer(Map.of(), "configmap-one", - Map.of(Constants.APPLICATION_YAML, "propA: A\npropB: B")); + Map.of(Constants.APPLICATION_YAML, "propA: A\npropB: B")); StrippedSourceContainer configMapOneK8s = new StrippedSourceContainer(Map.of(), "configmap-one-kubernetes", - Map.of(Constants.APPLICATION_YAML, "propA: AA\npropC: C")); + Map.of(Constants.APPLICATION_YAML, "propA: AA\npropC: C")); LinkedHashSet sourceNames = Stream.of("configmap-one", "configmap-one-kubernetes") .collect(Collectors.toCollection(LinkedHashSet::new)); MultipleSourcesContainer result = ConfigUtils.processNamedData(List.of(configMapOne, configMapOneK8s), - new MockEnvironment(), sourceNames, "default", false); + new MockEnvironment(), sourceNames, "default", false); Assertions.assertThat(result.data().size()).isEqualTo(2); Map one = result.data().get("configmap-one"); @@ -206,13 +206,13 @@ void testKeysWithPrefixNonEmptyPrefix() { void testIssue1757() { StrippedSourceContainer containerA = new StrippedSourceContainer(Map.of("load", "true"), "client-1", - Map.of("client-id", "clientA", "client-secret", "a")); + Map.of("client-id", "clientA", "client-secret", "a")); StrippedSourceContainer containerB = new StrippedSourceContainer(Map.of("load", "true"), "client-2", - Map.of("client-id", "clientB", "client-secret", "b")); + Map.of("client-id", "clientB", "client-secret", "b")); MultipleSourcesContainer container = ConfigUtils.processLabeledData(List.of(containerA, containerB), - new MockEnvironment(), Map.of("load", "true"), "default", Set.of(), false); + new MockEnvironment(), Map.of("load", "true"), "default", Set.of(), false); assertThat(container.data().keySet()).containsExactlyInAnyOrder("client-1", "client-2"); diff --git a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java index 7c5835e3d5..6514b2aea2 100644 --- a/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java +++ b/spring-cloud-kubernetes-fabric8-config/src/test/java/org/springframework/cloud/kubernetes/fabric8/config/Fabric8ConfigUtilsTests.java @@ -61,7 +61,7 @@ void testSecretDataByLabelsSecretNotFound() { .resource(new SecretBuilder().withMetadata(new ObjectMetaBuilder().withName("my-secret").build()).build()) .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "red"), new MockEnvironment(), Set.of()); + Map.of("color", "red"), new MockEnvironment(), Set.of()); Assertions.assertThat(result.data()).isEmpty(); Assertions.assertThat(result.data().keySet()).isEmpty(); } @@ -79,7 +79,7 @@ void testSecretDataByLabelsSecretFound() { .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "pink"), new MockEnvironment(), Set.of()); + Map.of("color", "pink"), new MockEnvironment(), Set.of()); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-secret"); Map data = result.data().get("my-secret"); @@ -100,7 +100,7 @@ void testSecretDataByLabelsSecretFoundWithPropertyFile() { .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "pink"), new MockEnvironment(), Set.of()); + Map.of("color", "pink"), new MockEnvironment(), Set.of()); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-secret"); Map data = result.data().get("my-secret"); @@ -123,13 +123,13 @@ void testSecretDataByLabelsTwoSecretsFound() { .inNamespace("spring-k8s") .resource(new SecretBuilder() .withMetadata( - new ObjectMetaBuilder().withName("my-secret-2").withLabels(Map.of("color", "pink")).build()) + new ObjectMetaBuilder().withName("my-secret-2").withLabels(Map.of("color", "pink")).build()) .addToData(Map.of("property-2", Base64.getEncoder().encodeToString("value-2".getBytes()))) .build()) .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("color", "pink"), new MockEnvironment(), Set.of()); + Map.of("color", "pink"), new MockEnvironment(), Set.of()); Assertions.assertThat(result.data().keySet()).contains("my-secret"); Assertions.assertThat(result.data().keySet()).contains("my-secret-2"); @@ -196,7 +196,7 @@ void testSecretDataByLabelsThreeSecretsFound() { .create(); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByLabels(client, "spring-k8s", - Map.of("tag", "fit", "color", "blue"), new MockEnvironment(), Set.of("k8s")); + Map.of("tag", "fit", "color", "blue"), new MockEnvironment(), Set.of("k8s")); Assertions.assertThat(result.data().keySet()).contains("blue-circle-secret"); Assertions.assertThat(result.data().keySet()).contains("blue-square-secret"); @@ -223,7 +223,7 @@ void testSecretDataByNameSecretNotFound() { LinkedHashSet names = new LinkedHashSet<>(); names.add("nope"); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data()).isEmpty(); Assertions.assertThat(result.data()).isEmpty(); } @@ -241,7 +241,7 @@ void testSecretDataByNameSecretFound() { names.add("my-secret"); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().size()).isEqualTo(1); Map data = result.data().get("my-secret"); @@ -270,7 +270,7 @@ void testSecretDataByNameTwoSecretsFound() { names.add("my-secret-2"); MultipleSourcesContainer result = Fabric8ConfigUtils.secretsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().keySet()).contains("my-secret"); Assertions.assertThat(result.data().keySet()).contains("my-secret-2"); @@ -296,7 +296,7 @@ void testConfigMapsDataByNameFoundNoData() { names.add("my-config-map"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-config-map"); Map data = result.data().get("my-config-map"); @@ -314,7 +314,7 @@ void testConfigMapsDataByNameNotFound() { LinkedHashSet names = new LinkedHashSet<>(); names.add("my-config-map-not-found"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().keySet()).isEmpty(); Assertions.assertThat(result.data()).isEmpty(); } @@ -333,7 +333,7 @@ void testConfigMapDataByNameFound() { names.add("my-config-map"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-config-map"); Map data = result.data().get("my-config-map"); @@ -355,7 +355,7 @@ void testConfigMapDataByNameFoundWithPropertyFile() { names.add("my-config-map"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().keySet()).containsExactlyInAnyOrder("my-config-map"); Map data = result.data().get("my-config-map"); @@ -385,7 +385,7 @@ void testConfigMapDataByNameTwoFound() { names.add("my-config-map-2"); MultipleSourcesContainer result = Fabric8ConfigUtils.configMapsDataByName(client, "spring-k8s", names, - new MockEnvironment()); + new MockEnvironment()); Assertions.assertThat(result.data().keySet()).contains("my-config-map"); Assertions.assertThat(result.data().keySet()).contains("my-config-map-2"); @@ -401,10 +401,10 @@ void testConfigMapDataByNameTwoFound() { @Test void testNamespacesFromProperties() { ConfigReloadProperties configReloadProperties = new ConfigReloadProperties(false, true, false, - ConfigReloadProperties.ReloadStrategy.REFRESH, ConfigReloadProperties.ReloadDetectionMode.EVENT, - Duration.ofMillis(15000), Set.of("non-default"), false, Duration.ofSeconds(2)); + ConfigReloadProperties.ReloadStrategy.REFRESH, ConfigReloadProperties.ReloadDetectionMode.EVENT, + Duration.ofMillis(15000), Set.of("non-default"), false, Duration.ofSeconds(2)); Set namespaces = Fabric8ConfigUtils.namespaces(null, - new KubernetesNamespaceProvider(new MockEnvironment()), configReloadProperties, "configmap"); + new KubernetesNamespaceProvider(new MockEnvironment()), configReloadProperties, "configmap"); Assertions.assertThat(namespaces.size()).isEqualTo(1); Assertions.assertThat(namespaces.iterator().next()).isEqualTo("non-default"); } @@ -415,7 +415,7 @@ void testNamespacesFromProvider() { environment.setProperty("spring.cloud.kubernetes.client.namespace", "some"); KubernetesNamespaceProvider provider = new KubernetesNamespaceProvider(environment); Set namespaces = Fabric8ConfigUtils.namespaces(null, provider, ConfigReloadProperties.DEFAULT, - "configmap"); + "configmap"); Assertions.assertThat(namespaces.size()).isEqualTo(1); Assertions.assertThat(namespaces.iterator().next()).isEqualTo("some"); }