Author: mbenson
Date: Fri Nov  9 16:42:18 2012
New Revision: 1407534

URL: http://svn.apache.org/viewvc?rev=1407534&view=rev
Log:
StrBuilder implements Builder; provide toStringBuilder as toStringBuffer

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

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/StrBuilder.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/StrBuilder.java?rev=1407534&r1=1407533&r2=1407534&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/StrBuilder.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/StrBuilder.java
 Fri Nov  9 16:42:18 2012
@@ -25,6 +25,7 @@ import java.util.List;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.lang3.builder.Builder;
 
 /**
  * Builds a string from constituent parts providing a more flexible and 
powerful API
@@ -71,7 +72,7 @@ import org.apache.commons.lang3.SystemUt
  * @since 2.2
  * @version $Id$
  */
-public class StrBuilder implements CharSequence, Appendable, Serializable {
+public class StrBuilder implements CharSequence, Appendable, Serializable, 
Builder<String> {
 
     /**
      * The extra capacity for new builders.
@@ -2661,6 +2662,27 @@ public class StrBuilder implements CharS
         return new StringBuffer(size).append(buffer, 0, size);
     }
 
+    /**
+     * Gets a StringBuilder version of the string builder, creating a
+     * new instance each time the method is called.
+     *
+     * @return the builder as a StringBuilder
+     * @since Apache Commons Lang 3.2
+     */
+    public StringBuilder toStringBuilder() {
+        return new StringBuilder(size).append(buffer, 0, size);
+    }
+
+    /**
+     * Implement the {@link Builder} interface.
+     * @return the builder as a String
+     * @since Apache Commons Lang 3.2
+     * @see #toString()
+     */
+    public String build() {
+        return toString();
+    }
+
     //-----------------------------------------------------------------------
     /**
      * Validates parameters defining a range of the builder.

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java?rev=1407534&r1=1407533&r2=1407534&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderAppendInsertTest.java
 Fri Nov  9 16:42:18 2012
@@ -916,6 +916,10 @@ public class StrBuilderAppendInsertTest 
         sb.clear();
         sb.appendAll(new Object[]{"foo", "bar", "baz"});
         assertEquals("foobarbaz", sb.toString());
+
+        sb.clear();
+        sb.appendAll("foo", "bar", "baz");
+        assertEquals("foobarbaz", sb.toString());
     }
 
     //-----------------------------------------------------------------------

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java?rev=1407534&r1=1407533&r2=1407534&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/StrBuilderTest.java
 Fri Nov  9 16:42:18 2012
@@ -1802,6 +1802,16 @@ public class StrBuilderTest {
 
     //-----------------------------------------------------------------------
     @Test
+    public void testToStringBuilder() {
+        StrBuilder sb = new StrBuilder();
+        assertEquals(new StringBuilder().toString(), 
sb.toStringBuilder().toString());
+        
+        sb.append("junit");
+        assertEquals(new StringBuilder("junit").toString(), 
sb.toStringBuilder().toString());
+    }
+
+    //-----------------------------------------------------------------------
+    @Test
     public void testLang294() {
         StrBuilder sb = new StrBuilder("\n%BLAH%\nDo more stuff\neven more 
stuff\n%BLAH%\n");
         sb.deleteAll("\n%BLAH%");
@@ -1839,4 +1849,10 @@ public class StrBuilderTest {
         assertEquals( "Failed to invoke appendFixedWidthPadLeft correctly", 
"**********", sb.toString());
     }
 
+    @Test
+    public void testAsBuilder() {
+        StrBuilder sb = new StrBuilder().appendAll("Lorem", " ", "ipsum", " ", 
"dolor");
+        assertEquals(sb.toString(), sb.build());
+    }
+
 }


Reply via email to