Empty/NULL properties handling Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/ext/microprofile/mp-config/src/main/java/org/glassfish/jersey/microprofile/config/ConfigurationModel.java b/ext/microprofile/mp-config/src/main/java/org/glassfish/jersey/microprofile/config/ConfigurationModel.java index 8de143e..399318a 100644 --- a/ext/microprofile/mp-config/src/main/java/org/glassfish/jersey/microprofile/config/ConfigurationModel.java +++ b/ext/microprofile/mp-config/src/main/java/org/glassfish/jersey/microprofile/config/ConfigurationModel.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -82,8 +82,14 @@ @Override public Map<String, Object> getProperties() { - if (properties.isEmpty()) { - config.getPropertyNames().forEach(c -> properties.put(c, config.getValue(c, String.class))); + if (properties.isEmpty()) { //load properties from external config + final String emptyString = ""; + config.getPropertyNames().forEach(c -> { + final String value = config.getOptionalValue(c, String.class).orElse(emptyString).trim(); + if (!value.isEmpty()) { //eliminate NULL and "" values w/o Exception + properties.put(c, value); + } + }); } return properties;
diff --git a/ext/microprofile/mp-config/src/test/java/org/glassfish/jersey/microprofile/config/ConfigurationProviderTest.java b/ext/microprofile/mp-config/src/test/java/org/glassfish/jersey/microprofile/config/ConfigurationProviderTest.java new file mode 100644 index 0000000..6b2aecd --- /dev/null +++ b/ext/microprofile/mp-config/src/test/java/org/glassfish/jersey/microprofile/config/ConfigurationProviderTest.java
@@ -0,0 +1,42 @@ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package org.glassfish.jersey.microprofile.config; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Map; + +public class ConfigurationProviderTest { + + private static final String EMPTY_PROPERTY_NAME = "EMPTY_PROPERTY"; + + @Before + public void before() { + System.setProperty(EMPTY_PROPERTY_NAME, ""); + } + + @Test + public void getEmptyPropertiesTest() { + final ConfigurationProvider provider = new ConfigurationProvider(); + final Map<String, Object> properties = provider.getProperties(); + + Assert.assertNull(properties.get(EMPTY_PROPERTY_NAME)); + } + +} \ No newline at end of file