#208: DatatypeConverterImpl.parseBoolean should throw exception for invalid input

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java b/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java
index 7329565..c394800 100644
--- a/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java
+++ b/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java
@@ -253,13 +253,12 @@
 
     @Override
     public boolean parseBoolean(String lexicalXSDBoolean) {
-        Boolean b = _parseBoolean(lexicalXSDBoolean);
-        return (b == null) ? false : b;
+        return _parseBoolean(lexicalXSDBoolean);
     }
 
     public static Boolean _parseBoolean(CharSequence literal) {
         if (literal == null) {
-            return null;
+            throw new IllegalArgumentException("String \"null\" is not valid boolean value.");
         }
 
         int i = 0;
@@ -268,7 +267,7 @@
         boolean value = false;
 
         if (literal.length() <= 0) {
-            return null;
+            throw new IllegalArgumentException("String \"\" is not valid boolean value.");
         }
 
         do {
@@ -293,9 +292,8 @@
                 if (strIndex == 3) {
                     value = true;
                 } else {
-                    return false;
+                    throw new IllegalArgumentException("String \"" + literal + "\" is not valid boolean value.");
                 }
-//                    throw new IllegalArgumentException("String \"" + literal + "\" is not valid boolean value.");
 
                 break;
             case 'f':
@@ -308,9 +306,8 @@
                 if (strIndex == 4) {
                     value = false;
                 } else {
-                    return false;
+                    throw new IllegalArgumentException("String \"" + literal + "\" is not valid boolean value.");
                 }
-//                    throw new IllegalArgumentException("String \"" + literal + "\" is not valid boolean value.");
 
                 break;
         }
@@ -323,10 +320,8 @@
 
         if (i == len) {
             return value;
-        } else {
-            return null;
         }
-//            throw new IllegalArgumentException("String \"" + literal + "\" is not valid boolean value.");
+        throw new IllegalArgumentException("String \"" + literal + "\" is not valid boolean value.");
     }
 
     @Override
diff --git a/etc/spotbugs-exclude.xml b/etc/spotbugs-exclude.xml
index ceb087f..5ce58f2 100644
--- a/etc/spotbugs-exclude.xml
+++ b/etc/spotbugs-exclude.xml
@@ -22,15 +22,6 @@
 
     <!--
     TODO: reevaluate for MR
-    As designed, impossible to change, maybe with MR.
-    -->
-    <Match>
-        <Class name="jakarta.xml.bind.DatatypeConverterImpl"/>
-        <Bug pattern="NP_BOOLEAN_RETURN_NULL"/>
-    </Match>
-
-    <!--
-    TODO: reevaluate for MR
     As designed, impossible to change, maybe with MR?
     -->
     <Match>