More of the same.  This also adds a few additional
constructors to CPStringBuilder to speed up creation
from a StringBuffer or StringBuilder, and makes a few
fields final.

ChangeLog:

2008-05-05  Andrew John Hughes  <[EMAIL PROTECTED]>

        PR classpath/21869
        * gnu/java/lang/CPStringBuilder.java:
        (CPStringBuilder(StringBuffer)): Added.
        (CPStringBuulder(StringBuilder)): Likewise.
        * gnu/java/text/AttributedFormatBuffer.java:
        Swap use of StringBuffer for CPStringBuilder,
        and make fields final.
        * gnu/java/text/StringFormatBuffer.java:
        Make fields final.
        * java/text/SimpleDateFormat.java:
        Add thread safety warning.

-- 
Andrew :)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8
Index: gnu/java/lang/CPStringBuilder.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/lang/CPStringBuilder.java,v
retrieving revision 1.4
diff -u -r1.4 CPStringBuilder.java
--- gnu/java/lang/CPStringBuilder.java  17 Mar 2008 03:04:17 -0000      1.4
+++ gnu/java/lang/CPStringBuilder.java  5 May 2008 18:32:38 -0000
@@ -82,7 +82,7 @@
   }
 
   /**
-   * Create an empty <code>StringBuffer</code> with the specified initial
+   * Create an empty <code>CPStringBuilder</code> with the specified initial
    * capacity.
    *
    * @param capacity the initial capacity
@@ -94,7 +94,7 @@
   }
 
   /**
-   * Create a new <code>StringBuffer</code> with the characters in the
+   * Create a new <code>CPStringBuilder</code> with the characters in the
    * specified <code>String</code>. Initial capacity will be the size of the
    * String plus 16.
    *
@@ -109,7 +109,37 @@
   }
 
   /**
-   * Create a new <code>StringBuffer</code> with the characters in the
+   * Create a new <code>CPStringBuilder</code> with the characters in the
+   * specified <code>StringBuffer</code>. Initial capacity will be the size of 
the
+   * String plus 16.
+   *
+   * @param str the <code>String</code> to convert
+   * @throws NullPointerException if str is null
+   */
+  public CPStringBuilder(StringBuffer str)
+  {
+    count = str.length();
+    value = new char[count + DEFAULT_CAPACITY];
+    str.getChars(0, count, value, 0);
+  }
+
+  /**
+   * Create a new <code>CPStringBuilder</code> with the characters in the
+   * specified <code>StringBuilder</code>. Initial capacity will be the size 
of the
+   * String plus 16.
+   *
+   * @param str the <code>String</code> to convert
+   * @throws NullPointerException if str is null
+   */
+  public CPStringBuilder(StringBuilder str)
+  {
+    count = str.length();
+    value = new char[count + DEFAULT_CAPACITY];
+    str.getChars(0, count, value, 0);
+  }
+
+  /**
+   * Create a new <code>CPStringBuilder</code> with the characters in the
    * specified <code>CharSequence</code>. Initial capacity will be the
    * length of the sequence plus 16; if the sequence reports a length
    * less than or equal to 0, then the initial capacity will be 16.
@@ -128,7 +158,7 @@
   }
 
   /**
-   * Increase the capacity of this <code>StringBuffer</code>. This will
+   * Increase the capacity of this <code>CPStringBuilder</code>. This will
    * ensure that an expensive growing operation will not occur until
    * <code>minimumCapacity</code> is reached. The buffer is grown to the
    * larger of <code>minimumCapacity</code> and
Index: gnu/java/text/AttributedFormatBuffer.java
===================================================================
RCS file: 
/sources/classpath/classpath/gnu/java/text/AttributedFormatBuffer.java,v
retrieving revision 1.3
diff -u -r1.3 AttributedFormatBuffer.java
--- gnu/java/text/AttributedFormatBuffer.java   7 Jan 2008 21:11:21 -0000       
1.3
+++ gnu/java/text/AttributedFormatBuffer.java   5 May 2008 18:32:39 -0000
@@ -36,21 +36,25 @@
 exception statement from your version. */
 package gnu.java.text;
 
