diff --git a/config/config-mp/src/main/java/io/helidon/config/mp/MpEnvironmentVariablesSource.java b/config/config-mp/src/main/java/io/helidon/config/mp/MpEnvironmentVariablesSource.java index 9b1a62bf5b8..ae383148091 100644 --- a/config/config-mp/src/main/java/io/helidon/config/mp/MpEnvironmentVariablesSource.java +++ b/config/config-mp/src/main/java/io/helidon/config/mp/MpEnvironmentVariablesSource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023 Oracle and/or its affiliates. + * Copyright (c) 2020, 2024 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,9 @@ import jakarta.annotation.Priority; import org.eclipse.microprofile.config.spi.ConfigSource; -@Priority(300) +@Priority(MpEnvironmentVariablesSource.MY_DEFAULT_ORDINAL) class MpEnvironmentVariablesSource implements ConfigSource { + static final int MY_DEFAULT_ORDINAL = 300; private static final Pattern DISALLOWED_CHARS = Pattern.compile("[^a-zA-Z0-9_]"); private static final String UNDERSCORE = "_"; @@ -72,6 +73,16 @@ public String getValue(String propertyName) { }).value; } + @Override + public int getOrdinal() { + String configOrdinal = getValue(CONFIG_ORDINAL); + if (configOrdinal == null) { + return MY_DEFAULT_ORDINAL; + } else { + return ConfigSource.super.getOrdinal(); + } + } + @Override public String getName() { return "Environment Variables"; diff --git a/config/config-mp/src/main/java/io/helidon/config/mp/MpSystemPropertiesSource.java b/config/config-mp/src/main/java/io/helidon/config/mp/MpSystemPropertiesSource.java index f9cf1d96489..881e142fd08 100644 --- a/config/config-mp/src/main/java/io/helidon/config/mp/MpSystemPropertiesSource.java +++ b/config/config-mp/src/main/java/io/helidon/config/mp/MpSystemPropertiesSource.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2021 Oracle and/or its affiliates. + * Copyright (c) 2020, 2024 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,9 @@ import jakarta.annotation.Priority; import org.eclipse.microprofile.config.spi.ConfigSource; -@Priority(400) +@Priority(MpSystemPropertiesSource.MY_DEFAULT_ORDINAL) class MpSystemPropertiesSource implements ConfigSource { + static final int MY_DEFAULT_ORDINAL = 400; private final Properties props; MpSystemPropertiesSource() { @@ -57,6 +58,16 @@ public String getName() { return "System Properties"; } + @Override + public int getOrdinal() { + String configOrdinal = getValue(CONFIG_ORDINAL); + if (configOrdinal == null) { + return MY_DEFAULT_ORDINAL; + } else { + return ConfigSource.super.getOrdinal(); + } + } + @Override public String toString() { return getName() + " (" + getOrdinal() + ")"; diff --git a/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigSourcesTest.java b/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigSourcesTest.java index c19925f9181..90568997c39 100644 --- a/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigSourcesTest.java +++ b/config/config-mp/src/test/java/io/helidon/config/mp/MpConfigSourcesTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2022 Oracle and/or its affiliates. + * Copyright (c) 2020, 2024 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -107,6 +107,18 @@ void testMpConfigSourcesNullConfig() { assertThat(npe.getMessage(), is("Config cannot be null")); } + @Test + void testSystemPropertiesConfigSourceDefaultOrdinal() { + org.eclipse.microprofile.config.spi.ConfigSource configSource = MpConfigSources.systemProperties(); + assertThat(configSource.getOrdinal(), is(400)); + } + + @Test + void testEnvironmentVariablesConfigSourceDefaultOrdinal() { + org.eclipse.microprofile.config.spi.ConfigSource configSource = MpConfigSources.environmentVariables(); + assertThat(configSource.getOrdinal(), is(300)); + } + private static final class NodeImpl implements ConfigSource, NodeConfigSource { private static final String DESCRIPTION = "node-unit-test"; private static final String KEY = "key";