Skip to content

Commit

Permalink
Test and fix for MP config bug 8737 (getOrdinal returning wrong value) (
Browse files Browse the repository at this point in the history
  • Loading branch information
barchetta committed May 13, 2024
1 parent b805a51 commit 5c0798d
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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 = "_";

Expand Down Expand Up @@ -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";
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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() {
Expand Down Expand Up @@ -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() + ")";
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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";
Expand Down

0 comments on commit 5c0798d

Please sign in to comment.