+import gnu.java.lang.CPStringBuilder;
+
 import java.text.AttributedCharacterIterator;
 import java.util.ArrayList;
 import java.util.HashMap;
 
 /**
  * This class is an implementation of a FormatBuffer with attributes.
- * 
+ * Note that this class is not thread-safe; external synchronisation
+ * should be used if an instance is to be accessed from multiple threads.
+ *
  * @author Guilhem Lavaux <[EMAIL PROTECTED]>
  * @date April 10, 2004
  */
 public class AttributedFormatBuffer implements FormatBuffer
 {
-  private StringBuffer buffer;
-  private ArrayList ranges;
-  private ArrayList attributes;
+  private final CPStringBuilder buffer;
+  private final ArrayList ranges;
+  private final ArrayList attributes;
   private int[] a_ranges;
   private HashMap[] a_attributes; 
   private int startingRange;
@@ -60,9 +64,9 @@
    * This constructor accepts a StringBuffer. If the buffer contains
    * already some characters they will not be attributed. 
    */
-  public AttributedFormatBuffer(StringBuffer buffer)
+  public AttributedFormatBuffer(CPStringBuilder buffer)
   {
-    this.buffer = buffer;
+    this.buffer = new CPStringBuilder(buffer);
     this.ranges = new ArrayList();
     this.attributes = new ArrayList();
     this.defaultAttr = null;
@@ -77,7 +81,7 @@
 
   public AttributedFormatBuffer(int prebuffer)
   {
-    this(new StringBuffer(prebuffer));
+    this(new CPStringBuilder(prebuffer));
   }
 
   public AttributedFormatBuffer()
@@ -214,12 +218,12 @@
   }
 
   /**
-   * This method returns the internal StringBuffer describing
+   * This method returns the internal CPStringBuilder describing
    * the attributed string.
    *
-   * @return An instance of StringBuffer which contains the string.
+   * @return An instance of CPStringBuilder which contains the string.
    */
-  public StringBuffer getBuffer()
+  public CPStringBuilder getBuffer()
   {
     return buffer;
   }
Index: gnu/java/text/StringFormatBuffer.java
===================================================================
RCS file: /sources/classpath/classpath/gnu/java/text/StringFormatBuffer.java,v
retrieving revision 1.3
diff -u -r1.3 StringFormatBuffer.java
--- gnu/java/text/StringFormatBuffer.java       7 May 2006 19:36:27 -0000       
1.3
+++ gnu/java/text/StringFormatBuffer.java       5 May 2008 18:32:39 -0000
@@ -47,7 +47,7 @@
  */
 public class StringFormatBuffer implements FormatBuffer
 {
-  private StringBuffer buffer;
+  private final StringBuffer buffer;
   private AttributedCharacterIterator.Attribute defaultAttr;
 
   public StringFormatBuffer(int prebuffer)
Index: java/text/SimpleDateFormat.java
===================================================================
RCS file: /sources/classpath/classpath/java/text/SimpleDateFormat.java,v
retrieving revision 1.59
diff -u -r1.59 SimpleDateFormat.java
--- java/text/SimpleDateFormat.java     24 Mar 2008 15:01:17 -0000      1.59
+++ java/text/SimpleDateFormat.java     5 May 2008 18:32:43 -0000
@@ -63,6 +63,8 @@
 /**
  * SimpleDateFormat provides convenient methods for parsing and formatting
  * dates using Gregorian calendars (see java.util.GregorianCalendar). 
+ * This class is not thread-safe; external synchronisation should be applied
+ * if an instance is to be accessed from multiple threads.
  */
 public class SimpleDateFormat extends DateFormat 
 {

Reply via email to