Add ImmutableConfiguration.containsValue(Object)

- Account for null inputs
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6cc84f1..89746c2 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -26,7 +26,7 @@
     <release version="2.11.0" date="YYYY-MM-DD" description="Minor release with new features and updated dependencies; requires Java 8 or above.">
       <!-- ADD -->
       <action type="add" issue="CONFIGURATION-844" dev="ggregory" due-to="Thomas Steiner, Gary Gregory">Add support for empty sections #408.</action>
-      <action type="add" dev="ggregory" due-to="Rikkarth, Gary Gregory">Add ImmutableConfiguration.containsValue(String).</action>
+      <action type="add" dev="ggregory" due-to="Rikkarth, Gary Gregory">Add ImmutableConfiguration.containsValue(Object).</action>
       <!-- FIX -->
       <action type="fix" dev="ggregory" due-to="Gary Gregory">Fail-fast with a NullPointerException if DataConfiguration.DataConfiguration(Configuration) is called with null.</action>
       <action type="fix" dev="ggregory" due-to="Gary Gregory">Fail-fast with a NullPointerException if XMLPropertiesConfiguration.XMLPropertiesConfiguration(Element) is called with null.</action>
diff --git a/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java b/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
index ba32c59..e4911b9 100644
--- a/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
@@ -424,7 +424,7 @@
      * @since 2.11.0
      */
     @Override
