You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2005/08/20 12:56:52 UTC

svn commit: r234018 - in /jakarta/commons/proper/lang/trunk/src: java/org/apache/commons/lang/text/StrBuilder.java test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java

Author: scolebourne
Date: Sat Aug 20 03:56:46 2005
New Revision: 234018

URL: http://svn.apache.org/viewcvs?rev=234018&view=rev
Log:
Fix null handling behaviour on char[] methods

Modified:
    jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
    jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java

Modified: jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java?rev=234018&r1=234017&r2=234018&view=diff
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java (original)
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java Sat Aug 20 03:56:46 2005
@@ -594,17 +594,14 @@
 
     /**
      * Appends a char array to the string builder.
-     * Appending null has no effect.
-     * <p>
-     * Note: This method treats a null char array as an empty char array,
-     * unlike StringBuffer or String.
+     * Appending null will call {@link #appendNull()}.
      *
      * @param chars  the char array to append
      * @return this, to enable chaining
      */
     public StrBuilder append(char[] chars) {
         if (chars == null) {
-            return this;
+            return appendNull();
         }
         int strLen = chars.length;
         if (strLen > 0) {
@@ -618,10 +615,7 @@
 
     /**
      * Appends a char array to the string builder.
-     * Appending null has no effect.
-     * <p>
-     * Note: This method treats a null char array as an empty char array,
-     * unlike StringBuffer or String.
+     * Appending null will call {@link #appendNull()}.
      *
      * @param chars  the char array to append
      * @param startIndex  the start index, inclusive, must be valid
@@ -630,7 +624,7 @@
      */
     public StrBuilder append(char[] chars, int startIndex, int length) {
         if (chars == null) {
-            return this;
+            return appendNull();
         }
         if (startIndex < 0 || startIndex > chars.length) {
             throw new StringIndexOutOfBoundsException("Invalid startIndex: " + length);
@@ -945,10 +939,7 @@
 
     /**
      * Inserts the character array into this builder.
-     * Inserting null has no effect.
-     * <p>
-     * Note: This method treats a null char array as an empty char array,
-     * unlike StringBuffer or String.
+     * Inserting null will use the stored null text value.
      *
      * @param index  the index to add at, must be valid
      * @param chars  the char array to insert
@@ -958,7 +949,7 @@
     public StrBuilder insert(int index, char chars[]) {
         validateIndex(index);
         if (chars == null) {
-            return this;
+            return insert(index, nullText);
         }
         int len = chars.length;
         if (len > 0) {
@@ -972,10 +963,7 @@
 
     /**
      * Inserts part of the character array into this builder.
-     * Inserting null has no effect.
-     * <p>
-     * Note: This method treats a null char array as an empty char array,
-     * unlike StringBuffer or String.
+     * Inserting null will use the stored null text value.
      *
      * @param index  the index to add at, must be valid
      * @param chars  the char array to insert
@@ -987,7 +975,7 @@
     public StrBuilder insert(int index, char chars[], int offset, int length) {
         validateIndex(index);
         if (chars == null) {
-            return this;
+            return insert(index, nullText);
         }
         if (offset < 0 || offset > chars.length) {
             throw new StringIndexOutOfBoundsException("Invalid offset: " + offset);

Modified: jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java?rev=234018&r1=234017&r2=234018&view=diff
==============================================================================
--- jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java (original)
+++ jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java Sat Aug 20 03:56:46 2005
@@ -138,13 +138,13 @@
     //-----------------------------------------------------------------------
     public void testAppend_String() {
         StrBuilder sb = new StrBuilder();
+        sb.setNullText("NULL").append((String) null);
+        assertEquals("NULL", sb.toString());
 
+        sb = new StrBuilder();
         sb.append("foo");
         assertEquals("foo", sb.toString());
 
-        sb.append((String) null);
-        assertEquals("foo", sb.toString());
-
         sb.append("");
         assertEquals("foo", sb.toString());
 
@@ -155,11 +155,11 @@
     //-----------------------------------------------------------------------
     public void testAppend_String_int_int() {
         StrBuilder sb = new StrBuilder();
-        
-        sb.append("foo", 0, 3);
-        assertEquals("foo", sb.toString());
+        sb.setNullText("NULL").append((String) null, 0, 1);
+        assertEquals("NULL", sb.toString());
 
-        sb.append((String) null, 0, 1);
+        sb = new StrBuilder();
+        sb.append("foo", 0, 3);
         assertEquals("foo", sb.toString());
 
         try {
@@ -214,13 +214,13 @@
     //-----------------------------------------------------------------------
     public void testAppend_StringBuffer() {
         StrBuilder sb = new StrBuilder();
+        sb.setNullText("NULL").append((StringBuffer) null);
+        assertEquals("NULL", sb.toString());
 
+        sb = new StrBuilder();
         sb.append(new StringBuffer("foo"));
         assertEquals("foo", sb.toString());
 
-        sb.append((StringBuffer) null);
-        assertEquals("foo", sb.toString());
-
         sb.append(new StringBuffer(""));
         assertEquals("foo", sb.toString());
 
@@ -231,11 +231,11 @@
     //-----------------------------------------------------------------------
     public void testAppend_StringBuffer_int_int() {
         StrBuilder sb = new StrBuilder();
-        
-        sb.append(new StringBuffer("foo"), 0, 3);
-        assertEquals("foo", sb.toString());
+        sb.setNullText("NULL").append((StringBuffer) null, 0, 1);
+        assertEquals("NULL", sb.toString());
 
-        sb.append((StringBuffer) null, 0, 1);
+        sb = new StrBuilder();
+        sb.append(new StringBuffer("foo"), 0, 3);
         assertEquals("foo", sb.toString());
 
         try {
@@ -290,13 +290,13 @@
     //-----------------------------------------------------------------------
     public void testAppend_StrBuilder() {
         StrBuilder sb = new StrBuilder();
+        sb.setNullText("NULL").append((StrBuilder) null);
+        assertEquals("NULL", sb.toString());
 
+        sb = new StrBuilder();
         sb.append(new StrBuilder("foo"));
         assertEquals("foo", sb.toString());
 
-        sb.append((StrBuilder) null);
-        assertEquals("foo", sb.toString());
-
         sb.append(new StrBuilder(""));
         assertEquals("foo", sb.toString());
 
@@ -307,11 +307,11 @@
     //-----------------------------------------------------------------------
     public void testAppend_StrBuilder_int_int() {
         StrBuilder sb = new StrBuilder();
-        
-        sb.append(new StrBuilder("foo"), 0, 3);
-        assertEquals("foo", sb.toString());
+        sb.setNullText("NULL").append((StrBuilder) null, 0, 1);
+        assertEquals("NULL", sb.toString());
 
-        sb.append((StrBuilder) null, 0, 1);
+        sb = new StrBuilder();
+        sb.append(new StrBuilder("foo"), 0, 3);
         assertEquals("foo", sb.toString());
 
         try {
@@ -366,10 +366,10 @@
     //-----------------------------------------------------------------------
     public void testAppend_CharArray() {
         StrBuilder sb = new StrBuilder();
-        
-        sb.append((char[]) null);
-        assertEquals("", sb.toString());
+        sb.setNullText("NULL").append((char[]) null);
+        assertEquals("NULL", sb.toString());
 
+        sb = new StrBuilder();
         sb.append(new char[0]);
         assertEquals("", sb.toString());
 
@@ -380,11 +380,11 @@
     //-----------------------------------------------------------------------
     public void testAppend_CharArray_int_int() {
         StrBuilder sb = new StrBuilder();
-        
-        sb.append(new char[]{'f', 'o', 'o'}, 0, 3);
-        assertEquals("foo", sb.toString());
+        sb.setNullText("NULL").append((char[]) null, 0, 1);
+        assertEquals("NULL", sb.toString());
 
-        sb.append((char[]) null, 0, 1);
+        sb = new StrBuilder();
+        sb.append(new char[]{'f', 'o', 'o'}, 0, 3);
         assertEquals("foo", sb.toString());
 
         try {
@@ -1025,6 +1025,12 @@
 
         sb.insert(0, "foo");
         assertEquals("foonullbarbaz", sb.toString());
+
+        sb.insert(0, (char[]) null);
+        assertEquals("nullfoonullbarbaz", sb.toString());
+
+        sb.insert(0, (char[]) null, 0, 0);
+        assertEquals("nullnullfoonullbarbaz", sb.toString());
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org