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