-    public final boolean containsValue(final String value) {
+    public final boolean containsValue(final Object value) {
         beginRead(false);
         try {
             return containsValueInternal(value);
@@ -444,20 +444,23 @@
     protected abstract boolean containsKeyInternal(String key);
 
     /**
-     * Tests whether this configuration contains one or more matches to this value. This operation stops at first
-     * match but may be more expensive than the {@link #containsKeyInternal containsKey} method.
-     * <p>The implementation of this method will be different depending on the type of Configuration used.</p>
+     * Tests whether this configuration contains one or more matches to this value. This operation stops at first match but may be more expensive than the
+     * {@link #containsKeyInternal containsKey} method.
+     * <p>
+     * The implementation of this method will be different depending on the type of Configuration used.
+     * </p>
      *
-     * <p>Note that this method is identical in functionality to
-     * {@link #containsValue containsValue}, (which is part of the {@link ImmutableConfiguration} interface).</p>
+     * <p>
+     * Note that this method is identical in functionality to {@link #containsValue containsValue}, (which is part of the {@link ImmutableConfiguration}
+     * interface).
+     * </p>
      *
-     * @param value a value to search for
-     * @return {@code true} if and only if some key maps to the {@code value} argument in this hashtable as determined
-     * by the {@code equals} method; {@code false} otherwise.
-     * @throws NullPointerException if the value is {@code null}
+     * @param value the value in question
+     * @return {@code true} if and only if some key maps to the {@code value} argument in this configuration as determined by the {@code equals} method;
+     *         {@code false} otherwise.
      * @since 2.11.0
      */
-    protected abstract boolean containsValueInternal(String value);
+    protected abstract boolean containsValueInternal(Object value);
 
     /**
      * Helper method for obtaining a property value with a type conversion.
@@ -1555,9 +1558,9 @@
      * @return true if the value is found in the properties, false otherwise
      * @since 2.11.0
      */
-    protected boolean contains(final Iterator<String> keys, final String value) {
+    protected boolean contains(final Iterator<String> keys, final Object value) {
         while (keys.hasNext()) {
-            if (value.equals(getProperty(keys.next()))) {
+            if (Objects.equals(value, getProperty(keys.next()))) {
                 return true;
             }
         }
diff --git a/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java b/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
index 0f5edb8..8857d1c 100644
--- a/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
@@ -461,7 +461,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
+    protected boolean containsValueInternal(final Object value) {
         return contains(getKeys(), value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/BaseConfiguration.java b/src/main/java/org/apache/commons/configuration2/BaseConfiguration.java
index f6697c3..3a65de9 100644
--- a/src/main/java/org/apache/commons/configuration2/BaseConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/BaseConfiguration.java
@@ -142,7 +142,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(String value) {
+    protected boolean containsValueInternal(Object value) {
         return store.containsValue(value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/CompositeConfiguration.java b/src/main/java/org/apache/commons/configuration2/CompositeConfiguration.java
index c70ba27..a2d942f 100644
--- a/src/main/java/org/apache/commons/configuration2/CompositeConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/CompositeConfiguration.java
@@ -304,7 +304,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
+    protected boolean containsValueInternal(final Object value) {
         return configList.stream().anyMatch(config -> config.containsValue(value));
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/DataConfiguration.java b/src/main/java/org/apache/commons/configuration2/DataConfiguration.java
index d63fc39..f07ff8d 100644
--- a/src/main/java/org/apache/commons/configuration2/DataConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/DataConfiguration.java
@@ -219,7 +219,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
+    protected boolean containsValueInternal(final Object value) {
         return configuration.containsValue(value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java b/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java
index 6517e81..84632e1 100644
--- a/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java
@@ -484,8 +484,8 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
-        final AbstractJdbcOperation<Boolean> op = new AbstractJdbcOperation<Boolean>(ConfigurationErrorEvent.READ, ConfigurationErrorEvent.READ, value, null) {
+    protected boolean containsValueInternal(final Object value) {
+        final AbstractJdbcOperation<Boolean> op = new AbstractJdbcOperation<Boolean>(ConfigurationErrorEvent.READ, ConfigurationErrorEvent.READ, null, value) {
             @Override
             protected Boolean performOperation() throws SQLException {
                 try (ResultSet rs = openResultSet(String.format(SQL_GET_PROPERTY, table, valueColumn), false, value)) {
diff --git a/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java b/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java
index 5c4a6d3..15fdde3 100644
--- a/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java
@@ -364,7 +364,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(String value) {
+    protected boolean containsValueInternal(Object value) {
         return this.getCurrentConfig().contains(getKeys(), value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java b/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java
index 57c97ca..db80868 100644
--- a/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/ImmutableConfiguration.java
@@ -23,6 +23,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.Properties;
 
 import org.apache.commons.configuration2.convert.PropertyConverter;
@@ -70,10 +71,10 @@
      * @return {@code true} if this configuration maps one or more keys to the specified value, false otherwise.
      * @since 2.11.0
      */
-    default boolean containsValue(final String value) {
+    default boolean containsValue(final Object value) {
         final Iterator<String> keys = getKeys();
         while (keys.hasNext()) {
-            if (value.equals(getProperty(keys.next()))) {
+            if (Objects.equals(value, getProperty(keys.next()))) {
                 return true;
             }
         }
diff --git a/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java b/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
index 9cc1a27..b44fc91 100644
--- a/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
@@ -153,7 +153,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
+    protected boolean containsValueInternal(final Object value) {
         return contains(getKeys(), value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/MapConfiguration.java b/src/main/java/org/apache/commons/configuration2/MapConfiguration.java
index be0df0a..09c7c86 100644
--- a/src/main/java/org/apache/commons/configuration2/MapConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/MapConfiguration.java
@@ -178,8 +178,8 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
-        return map.containsValue(value);
+    protected boolean containsValueInternal(final Object value) {
+        return value != null && map.containsValue(value);
     }
 
     @Override
diff --git a/src/main/java/org/apache/commons/configuration2/PatternSubtreeConfigurationWrapper.java b/src/main/java/org/apache/commons/configuration2/PatternSubtreeConfigurationWrapper.java
index 94a678f..cc80de9 100644
--- a/src/main/java/org/apache/commons/configuration2/PatternSubtreeConfigurationWrapper.java
+++ b/src/main/java/org/apache/commons/configuration2/PatternSubtreeConfigurationWrapper.java
@@ -136,7 +136,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(String value) {
+    protected boolean containsValueInternal(Object value) {
         return config.containsValue(value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java b/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
index 1f176fb..fa0aed5 100644
--- a/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
@@ -137,7 +137,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
+    protected boolean containsValueInternal(final Object value) {
         return parent.containsValue(value);
     }
 
diff --git a/src/main/java/org/apache/commons/configuration2/web/BaseWebConfiguration.java b/src/main/java/org/apache/commons/configuration2/web/BaseWebConfiguration.java
index 34a0a2c..d18d08b 100644
--- a/src/main/java/org/apache/commons/configuration2/web/BaseWebConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/web/BaseWebConfiguration.java
@@ -74,7 +74,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(final String value) {
+    protected boolean containsValueInternal(final Object value) {
         return contains(getKeys(), value);
     }
 
diff --git a/src/test/java/org/apache/commons/configuration2/NonCloneableConfiguration.java b/src/test/java/org/apache/commons/configuration2/NonCloneableConfiguration.java
index 552c3e5..aa5759f 100644
--- a/src/test/java/org/apache/commons/configuration2/NonCloneableConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/NonCloneableConfiguration.java
@@ -51,7 +51,7 @@
      * @since 2.11.0
      */
     @Override
-    protected boolean containsValueInternal(String value) {
+    protected boolean containsValueInternal(Object value) {
         return false;
     }
 
diff --git a/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java b/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java
index 12f6886..773afa5 100644
--- a/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java
@@ -81,6 +81,8 @@
     @Test
     public void testContainsValue() {
         final Configuration config = getConfiguration();
+        assertFalse(config.containsValue(null));
+        assertFalse(config.containsValue(""));
         assertTrue(config.containsValue("value1"));
         assertFalse(config.containsValue("value99999"));
     }
@@ -103,8 +105,8 @@
     public void givenNullValueTestContains() {
         AbstractConfiguration config = getConfiguration();
         Iterator<String> keys = config.getKeys();
-
-        assertThrows(NullPointerException.class, () -> config.contains(keys, null));
+        assertFalse(config.contains(keys, null));
+        assertFalse(config.contains(keys, ""));
     }
 
     @Test
diff --git a/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java b/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java
index d61f67d..0acce27 100644
--- a/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java
+++ b/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java
@@ -94,7 +94,7 @@
         }
 
         @Override
-        protected boolean containsValueInternal(String value) {
+        protected boolean containsValueInternal(Object value) {
             return config.containsValue(value);
         }
 
diff --git a/src/test/java/org/apache/commons/configuration2/TestAbstractHierarchicalConfiguration.java b/src/test/java/org/apache/commons/configuration2/TestAbstractHierarchicalConfiguration.java
index 2eee1a2..bc2c7bd 100644
--- a/src/test/java/org/apache/commons/configuration2/TestAbstractHierarchicalConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/TestAbstractHierarchicalConfiguration.java
@@ -944,6 +944,7 @@
 
     @Test
     public void testContainsValue() {
-        assertThrows(NullPointerException.class, () -> config.containsValue(null));
+        assertFalse(config.containsValue(null));
+        assertFalse(config.containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java b/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java
index aff406b..b858789 100644
--- a/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/TestDataConfiguration.java
@@ -1970,5 +1970,6 @@
     public void testContainsValue() {
         final Configuration config = conf.getConfiguration();
         assertFalse(config.containsValue(null));
+        assertTrue(config.containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/TestDefaultImmutableConfiguration.java b/src/test/java/org/apache/commons/configuration2/TestDefaultImmutableConfiguration.java
index 598b6f9..9b880d0 100644
--- a/src/test/java/org/apache/commons/configuration2/TestDefaultImmutableConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/TestDefaultImmutableConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.commons.configuration2;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -365,6 +366,8 @@
     @Test
     public void testContainsValueDefaultImplementation() {
         config.map.put("test", "213123");
+        assertFalse(config.containsValue(""));
+        assertFalse(config.containsValue(null));
         assertTrue(config.containsValue("213123"));
     }
 
diff --git a/src/test/java/org/apache/commons/configuration2/TestMapConfiguration.java b/src/test/java/org/apache/commons/configuration2/TestMapConfiguration.java
index 39675c5..d6f8120 100644
--- a/src/test/java/org/apache/commons/configuration2/TestMapConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/TestMapConfiguration.java
@@ -165,6 +165,7 @@
 
     @Test
     public void testContainsValue() {
-        assertFalse(getConfiguration().containsValue(null), "should return false");
+        assertFalse(getConfiguration().containsValue(null));
+        assertFalse(getConfiguration().containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java b/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
index 56300ef..6a223b1 100644
--- a/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
@@ -1222,6 +1222,8 @@
 
         assertTrue(config.containsValue("jndivalue2"));
         assertFalse(config.containsValue("notFound"));
+        assertFalse(config.containsValue(null));
+        assertFalse(config.containsValue(""));
     }
 
     /**
diff --git a/src/test/java/org/apache/commons/configuration2/web/TestAppletConfiguration.java b/src/test/java/org/apache/commons/configuration2/web/TestAppletConfiguration.java
index b564bba..8f3c08c 100644
--- a/src/test/java/org/apache/commons/configuration2/web/TestAppletConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/web/TestAppletConfiguration.java
@@ -17,6 +17,7 @@
 
 package org.apache.commons.configuration2.web;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.applet.Applet;
@@ -24,7 +25,6 @@
 
 import org.apache.commons.configuration2.AbstractConfiguration;
 import org.apache.commons.configuration2.BaseConfiguration;
-import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.MapConfiguration;
 import org.apache.commons.configuration2.TestAbstractConfiguration;
 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
@@ -117,7 +117,7 @@
 
     @Test
     public void testContainsValue() {
-        final Configuration config = getConfiguration();
-        assertThrows(NullPointerException.class, () -> config.containsValue(null));
+        assertFalse(getConfiguration().containsValue(null));
+        assertFalse(getConfiguration().containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/web/TestServletConfiguration.java b/src/test/java/org/apache/commons/configuration2/web/TestServletConfiguration.java
index d333eab..08d2ef4 100644
--- a/src/test/java/org/apache/commons/configuration2/web/TestServletConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/web/TestServletConfiguration.java
@@ -17,6 +17,7 @@
 
 package org.apache.commons.configuration2.web;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -28,7 +29,6 @@
 import javax.servlet.http.HttpServlet;
 
 import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.TestAbstractConfiguration;
 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
 import org.junit.jupiter.api.Test;
@@ -101,7 +101,7 @@
 
     @Test
     public void testContainsValue() {
-        final Configuration config = getConfiguration();
-        assertThrows(NullPointerException.class, () -> config.containsValue(null));
+        assertFalse(getConfiguration().containsValue(null));
+        assertFalse(getConfiguration().containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/web/TestServletContextConfiguration.java b/src/test/java/org/apache/commons/configuration2/web/TestServletContextConfiguration.java
index 8cd6d4f..7726472 100644
--- a/src/test/java/org/apache/commons/configuration2/web/TestServletContextConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/web/TestServletContextConfiguration.java
@@ -17,6 +17,7 @@
 
 package org.apache.commons.configuration2.web;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -29,7 +30,6 @@
 import javax.servlet.http.HttpServlet;
 
 import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.TestAbstractConfiguration;
 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
 import org.junit.jupiter.api.Test;
@@ -111,7 +111,7 @@
 
     @Test
     public void testContainsValue() {
-        final Configuration config = getConfiguration();
-        assertThrows(NullPointerException.class, () -> config.containsValue(null));
+        assertFalse(getConfiguration().containsValue(null));
+        assertFalse(getConfiguration().containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/web/TestServletFilterConfiguration.java b/src/test/java/org/apache/commons/configuration2/web/TestServletFilterConfiguration.java
index a48a65f..0b6dd8d 100644
--- a/src/test/java/org/apache/commons/configuration2/web/TestServletFilterConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/web/TestServletFilterConfiguration.java
@@ -17,6 +17,7 @@
 
 package org.apache.commons.configuration2.web;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.util.Enumeration;
@@ -26,7 +27,6 @@
 import javax.servlet.ServletContext;
 
 import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.TestAbstractConfiguration;
 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
 import org.junit.jupiter.api.Test;
@@ -95,7 +95,7 @@
 
     @Test
     public void testContainsValue() {
-        final Configuration config = getConfiguration();
-        assertThrows(NullPointerException.class, () -> config.containsValue(null));
+        assertFalse(getConfiguration().containsValue(null));
+        assertFalse(getConfiguration().containsValue(""));
     }
 }
diff --git a/src/test/java/org/apache/commons/configuration2/web/TestServletRequestConfiguration.java b/src/test/java/org/apache/commons/configuration2/web/TestServletRequestConfiguration.java
index dad94ef..e32a947 100644
--- a/src/test/java/org/apache/commons/configuration2/web/TestServletRequestConfiguration.java
+++ b/src/test/java/org/apache/commons/configuration2/web/TestServletRequestConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.commons.configuration2.web;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -118,7 +119,7 @@
 
     @Test
     public void testContainsValue() {
-        final Configuration config = getConfiguration();
-        assertThrows(NullPointerException.class, () -> config.containsValue(null));
+        assertFalse(getConfiguration().containsValue(null));
+        assertFalse(getConfiguration().containsValue(""));
     }
 }