Skip to content

Commit

Permalink
Use StringBuilder instead of StringBuffer in package o.e.jdt.core
Browse files Browse the repository at this point in the history
  • Loading branch information
HannesWell authored and iloveeclipse committed Sep 20, 2023
1 parent 0b4cf38 commit bdffbf0
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 39 deletions.
42 changes: 21 additions & 21 deletions org.eclipse.jdt.core/model/org/eclipse/jdt/core/Signature.java
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ public final class Signature {
public static final int WILDCARD_TYPE_SIGNATURE = 5;

// <x.y.z, a.b<c>.d<e.f>> --> <z,d<f>>
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;
Expand Down Expand Up @@ -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);
}

Expand All @@ -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) {
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}

Expand All @@ -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);
Expand Down Expand Up @@ -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));
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down Expand Up @@ -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);
Expand All @@ -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) {
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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;
Expand Down Expand Up @@ -410,16 +410,15 @@ 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'
}
// compare original signatures:
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');
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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) {
Expand All @@ -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';
Expand Down Expand Up @@ -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
{
Expand Down Expand Up @@ -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();
Expand All @@ -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();
Expand All @@ -860,15 +857,14 @@ 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++)
wrapper.start = wrapper.skipAngleContents(wrapper.computeEnd()) + 1;
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();
Expand All @@ -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:
Expand Down

0 comments on commit bdffbf0

Please sign in to comment.