Fix defaultIsEmpty typing.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@922904 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gary D. Gregory 2010-03-14 17:33:23 +00:00
parent 1ced894df7
commit 5b7817cc3f
3 changed files with 74 additions and 22 deletions

View File

@ -38,9 +38,13 @@ public class CharSequenceUtils {
}
/**
* <p>Reverses a CharSequence as per {@link StringBuilder#reverse()}.</p>
* <p>
* Reverses a CharSequence as per {@link StringBuilder#reverse()}.
* </p>
*
* <p>A <code>null</code> CharSequence returns <code>null</code>.</p>
* <p>
* A <code>null</code> CharSequence returns <code>null</code>.
* </p>
*
* <pre>
* CharSequenceUtils.reverse(null) = null
@ -48,7 +52,8 @@ public class CharSequenceUtils {
* CharSequenceUtils.reverse("bat").toString() = "tab"
* </pre>
*
* @param str the String to reverse, may be null
* @param str
* the String to reverse, may be null
* @return the reversed String, <code>null</code> if null String input
*/
public static CharSequence reverse(CharSequence str) {
@ -78,4 +83,39 @@ public class CharSequenceUtils {
public static CharSequence subSequence(CharSequence cs, int start) {
return cs == null ? null : cs.subSequence(start, cs.length());
}
public static int indexOf(CharSequence cs, int ch, int startPos) {
int max = cs.length();
if (startPos < 0) {
startPos = 0;
} else if (startPos >= max) {
return StringUtils.INDEX_NOT_FOUND;
}
if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
for (int i = startPos; i < max; i++) {
if (cs.charAt(i) == ch) {
return i;
}
}
return StringUtils.INDEX_NOT_FOUND;
}
// supp chars
if (ch <= Character.MAX_CODE_POINT) {
char[] surrogates = Character.toChars(ch);
for (int i = startPos; i < max; i++) {
if (cs.charAt(i) == surrogates[0]) {
if (i + 1 == max) {
break;
}
if (cs.charAt(i + 1) == surrogates[1]) {
return i;
}
}
}
}
return StringUtils.INDEX_NOT_FOUND;
}
}

View File

@ -5390,7 +5390,7 @@ public class StringUtils {
* if the input is empty ("") or <code>null</code>, may be null
* @return the passed in CharSequence, or the default
*/
public static CharSequence defaultIfEmpty(CharSequence str, CharSequence defaultStr) {
public static <T extends CharSequence> T defaultIfEmpty(T str, T defaultStr) {
return StringUtils.isEmpty(str) ? defaultStr : str;
}

View File

@ -1416,24 +1416,36 @@ public class StringUtilsTest extends TestCase {
assertEquals("NULL", StringUtils.defaultIfEmpty("", "NULL"));
assertEquals("abc", StringUtils.defaultIfEmpty("abc", "NULL"));
assertNull(StringUtils.defaultIfEmpty("", null));
// Tests compatibility for the API return type
String s = StringUtils.defaultIfEmpty("abc", "NULL");
assertEquals("abc", s);
}
public void testDefaultIfEmpty_StringBuilders() {
assertEquals("NULL", StringUtils.defaultIfEmpty(new StringBuilder(""), new StringBuilder("NULL")).toString());
assertEquals("abc", StringUtils.defaultIfEmpty(new StringBuilder("abc"), new StringBuilder("NULL")).toString());
assertNull(StringUtils.defaultIfEmpty(new StringBuilder(""), null));
// Tests compatibility for the API return type
StringBuilder s = StringUtils.defaultIfEmpty(new StringBuilder("abc"), new StringBuilder("NULL"));
assertEquals("abc", s.toString());
}
public void testDefaultIfEmpty_StringBuffers() {
assertEquals("NULL", StringUtils.defaultIfEmpty(new StringBuffer(""), new StringBuffer("NULL")).toString());
assertEquals("abc", StringUtils.defaultIfEmpty(new StringBuffer("abc"), new StringBuffer("NULL")).toString());
assertNull(StringUtils.defaultIfEmpty(new StringBuffer(""), null));
// Tests compatibility for the API return type
StringBuffer s = StringUtils.defaultIfEmpty(new StringBuffer("abc"), new StringBuffer("NULL"));
assertEquals("abc", s.toString());
}
public void testDefaultIfEmpty_CharBuffers() {
assertEquals("NULL", StringUtils.defaultIfEmpty(CharBuffer.wrap(""), CharBuffer.wrap("NULL")).toString());
assertEquals("abc", StringUtils.defaultIfEmpty(CharBuffer.wrap("abc"), CharBuffer.wrap("NULL")).toString());
assertNull(StringUtils.defaultIfEmpty(CharBuffer.wrap(""), null));
// Tests compatibility for the API return type
CharBuffer s = StringUtils.defaultIfEmpty(CharBuffer.wrap("abc"), CharBuffer.wrap("NULL"));
assertEquals("abc", s.toString());
}
//-----------------------------------------------------------------------