You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2011/01/10 21:40:50 UTC

svn commit: r1057349 - in /commons/proper/lang/branches/LANG_2_X: RELEASE-NOTES.txt src/main/java/org/apache/commons/lang/text/StrBuilder.java src/site/changes/changes.xml src/test/java/org/apache/commons/lang/text/StrBuilderTest.java

Author: niallp
Date: Mon Jan 10 20:40:49 2011
New Revision: 1057349

URL: http://svn.apache.org/viewvc?rev=1057349&view=rev
Log:
LANG-302 Fix StrBuilder does not implement clone()

Modified:
    commons/proper/lang/branches/LANG_2_X/RELEASE-NOTES.txt
    commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrBuilder.java
    commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml
    commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java

Modified: commons/proper/lang/branches/LANG_2_X/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/RELEASE-NOTES.txt?rev=1057349&r1=1057348&r2=1057349&view=diff
==============================================================================
--- commons/proper/lang/branches/LANG_2_X/RELEASE-NOTES.txt (original)
+++ commons/proper/lang/branches/LANG_2_X/RELEASE-NOTES.txt Mon Jan 10 20:40:49 2011
@@ -27,6 +27,7 @@ IMPROVEMENTS IN 2.6
     * [LANG-632] - DateUtils: provide a Date to Calendar convenience method
     * [LANG-576] - ObjectUtils: add clone methods to ObjectUtils
     * [LANG-667] - ObjectUtils: add a Null-safe compare() method
+    * [LANG-302] - StrBuilder: implement clone() method
     * [LANG-640] - StringUtils: add a normalizeSpace() method
     * [LANG-614] - StringUtils: add endsWithAny() method
     * [LANG-655] - StringUtils: add defaultIfBlank() method

Modified: commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrBuilder.java?rev=1057349&r1=1057348&r2=1057349&view=diff
==============================================================================
--- commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrBuilder.java (original)
+++ commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrBuilder.java Mon Jan 10 20:40:49 2011
@@ -2577,6 +2577,20 @@ public class StrBuilder implements Clone
         return new StringBuffer(size).append(buffer, 0, size);
     }
 
+    /**
+     * Clone this object.
+     *
+     * @return a clone of this object
+     * @throws CloneNotSupportedException if clone is not supported
+     * @since 2.6
+     */
+    public Object clone() throws CloneNotSupportedException {
+        StrBuilder clone = (StrBuilder)super.clone();
+        clone.buffer = new char[buffer.length];
+        System.arraycopy(buffer, 0, clone.buffer, 0, buffer.length);
+        return clone;
+    }
+
     //-----------------------------------------------------------------------
     /**
      * Validates parameters defining a range of the builder.

Modified: commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml?rev=1057349&r1=1057348&r2=1057349&view=diff
==============================================================================
--- commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml (original)
+++ commons/proper/lang/branches/LANG_2_X/src/site/changes/changes.xml Mon Jan 10 20:40:49 2011
@@ -28,6 +28,7 @@
     <action type="add" issue="LANG-632">DateUtils: provide a Date to Calendar convenience method</action>
     <action type="add" issue="LANG-576">ObjectUtils: add clone methods to ObjectUtils</action>
     <action type="add" issue="LANG-667">ObjectUtils: add a Null-safe compare() method</action>
+    <action type="add" issue="LANG-302">StrBuilder: implement clone() method</action>
     <action type="add" issue="LANG-640">StringUtils: add a normalizeSpace() method</action>
     <action type="add" issue="LANG-614">StringUtils: add endsWithAny() method</action>
     <action type="add" issue="LANG-655">StringUtils: add defaultIfBlank() method</action>

Modified: commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java?rev=1057349&r1=1057348&r2=1057349&view=diff
==============================================================================
--- commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java (original)
+++ commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrBuilderTest.java Mon Jan 10 20:40:49 2011
@@ -245,6 +245,33 @@ public class StrBuilderTest extends Test
     }
 
     //-----------------------------------------------------------------------
+    public void testClone() throws Exception {
+        StrBuilder sb = new StrBuilder();
+        sb.setNewLineText("NEWLINE");
+        sb.setNullText("NULLVALUE");
+        sb.append("abc");
+        assertEquals("before", "abc", sb.toString());
+
+        // Clone
+        StrBuilder clone = (StrBuilder)sb.clone();
+        assertEquals("capacity", sb.capacity(), clone.capacity());
+        assertEquals("size", sb.size(), clone.size());
+        assertEquals("toString", sb.toString(), clone.toString());
+
+        // Modify Original
+        sb.append("def");
+        assertEquals("original-1", "abcdef", sb.toString());
+        assertEquals("different",  "abc", clone.toString());
+
+        // Modify Clone
+        clone.append((String)null);
+        assertEquals("append null", "abcNULLVALUE", clone.toString());
+        clone.appendNewLine();
+        assertEquals("append newline", "abcNULLVALUENEWLINE", clone.toString());
+        assertEquals("original-2",  "abcdef", sb.toString());
+    }
+
+    //-----------------------------------------------------------------------
     public void testCapacity() {
         StrBuilder sb = new StrBuilder();
         assertEquals(sb.buffer.length, sb.capacity());