diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java index e889038a05d..248cde795f8 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java @@ -463,7 +463,7 @@ public final class Signature { public static final int WILDCARD_TYPE_SIGNATURE = 5; // .d> --> > -private static void appendArgumentSimpleNames(char[] name, int start, int end, StringBuffer buffer) { +private static void appendArgumentSimpleNames(char[] name, int start, int end, StringBuilder buffer) { buffer.append('<'); int depth = 0; int argumentStart = -1; @@ -510,7 +510,7 @@ private static void appendArgumentSimpleNames(char[] name, int start, int end, S * @exception IllegalArgumentException if this is not an array type signature * @see Util#scanArrayTypeSignature(char[], int) */ -private static int appendArrayTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendArrayTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { return appendArrayTypeSignature(string, start, fullyQualifyTypeNames, buffer, false); } @@ -529,7 +529,7 @@ private static int appendArrayTypeSignature(char[] string, int start, boolean fu * @exception IllegalArgumentException if this is not an array type signature * @see Util#scanArrayTypeSignature(char[], int) */ -private static int appendArrayTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer, boolean isVarArgs) { +private static int appendArrayTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer, boolean isVarArgs) { int length = string.length; // need a minimum 2 char if (start >= length - 1) { @@ -576,7 +576,7 @@ private static int appendArrayTypeSignature(char[] string, int start, boolean fu * @exception IllegalArgumentException if this is not an array type signature * @see Util#scanArrayTypeSignature(char[], int) */ -private static int appendCaptureTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendCaptureTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { // need a minimum 2 char if (start >= string.length - 1) { throw newIllegalArgumentException(string, start); @@ -602,7 +602,7 @@ private static int appendCaptureTypeSignature(char[] string, int start, boolean * @exception IllegalArgumentException if this is not a class type signature * @see Util#scanClassTypeSignature(char[], int) */ -private static int appendClassTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendClassTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { // need a minimum 3 chars "Lx;" if (start >= string.length - 2) { throw newIllegalArgumentException(string, start); @@ -695,7 +695,7 @@ private static int appendClassTypeSignature(char[] string, int start, boolean fu * @exception IllegalArgumentException if this is not an array type signature * @see Util#scanArrayTypeSignature(char[], int) */ -private static int appendIntersectionTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendIntersectionTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { // need a minimum 2 char if (start >= string.length - 1) { throw newIllegalArgumentException(string, start); @@ -723,7 +723,7 @@ private static int appendIntersectionTypeSignature(char[] string, int start, boo } return start; } -private static void appendSimpleName(char[] name, int start, int end, StringBuffer buffer) { +private static void appendSimpleName(char[] name, int start, int end, StringBuilder buffer) { int lastDot = -1, lastGenericStart = -1, lastGenericEnd = -1; int depth = 0; if (name[start] == '?') { // wildcard @@ -792,7 +792,7 @@ private static void appendSimpleName(char[] name, int start, int end, StringBuff * @exception IllegalArgumentException if this is not a type argument signature * @see Util#scanTypeArgumentSignature(char[], int) */ -private static int appendTypeArgumentSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendTypeArgumentSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { // need a minimum 1 char if (start >= string.length) { throw newIllegalArgumentException(string, start); @@ -828,7 +828,7 @@ private static int appendTypeArgumentSignature(char[] string, int start, boolean * signatures * @see Util#scanTypeArgumentSignatures(char[], int) */ -private static int appendTypeArgumentSignatures(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendTypeArgumentSignatures(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { // need a minimum 2 char "<>" if (start >= string.length - 1) { throw newIllegalArgumentException(string, start); @@ -871,7 +871,7 @@ private static int appendTypeArgumentSignatures(char[] string, int start, boolea * @exception IllegalArgumentException if this is not a type signature * @see Util#scanTypeSignature(char[], int) */ -private static int appendTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer) { +private static int appendTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer) { return appendTypeSignature(string, start, fullyQualifyTypeNames, buffer, false); } @@ -892,7 +892,7 @@ private static int appendTypeSignature(char[] string, int start, boolean fullyQu * and the type is not an array type signature. * @see Util#scanTypeSignature(char[], int) */ -private static int appendTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuffer buffer, boolean isVarArgs) { +private static int appendTypeSignature(char[] string, int start, boolean fullyQualifyTypeNames, StringBuilder buffer, boolean isVarArgs) { // need a minimum 1 char if (start >= string.length) { throw newIllegalArgumentException(string, start); @@ -1091,7 +1091,7 @@ public static char[] createCharArrayTypeSignature(char[] typeName, boolean isRes if (typeName == null) throw new IllegalArgumentException("null"); //$NON-NLS-1$ int length = typeName.length; if (length == 0) throw new IllegalArgumentException(String.valueOf(typeName)); - StringBuffer buffer = new StringBuffer(5); + StringBuilder buffer = new StringBuilder(5); int pos = encodeTypeSignature(typeName, 0, isResolved, length, buffer); pos = consumeWhitespace(typeName, pos, length); if (pos < length) throw new IllegalArgumentException(String.valueOf(typeName)); @@ -1110,7 +1110,7 @@ public static char[] createCharArrayTypeSignature(char[] typeName, boolean isRes * @since 3.7.1 */ public static String createIntersectionTypeSignature(char[][] typeSignatures) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append(Signature.C_INTERSECTION); for (int i = 0, max = typeSignatures.length; i < max; i++) { if (i > 0) { @@ -1130,7 +1130,7 @@ public static String createIntersectionTypeSignature(char[][] typeSignatures) { * @since 3.7.1 */ private static String createUnionTypeSignature(char[][] typeSignatures) { - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append(Signature.C_UNION); for (int i = 0, max = typeSignatures.length; i < max; i++) { if (i > 0) { @@ -1320,7 +1320,7 @@ public static String createTypeSignature(String typeName, boolean isResolved) { return createTypeSignature(typeName == null ? null : typeName.toCharArray(), isResolved); } -private static int encodeArrayDimension(char[] typeName, int pos, int length, StringBuffer buffer) { +private static int encodeArrayDimension(char[] typeName, int pos, int length, StringBuilder buffer) { int checkPos; while (pos < length && (checkPos = checkNextChar(typeName, '[', pos, length, true)) > 0) { pos = checkNextChar(typeName, ']', checkPos, length, false); @@ -1329,7 +1329,7 @@ private static int encodeArrayDimension(char[] typeName, int pos, int length, St return pos; } -private static int encodeQualifiedName(char[] typeName, int pos, int length, StringBuffer buffer) { +private static int encodeQualifiedName(char[] typeName, int pos, int length, StringBuilder buffer) { int count = 0; char lastAppendedChar = 0; nameLoop: while (pos < length) { @@ -1374,7 +1374,7 @@ private static int encodeQualifiedName(char[] typeName, int pos, int length, Str return pos; } -private static int encodeTypeSignature(char[] typeName, int start, boolean isResolved, int length, StringBuffer buffer) { +private static int encodeTypeSignature(char[] typeName, int start, boolean isResolved, int length, StringBuilder buffer) { int pos = start; pos = consumeWhitespace(typeName, pos, length); if (pos >= length) throw new IllegalArgumentException(String.valueOf(typeName)); @@ -2069,7 +2069,7 @@ public static char[] getSimpleName(char[] name) { } return CharOperation.subarray(name, lastDot + 1, length); } - StringBuffer buffer = new StringBuffer(10); + StringBuilder buffer = new StringBuilder(10); int nameStart = lastDot < 0 ? 0 : lastDot+1; buffer.append(name, nameStart, lastGenericStart - nameStart); appendArgumentSimpleNames(name, lastGenericStart, lastGenericEnd, buffer); @@ -2124,7 +2124,7 @@ public static String getSimpleName(String name) { } return name.substring(lastDot + 1, length); } - StringBuffer buffer = new StringBuffer(10); + StringBuilder buffer = new StringBuilder(10); char[] nameChars = name.toCharArray(); int nameStart = lastDot < 0 ? 0 : lastDot+1; buffer.append(nameChars, nameStart, lastGenericStart - nameStart); @@ -2749,7 +2749,7 @@ public static char[] toCharArray(char[] signature) throws IllegalArgumentExcepti return toCharArray(signature, CharOperation.NO_CHAR, null, true, true); } - StringBuffer buffer = new StringBuffer(signature.length + 10); + StringBuilder buffer = new StringBuilder(signature.length + 10); appendTypeSignature(signature, 0, true, buffer); char[] result = new char[buffer.length()]; buffer.getChars(0, buffer.length(), result, 0); @@ -2818,7 +2818,7 @@ public static char[] toCharArray(char[] methodSignature, char[] methodName, char throw new IllegalArgumentException(String.valueOf(methodSignature)); } - StringBuffer buffer = new StringBuffer(methodSignature.length + 10); + StringBuilder buffer = new StringBuilder(methodSignature.length + 10); // return type if (includeReturnType) { diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ExternalAnnotationUtil.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ExternalAnnotationUtil.java index 764c7f91e8b..2a1c6c35872 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ExternalAnnotationUtil.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/ExternalAnnotationUtil.java @@ -360,7 +360,7 @@ private static void annotateMember(String typeName, IFile file, String selector, // assemble full annotatedSignature (don't bother merging since no previous signature exists): annotatedSignature = updateSignature(originalSignature, annotatedSignature, updatePosition, MergeStrategy.REPLACE_SIGNATURE); - StringBuffer newContent= new StringBuffer(); + StringBuilder newContent= new StringBuilder(); // header: newContent.append(ExternalAnnotationProvider.CLASS_PREFIX); newContent.append(typeName).append('\n'); @@ -374,7 +374,7 @@ private static void annotateMember(String typeName, IFile file, String selector, createNewFile(file, newContent.toString(), monitor); } else { BufferedReader reader = new BufferedReader(new InputStreamReader(file.getContents())); - StringBuffer newContent = new StringBuffer(); + StringBuilder newContent = new StringBuilder(); try { // type references get the previous signature from the existing type binding: String previousSignature = originalSignature; @@ -410,8 +410,7 @@ private static void annotateMember(String typeName, IFile file, String selector, continue; } if (relation == 0) { - StringBuffer pending = new StringBuffer(line).append('\n'); - pending.append(line = reader.readLine()); + String pending = line + '\n' + (line = reader.readLine()); if (line == null) { break; // found only the selector at EOF, append right here, ignoring 'pending' } @@ -419,7 +418,7 @@ private static void annotateMember(String typeName, IFile file, String selector, relation = line.trim().compareTo(originalSignature); if (relation > 0) { // past the insertion point // add new entry (below) - line = pending.toString(); // push back + line = pending; // push back break; } newContent.append(pending).append('\n'); @@ -464,7 +463,7 @@ private static void annotateMember(String typeName, IFile file, String selector, } private static String updateSignature(String originalSignature, String annotatedSignature, int updatePosition, MergeStrategy mergeStrategy) { - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); String signatureToReplace; String postfix = null; if (updatePosition <= POSITION_TYPE_PARAMETER) { @@ -538,7 +537,7 @@ private static String insertAt(String signature, int position, char annotation, * Update 'oldType' with annotations from 'newType' guided by 'mergeStrategy'. * The result is written into 'buf' as we go. */ - private static boolean updateType(StringBuffer buf, char[] oldType, char[] newType, MergeStrategy mergeStrategy) { + private static boolean updateType(StringBuilder buf, char[] oldType, char[] newType, MergeStrategy mergeStrategy) { if (mergeStrategy == MergeStrategy.REPLACE_SIGNATURE) { buf.append(newType); return false; @@ -584,7 +583,7 @@ private static boolean updateType(StringBuffer buf, char[] oldType, char[] newTy * similar to updateType() but for type parameters, syntax: * [Annot] Identifier ClassBound {InterfaceBound} */ - private static boolean updateTypeParameter(StringBuffer buf, char[] oldType, char[] newType, MergeStrategy mergeStrategy) { + private static boolean updateTypeParameter(StringBuilder buf, char[] oldType, char[] newType, MergeStrategy mergeStrategy) { if (mergeStrategy == MergeStrategy.REPLACE_SIGNATURE) { buf.append(newType); return false; @@ -641,7 +640,7 @@ private static boolean updateTypeParameter(StringBuffer buf, char[] oldType, cha * If yes, print it into 'buf' and answer true. * If no, if 'force' raise an exception, else quietly answer false without updating 'buf'. */ - private static boolean match(StringBuffer buf, SignatureWrapper sig1, SignatureWrapper sig2, char expected, boolean force) { + private static boolean match(StringBuilder buf, SignatureWrapper sig1, SignatureWrapper sig2, char expected, boolean force) { boolean match1 = sig1.signature[sig1.start] == expected; boolean match2 = sig2.signature[sig2.start] == expected; if (match1 != match2) { @@ -665,7 +664,7 @@ private static boolean match(StringBuffer buf, SignatureWrapper sig1, SignatureW * If a current char of 'oldS' and/or 'newS' represents a null annotation, insert it into 'buf' guided by 'mergeStrategy'. * If the new char is NO_ANNOTATION and strategy is OVERWRITE_ANNOTATIONS, silently skip over any null annotations in 'oldS'. */ - private static void mergeAnnotation(StringBuffer buf, SignatureWrapper oldS, SignatureWrapper newS, MergeStrategy mergeStrategy) { + private static void mergeAnnotation(StringBuilder buf, SignatureWrapper oldS, SignatureWrapper newS, MergeStrategy mergeStrategy) { // if atEnd use a char that's different from NULLABLE, NONNULL and NO_ANNOTATION: char oldAnn = !oldS.atEnd() ? oldS.signature[oldS.start] : '\0'; char newAnn = !newS.atEnd() ? newS.signature[newS.start] : '\0'; @@ -710,7 +709,7 @@ private static void mergeAnnotation(StringBuffer buf, SignatureWrapper oldS, Sig * - nextLines (optionally, may be null) * - the still unconsumed content of tailReader */ - private static void writeFile(IFile annotationFile, StringBuffer head, String annotatedSignature, + private static void writeFile(IFile annotationFile, StringBuilder head, String annotatedSignature, String nextLines, BufferedReader tailReader, IProgressMonitor monitor) throws CoreException, IOException { @@ -802,9 +801,8 @@ public static String getAnnotatedSignature(String typeName, IFile file, String s public static String[] annotateType(String originalSignature, String annotatedType, MergeStrategy mergeStrategy) { String[] result = new String[4]; // prefix, orig, replacement, postfix - StringBuffer buf; result[0] = ""; //$NON-NLS-1$ - buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); result[1] = originalSignature; updateType(buf, originalSignature.toCharArray(), annotatedType.toCharArray(), mergeStrategy); result[2] = buf.toString(); @@ -829,11 +827,10 @@ public static String[] annotateType(String originalSignature, String annotatedTy public static String[] annotateReturnType(String originalSignature, String annotatedType, MergeStrategy mergeStrategy) { String[] result = new String[4]; // prefix, orig, replacement, postfix - StringBuffer buf; assert originalSignature.charAt(0) == '(' || originalSignature.charAt(0) == '<': "signature must start with '(' or '<'"; //$NON-NLS-1$ int close = originalSignature.indexOf(')'); result[0] = originalSignature.substring(0, close+1); - buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); result[1] = originalSignature.substring(close+1); updateType(buf, result[1].toCharArray(), annotatedType.toCharArray(), mergeStrategy); result[2] = buf.toString(); @@ -860,7 +857,6 @@ public static String[] annotateReturnType(String originalSignature, String annot public static String[] annotateParameterType(String originalSignature, String annotatedType, int paramIdx, MergeStrategy mergeStrategy) { String[] result = new String[4]; // prefix, orig, replacement, postfix - StringBuffer buf; SignatureWrapper wrapper = new SignatureWrapper(originalSignature.toCharArray(), true, true); // may already contain annotations wrapper.start = CharOperation.indexOf('(', wrapper.signature) + 1; // possibly skip type parameters for (int i = 0; i < paramIdx; i++) @@ -868,7 +864,7 @@ public static String[] annotateParameterType(String originalSignature, String an int start = wrapper.start; int end = wrapper.skipAngleContents(wrapper.computeEnd()); result[0] = originalSignature.substring(0, start); - buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); result[1] = originalSignature.substring(start, end+1); updateType(buf, result[1].toCharArray(), annotatedType.toCharArray(), mergeStrategy); result[2] = buf.toString(); @@ -895,7 +891,7 @@ public static String[] annotateParameterType(String originalSignature, String an public static String[] annotateTypeParameter(String originalSignature, String annotatedType, int rank, MergeStrategy mergeStrategy) { String[] result = new String[4]; // prefix, orig, replacement, postfix - StringBuffer buf = new StringBuffer(); + StringBuilder buf = new StringBuilder(); SignatureWrapper wrapper = new SignatureWrapper(originalSignature.toCharArray(), true, true); // may already contain annotations wrapper.start = 1; // skip '<' // prefix: