Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions src/main/java/org/apache/commons/lang3/BooleanUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -532,10 +532,10 @@ public static Integer toIntegerObject(final Boolean bool, final Integer trueValu
/**
* <p>Converts a String to a Boolean.</p>
*
* <p>{@code 'true'}, {@code 'on'}, {@code 'y'}, {@code 't'} or {@code 'yes'}
* (case insensitive) will return {@code true}.
* {@code 'false'}, {@code 'off'}, {@code 'n'}, {@code 'f'} or {@code 'no'}
* (case insensitive) will return {@code false}.
* <p>{@code 'true'}, {@code 'on'}, {@code 'y'}, {@code 't'}, {@code 'yes'}
* or {@code '1'} (case insensitive) will return {@code true}.
* {@code 'false'}, {@code 'off'}, {@code 'n'}, {@code 'f'}, {@code 'no'}
* or {@code '0'} (case insensitive) will return {@code false}.
* Otherwise, {@code null} is returned.</p>
*
* <p>NOTE: This method may return {@code null} and may throw a {@code NullPointerException}
Expand All @@ -556,6 +556,8 @@ public static Integer toIntegerObject(final Boolean bool, final Integer trueValu
* BooleanUtils.toBooleanObject("oFf") = Boolean.FALSE
* BooleanUtils.toBooleanObject("yes") = Boolean.TRUE
* BooleanUtils.toBooleanObject("Y") = Boolean.TRUE // i.e. Y[ES]
* BooleanUtils.toBooleanObject("1") = Boolean.TRUE
* BooleanUtils.toBooleanObject("0") = Boolean.FALSE
* BooleanUtils.toBooleanObject("blue") = null
* BooleanUtils.toBooleanObject("true ") = null // trailing space (too long)
* BooleanUtils.toBooleanObject("ono") = null // does not match on or no
Expand All @@ -581,11 +583,13 @@ public static Boolean toBooleanObject(final String str) {
case 1: {
final char ch0 = str.charAt(0);
if (ch0 == 'y' || ch0 == 'Y' ||
ch0 == 't' || ch0 == 'T') {
ch0 == 't' || ch0 == 'T' ||
ch0 == '1') {
return Boolean.TRUE;
}
if (ch0 == 'n' || ch0 == 'N' ||
ch0 == 'f' || ch0 == 'F') {
ch0 == 'f' || ch0 == 'F' ||
ch0 == '0') {
return Boolean.FALSE;
}
break;
Expand Down
4 changes: 4 additions & 0 deletions src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -280,10 +280,12 @@ public void test_toBooleanObject_String() {
assertEquals(Boolean.TRUE, BooleanUtils.toBooleanObject("Y"));
assertEquals(Boolean.TRUE, BooleanUtils.toBooleanObject("t")); // true
assertEquals(Boolean.TRUE, BooleanUtils.toBooleanObject("T"));
assertEquals(Boolean.TRUE, BooleanUtils.toBooleanObject("1"));
assertEquals(Boolean.FALSE, BooleanUtils.toBooleanObject("f")); // false
assertEquals(Boolean.FALSE, BooleanUtils.toBooleanObject("F"));
assertEquals(Boolean.FALSE, BooleanUtils.toBooleanObject("n")); // No
assertEquals(Boolean.FALSE, BooleanUtils.toBooleanObject("N"));
assertEquals(Boolean.FALSE, BooleanUtils.toBooleanObject("0"));
assertNull(BooleanUtils.toBooleanObject("z"));

assertNull(BooleanUtils.toBooleanObject("ab"));
Expand Down Expand Up @@ -353,7 +355,9 @@ public void test_toBoolean_String() {
assertTrue(BooleanUtils.toBoolean("YeS"));
assertTrue(BooleanUtils.toBoolean("YEs"));
assertTrue(BooleanUtils.toBoolean("YES"));
assertTrue(BooleanUtils.toBoolean("1"));
assertFalse(BooleanUtils.toBoolean("yes?"));
assertFalse(BooleanUtils.toBoolean("0"));
assertFalse(BooleanUtils.toBoolean("tru"));

assertFalse(BooleanUtils.toBoolean("no"));
Expand Down