./src/share/classes/java/lang/StringBuilder.java

Print this page
rev 5910 : 6206780: (str) Forwarding append methods in String{Buffer,Builder} are inconsistent
Summary: update StringBuilder & StringBuffer to consistently handle forwarding to AbstractStringBuilder. Some additional cleanup (removal of refs to sub-classes from AbstractStringBuilder)
Reviewed-by: chegar,alanb

*** 122,153 **** public StringBuilder(CharSequence seq) { this(seq.length() + 16); append(seq); } public StringBuilder append(Object obj) { return append(String.valueOf(obj)); } public StringBuilder append(String str) { super.append(str); return this; } - // Appends the specified string builder to this sequence. - private StringBuilder append(StringBuilder sb) { - if (sb == null) - return append("null"); - int len = sb.length(); - int newcount = count + len; - if (newcount > value.length) - expandCapacity(newcount); - sb.getChars(0, len, value, count); - count = newcount; - return this; - } - /** * Appends the specified <tt>StringBuffer</tt> to this sequence. * <p> * The characters of the <tt>StringBuffer</tt> argument are appended, * in order, to this sequence, increasing the --- 122,142 ---- public StringBuilder(CharSequence seq) { this(seq.length() + 16); append(seq); } + @Override public StringBuilder append(Object obj) { return append(String.valueOf(obj)); } + @Override public StringBuilder append(String str) { super.append(str); return this; } /** * Appends the specified <tt>StringBuffer</tt> to this sequence. * <p> * The characters of the <tt>StringBuffer</tt> argument are appended, * in order, to this sequence, increasing the
*** 168,407 **** public StringBuilder append(StringBuffer sb) { super.append(sb); return this; } ! /** ! */ public StringBuilder append(CharSequence s) { ! if (s == null) ! s = "null"; ! if (s instanceof String) ! return this.append((String)s); ! if (s instanceof StringBuffer) ! return this.append((StringBuffer)s); ! if (s instanceof StringBuilder) ! return this.append((StringBuilder)s); ! return this.append(s, 0, s.length()); } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ public StringBuilder append(CharSequence s, int start, int end) { super.append(s, start, end); return this; } public StringBuilder append(char[] str) { super.append(str); return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ public StringBuilder append(char[] str, int offset, int len) { super.append(str, offset, len); return this; } public StringBuilder append(boolean b) { super.append(b); return this; } public StringBuilder append(char c) { super.append(c); return this; } public StringBuilder append(int i) { super.append(i); return this; } public StringBuilder append(long lng) { super.append(lng); return this; } public StringBuilder append(float f) { super.append(f); return this; } public StringBuilder append(double d) { super.append(d); return this; } /** * @since 1.5 */ public StringBuilder appendCodePoint(int codePoint) { super.appendCodePoint(codePoint); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder delete(int start, int end) { super.delete(start, end); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder deleteCharAt(int index) { super.deleteCharAt(index); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder replace(int start, int end, String str) { super.replace(start, end, str); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int index, char[] str, int offset, int len) { super.insert(index, str, offset, len); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, Object obj) { ! return insert(offset, String.valueOf(obj)); } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, String str) { super.insert(offset, str); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, char[] str) { super.insert(offset, str); return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int dstOffset, CharSequence s) { ! if (s == null) ! s = "null"; ! if (s instanceof String) ! return this.insert(dstOffset, (String)s); ! return this.insert(dstOffset, s, 0, s.length()); } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int dstOffset, CharSequence s, int start, int end) { super.insert(dstOffset, s, start, end); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, boolean b) { super.insert(offset, b); return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, char c) { super.insert(offset, c); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, int i) { ! return insert(offset, String.valueOf(i)); } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, long l) { ! return insert(offset, String.valueOf(l)); } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, float f) { ! return insert(offset, String.valueOf(f)); } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ public StringBuilder insert(int offset, double d) { ! return insert(offset, String.valueOf(d)); } /** * @throws NullPointerException {@inheritDoc} */ public int indexOf(String str) { ! return indexOf(str, 0); } /** * @throws NullPointerException {@inheritDoc} */ public int indexOf(String str, int fromIndex) { ! return String.indexOf(value, 0, count, ! str.toCharArray(), 0, str.length(), fromIndex); } /** * @throws NullPointerException {@inheritDoc} */ public int lastIndexOf(String str) { ! return lastIndexOf(str, count); } /** * @throws NullPointerException {@inheritDoc} */ public int lastIndexOf(String str, int fromIndex) { ! return String.lastIndexOf(value, 0, count, ! str.toCharArray(), 0, str.length(), fromIndex); } public StringBuilder reverse() { super.reverse(); return this; } public String toString() { // Create a copy, don't share the array return new String(value, 0, count); } --- 157,419 ---- public StringBuilder append(StringBuffer sb) { super.append(sb); return this; } ! @Override public StringBuilder append(CharSequence s) { ! super.append(s); ! return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder append(CharSequence s, int start, int end) { super.append(s, start, end); return this; } + @Override public StringBuilder append(char[] str) { super.append(str); return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder append(char[] str, int offset, int len) { super.append(str, offset, len); return this; } + @Override public StringBuilder append(boolean b) { super.append(b); return this; } + @Override public StringBuilder append(char c) { super.append(c); return this; } + @Override public StringBuilder append(int i) { super.append(i); return this; } + @Override public StringBuilder append(long lng) { super.append(lng); return this; } + @Override public StringBuilder append(float f) { super.append(f); return this; } + @Override public StringBuilder append(double d) { super.append(d); return this; } /** * @since 1.5 */ + @Override public StringBuilder appendCodePoint(int codePoint) { super.appendCodePoint(codePoint); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder delete(int start, int end) { super.delete(start, end); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder deleteCharAt(int index) { super.deleteCharAt(index); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder replace(int start, int end, String str) { super.replace(start, end, str); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int index, char[] str, int offset, int len) { super.insert(index, str, offset, len); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, Object obj) { ! super.insert(offset, obj); ! return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, String str) { super.insert(offset, str); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, char[] str) { super.insert(offset, str); return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int dstOffset, CharSequence s) { ! super.insert(dstOffset, s); ! return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int dstOffset, CharSequence s, int start, int end) { super.insert(dstOffset, s, start, end); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, boolean b) { super.insert(offset, b); return this; } /** * @throws IndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, char c) { super.insert(offset, c); return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, int i) { ! super.insert(offset, i); ! return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, long l) { ! super.insert(offset, l); ! return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, float f) { ! super.insert(offset, f); ! return this; } /** * @throws StringIndexOutOfBoundsException {@inheritDoc} */ + @Override public StringBuilder insert(int offset, double d) { ! super.insert(offset, d); ! return this; } /** * @throws NullPointerException {@inheritDoc} */ + @Override public int indexOf(String str) { ! return super.indexOf(str); } /** * @throws NullPointerException {@inheritDoc} */ + @Override public int indexOf(String str, int fromIndex) { ! return super.indexOf(str, fromIndex); } /** * @throws NullPointerException {@inheritDoc} */ + @Override public int lastIndexOf(String str) { ! return super.lastIndexOf(str); } /** * @throws NullPointerException {@inheritDoc} */ + @Override public int lastIndexOf(String str, int fromIndex) { ! return super.lastIndexOf(str, fromIndex); } + @Override public StringBuilder reverse() { super.reverse(); return this; } + @Override public String toString() { // Create a copy, don't share the array return new String(value, 0, count); }