#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>