commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ggreg...@apache.org
Subject svn commit: r922904 - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/CharSequenceUtils.java main/java/org/apache/commons/lang3/StringUtils.java test/java/org/apache/commons/lang3/StringUtilsTest.java
Date Sun, 14 Mar 2010 17:33:23 GMT
Author: ggregory
Date: Sun Mar 14 17:33:23 2010
New Revision: 922904

URL: http://svn.apache.org/viewvc?rev=922904&view=rev
Log:
Fix defaultIsEmpty typing.

Modified:
    commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSequenceUtils.java
    commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
    commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java

Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSequenceUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSequenceUtils.java?rev=922904&r1=922903&r2=922904&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSequenceUtils.java
(original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSequenceUtils.java
Sun Mar 14 17:33:23 2010
@@ -37,27 +37,32 @@ public class CharSequenceUtils {
 		return cs == null ? 0 : cs.length();
 	}
 
-    /**
-     * <p>Reverses a CharSequence as per {@link StringBuilder#reverse()}.</p>
-     *
-     * <p>A <code>null</code> CharSequence returns <code>null</code>.</p>
-     *
-     * <pre>
-     * CharSequenceUtils.reverse(null) = null
-     * CharSequenceUtils.reverse("").toString() = ""
-     * CharSequenceUtils.reverse("bat").toString() = "tab"
-     * </pre>
-     *
-     * @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) {
-        if (str == null) {
-            return null;
-        }
-        return new StringBuilder(str).reverse();
-    }
-    
+	/**
+	 * <p>
+	 * Reverses a CharSequence as per {@link StringBuilder#reverse()}.
+	 * </p>
+	 * 
+	 * <p>
+	 * A <code>null</code> CharSequence returns <code>null</code>.
+	 * </p>
+	 * 
+	 * <pre>
+	 * CharSequenceUtils.reverse(null) = null
+	 * CharSequenceUtils.reverse("").toString() = ""
+	 * CharSequenceUtils.reverse("bat").toString() = "tab"
+	 * </pre>
+	 * 
+	 * @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) {
+		if (str == null) {
+			return null;
+		}
+		return new StringBuilder(str).reverse();
+	}
+
 	/**
 	 * Returns a new <code>CharSequence</code> that is a subsequence of this
 	 * sequence starting with the <code>char</code> value at the specified
@@ -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;
+	}
 }

Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java?rev=922904&r1=922903&r2=922904&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java Sun
Mar 14 17:33:23 2010
@@ -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;
     }
 

Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java?rev=922904&r1=922903&r2=922904&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
(original)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
Sun Mar 14 17:33:23 2010
@@ -1416,24 +1416,36 @@ public class StringUtilsTest extends Tes
         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());
     }
 
     //-----------------------------------------------------------------------



Mime
View raw message