GERONIMO-6759 Support for MicroProfile Config 1.4
Signed-off-by: Raymond Augé <rotty3000@apache.org>
diff --git a/impl/pom.xml b/impl/pom.xml
index 7f38c64..e33f1f3 100644
--- a/impl/pom.xml
+++ b/impl/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.geronimo.config</groupId>
<artifactId>geronimo-config</artifactId>
- <version>1.2.3-SNAPSHOT</version>
+ <version>1.3.0-SNAPSHOT</version>
</parent>
<artifactId>geronimo-config-impl</artifactId>
diff --git a/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigInjectionBean.java b/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigInjectionBean.java
index 996166e..5f8a919 100644
--- a/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigInjectionBean.java
+++ b/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigInjectionBean.java
@@ -113,7 +113,7 @@
final ConfigProperty configProperty = annotated.getAnnotation(ConfigProperty.class);
final String key = getConfigKey(ip, configProperty);
final String defaultValue = configProperty.defaultValue();
- final boolean canBeNull = ConfigProperty.NULL_VALUE.equals(defaultValue);
+ final boolean canBeNull = ConfigProperty.UNCONFIGURED_VALUE.equals(defaultValue);
return toInstance(
annotated.getBaseType(),
key,
diff --git a/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigurationHandler.java b/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigurationHandler.java
index 87db4f2..3435255 100644
--- a/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigurationHandler.java
+++ b/impl/src/main/java/org/apache/geronimo/config/cdi/ConfigurationHandler.java
@@ -120,7 +120,7 @@
key = prefix + (annotation.name().isEmpty() ? m.getDeclaringClass().getName() + "." + m.getName() : annotation.name());
final String defaultValue = annotation.defaultValue();
- final boolean canBeNull = ConfigProperty.NULL_VALUE.equals(defaultValue);
+ final boolean canBeNull = ConfigProperty.UNCONFIGURED_VALUE.equals(defaultValue);
final boolean hasDefault = !ConfigProperty.UNCONFIGURED_VALUE.equals(defaultValue) && !canBeNull;
if (hasDefault) {
diff --git a/impl/src/test/java/org/apache/geronimo/config/test/internal/DefaultNullValueTest.java b/impl/src/test/java/org/apache/geronimo/config/test/internal/DefaultNullValueTest.java
index 494ca28..0d2d4da 100644
--- a/impl/src/test/java/org/apache/geronimo/config/test/internal/DefaultNullValueTest.java
+++ b/impl/src/test/java/org/apache/geronimo/config/test/internal/DefaultNullValueTest.java
@@ -32,9 +32,8 @@
import java.net.URL;
import java.time.Duration;
import java.util.List;
+import java.util.Optional;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNull;
/**
@@ -63,187 +62,113 @@
assertNull(injected.getClassNullValue());
assertNull(injected.getDoubleNullValue());
assertNull(injected.getDurationNullValue());
-
- assertFalse(injected.isPrimitiveBooleanNullValue());
- assertEquals(0, injected.getPrimitiveLongNullValue());
- assertEquals(0, injected.getPrimitiveIntegerNullValue());
- assertEquals(0, injected.getPrimitiveShortNullValue());
- assertEquals(0, injected.getPrimitiveByteNullValue());
- assertEquals(0.0F, injected.getPrimitiveFloatNullValue());
- assertEquals(0.0D, injected.getPrimitiveDoubleNullValue());
- assertEquals('\u0000', injected.getPrimitiveCharacterNullValue());
-
}
@ApplicationScoped
public static class Injected {
@Inject
- @ConfigProperty(name = "boolean.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Boolean booleanNullValue;
+ @ConfigProperty(name = "boolean.nullvalue.default")
+ private Optional<Boolean> booleanNullValue;
@Inject
- @ConfigProperty(name = "boolean.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private boolean primitiveBooleanNullValue;
+ @ConfigProperty(name = "string.nullvalue.default")
+ private Optional<String> stringNullValue;
@Inject
- @ConfigProperty(name = "string.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private String stringNullValue;
+ @ConfigProperty(name = "long.nullvalue.default")
+ private Optional<Long> longNullValue;
@Inject
- @ConfigProperty(name = "long.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Long longNullValue;
+ @ConfigProperty(name = "integer.nullvalue.default")
+ private Optional<Integer> integerNullValue;
@Inject
- @ConfigProperty(name = "long.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private long primitiveLongNullValue;
+ @ConfigProperty(name = "float.nullvalue.default")
+ private Optional<Float> floatNullValue;
@Inject
- @ConfigProperty(name = "integer.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Integer integerNullValue;
+ @ConfigProperty(name = "double.nullvalue.default")
+ private Optional<Double> doubleNullValue;
@Inject
- @ConfigProperty(name = "integer.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private int primitiveIntegerNullValue;
+ @ConfigProperty(name = "character.nullvalue.default")
+ private Optional<Character> characterNullValue;
@Inject
- @ConfigProperty(name = "float.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Float floatNullValue;
+ @ConfigProperty(name = "short.nullvalue.default")
+ private Optional<Short> shortNullValue;
@Inject
- @ConfigProperty(name = "float.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private float primitiveFloatNullValue;
+ @ConfigProperty(name = "byte.nullvalue.default")
+ private Optional<Byte> byteNullValue;
@Inject
- @ConfigProperty(name = "double.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Double doubleNullValue;
+ @ConfigProperty(name = "list.nullvalue.default")
+ private Optional<List<String>> listNullValue;
@Inject
- @ConfigProperty(name = "double.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private double primitiveDoubleNullValue;
+ @ConfigProperty(name = "class.nullvalue.default")
+ private Optional<Class> classNullValue;
@Inject
- @ConfigProperty(name = "character.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Character characterNullValue;
+ @ConfigProperty(name = "url.nullvalue.default")
+ private Optional<URL> urlNullValue;
@Inject
- @ConfigProperty(name = "character.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private char primitiveCharacterNullValue;
-
- @Inject
- @ConfigProperty(name = "short.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Short shortNullValue;
-
- @Inject
- @ConfigProperty(name = "short.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private short primitiveShortNullValue;
-
- @Inject
- @ConfigProperty(name = "byte.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Byte byteNullValue;
-
- @Inject
- @ConfigProperty(name = "byte.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private byte primitiveByteNullValue;
-
- @Inject
- @ConfigProperty(name = "list.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private List<String> listNullValue;
-
- @Inject
- @ConfigProperty(name = "class.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Class classNullValue;
-
- @Inject
- @ConfigProperty(name = "url.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private URL urlNullValue;
-
- @Inject
- @ConfigProperty(name = "duration.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
- private Duration durationNullValue;
+ @ConfigProperty(name = "duration.nullvalue.default")
+ private Optional<Duration> durationNullValue;
public Boolean getBooleanNullValue() {
- return booleanNullValue;
- }
-
- public boolean isPrimitiveBooleanNullValue() {
- return primitiveBooleanNullValue;
+ return booleanNullValue.orElse(null);
}
public String getStringNullValue() {
- return stringNullValue;
+ return stringNullValue.orElse(null);
}
public Long getLongNullValue() {
- return longNullValue;
- }
-
- public long getPrimitiveLongNullValue() {
- return primitiveLongNullValue;
+ return longNullValue.orElse(null);
}
public Integer getIntegerNullValue() {
- return integerNullValue;
- }
-
- public int getPrimitiveIntegerNullValue() {
- return primitiveIntegerNullValue;
+ return integerNullValue.orElse(null);
}
public Float getFloatNullValue() {
- return floatNullValue;
- }
-
- public float getPrimitiveFloatNullValue() {
- return primitiveFloatNullValue;
+ return floatNullValue.orElse(null);
}
public Double getDoubleNullValue() {
- return doubleNullValue;
- }
-
- public double getPrimitiveDoubleNullValue() {
- return primitiveDoubleNullValue;
+ return doubleNullValue.orElse(null);
}
public Character getCharacterNullValue() {
- return characterNullValue;
- }
-
- public char getPrimitiveCharacterNullValue() {
- return primitiveCharacterNullValue;
+ return characterNullValue.orElse(null);
}
public Short getShortNullValue() {
- return shortNullValue;
- }
-
- public short getPrimitiveShortNullValue() {
- return primitiveShortNullValue;
+ return shortNullValue.orElse(null);
}
public Byte getByteNullValue() {
- return byteNullValue;
- }
-
- public byte getPrimitiveByteNullValue() {
- return primitiveByteNullValue;
+ return byteNullValue.orElse(null);
}
public List<String> getListNullValue() {
- return listNullValue;
+ return listNullValue.orElse(null);
}
public Class getClassNullValue() {
- return classNullValue;
+ return classNullValue.orElse(null);
}
public URL getUrlNullValue() {
- return urlNullValue;
+ return urlNullValue.orElse(null);
}
public Duration getDurationNullValue() {
- return durationNullValue;
+ return durationNullValue.orElse(null);
}
}
}
diff --git a/impl/src/test/java/org/apache/geronimo/config/test/internal/ProxyTest.java b/impl/src/test/java/org/apache/geronimo/config/test/internal/ProxyTest.java
index c8ea581..5f53cbf 100644
--- a/impl/src/test/java/org/apache/geronimo/config/test/internal/ProxyTest.java
+++ b/impl/src/test/java/org/apache/geronimo/config/test/internal/ProxyTest.java
@@ -129,67 +129,67 @@
@ConfigProperty(defaultValue = "1,2,1")
Collection<Integer> listDefaults();
- @ConfigProperty(name = "boolean.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "boolean.nullvalue.default")
Boolean booleanNullValue();
- @ConfigProperty(name = "boolean.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "boolean.nullvalue.default")
boolean primitiveBooleanNullValue();
- @ConfigProperty(name = "string.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "string.nullvalue.default")
String stringNullValue();
- @ConfigProperty(name = "long.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "long.nullvalue.default")
Long longNullValue();
- @ConfigProperty(name = "long.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "long.nullvalue.default")
long primitiveLongNullValue();
- @ConfigProperty(name = "integer.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "integer.nullvalue.default")
Integer integerNullValue();
- @ConfigProperty(name = "integer.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "integer.nullvalue.default")
int primitiveIntegerNullValue();
- @ConfigProperty(name = "float.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "float.nullvalue.default")
Float floatNullValue();
- @ConfigProperty(name = "float.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "float.nullvalue.default")
float primitiveFloatNullValue();
- @ConfigProperty(name = "double.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "double.nullvalue.default")
Double doubleNullValue();
- @ConfigProperty(name = "double.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "double.nullvalue.default")
double primitiveDoubleNullValue();
- @ConfigProperty(name = "character.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "character.nullvalue.default")
Character characterNullValue();
- @ConfigProperty(name = "character.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "character.nullvalue.default")
char primitiveCharacterNullValue();
- @ConfigProperty(name = "short.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "short.nullvalue.default")
Short shortNullValue();
- @ConfigProperty(name = "short.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "short.nullvalue.default")
short primitiveShortNullValue();
- @ConfigProperty(name = "byte.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "byte.nullvalue.default")
Byte byteNullValue();
- @ConfigProperty(name = "byte.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "byte.nullvalue.default")
byte primitiveByteNullValue();
- @ConfigProperty(name = "list.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "list.nullvalue.default")
List<String> listNullValue();
- @ConfigProperty(name = "class.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "class.nullvalue.default")
Class classNullValue();
- @ConfigProperty(name = "url.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "url.nullvalue.default")
URL urlNullValue();
- @ConfigProperty(name = "duration.nullvalue.default", defaultValue = ConfigProperty.NULL_VALUE)
+ @ConfigProperty(name = "duration.nullvalue.default")
Duration durationNullValue();
}
}
diff --git a/pom.xml b/pom.xml
index 5b58e73..7312462 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.apache.geronimo.config</groupId>
<artifactId>geronimo-config</artifactId>
- <version>1.2.3-SNAPSHOT</version>
+ <version>1.3.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Geronimo Microprofile Configuration</name>
@@ -51,7 +51,7 @@
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
- <microprofile-config.version>1.4-RC2</microprofile-config.version>
+ <microprofile-config.version>1.4</microprofile-config.version>
<arquillian.version>1.1.14.Final</arquillian.version>
<arquillian-weld-embedded.version>2.0.0.Final</arquillian-weld-embedded.version>
<bnd.version>5.0.1</bnd.version>