From e66c51c3eced23350606b37f3783e524756ea26a Mon Sep 17 00:00:00 2001 From: Maxim Nesen Date: Tue, 23 Feb 2021 14:27:52 +0100 Subject: [PATCH] Empty/NULL properties handling Signed-off-by: Maxim Nesen --- .../config/ConfigurationModel.java | 12 ++++-- .../config/ConfigurationProviderTest.java | 42 +++++++++++++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 ext/microprofile/mp-config/src/test/java/org/glassfish/jersey/microprofile/config/ConfigurationProviderTest.java 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 8de143ef43..399318aa30 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 @@ public RuntimeType getRuntimeType() { @Override public Map 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 0000000000..6b2aecdd0a --- /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 properties = provider.getProperties(); + + Assert.assertNull(properties.get(EMPTY_PROPERTY_NAME)); + } + +} \ No newline at end of file