mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
Java extract class: use StringBuilder instead of StringBuffer and cleanup
GitOrigin-RevId: c9053717aaeba00e58cb34164b660466f1fcc769
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e8bdbf5b6a
commit
3ed84e673f
@@ -84,13 +84,12 @@ class ExtractedClassBuilder {
|
|||||||
this.interfaces.addAll(interfaces);
|
this.interfaces.addAll(interfaces);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String buildBeanClass(boolean normalizeDeclaration) {
|
public String buildBeanClass(boolean normalizeDeclaration) {
|
||||||
if (requiresBackPointer) {
|
if (requiresBackPointer) {
|
||||||
calculateBackpointerName();
|
calculateBackpointerName();
|
||||||
}
|
}
|
||||||
@NonNls final StringBuffer out = new StringBuffer(1024);
|
final @NonNls StringBuilder out = new StringBuilder(1024);
|
||||||
if (packageName.length() > 0) out.append("package " + packageName + ';');
|
if (packageName.length() > 0) out.append("package ").append(packageName).append(";\n");
|
||||||
|
|
||||||
out.append("public ");
|
out.append("public ");
|
||||||
fields.removeAll(enumConstantFields);
|
fields.removeAll(enumConstantFields);
|
||||||
@@ -119,10 +118,10 @@ class ExtractedClassBuilder {
|
|||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out.append('{');
|
out.append("{\n");
|
||||||
|
|
||||||
if (requiresBackPointer) {
|
if (requiresBackPointer) {
|
||||||
out.append("private final " + originalClassName);
|
out.append("private final ").append(originalClassName);
|
||||||
if (!typeParams.isEmpty()) {
|
if (!typeParams.isEmpty()) {
|
||||||
out.append('<');
|
out.append('<');
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
@@ -135,7 +134,7 @@ class ExtractedClassBuilder {
|
|||||||
}
|
}
|
||||||
out.append('>');
|
out.append('>');
|
||||||
}
|
}
|
||||||
out.append(' ' + backPointerName + ";");
|
out.append(' ').append(backPointerName).append(";");
|
||||||
}
|
}
|
||||||
outputFieldsAndInitializers(out, normalizeDeclaration);
|
outputFieldsAndInitializers(out, normalizeDeclaration);
|
||||||
if (hasEnumConstants()) {
|
if (hasEnumConstants()) {
|
||||||
@@ -216,19 +215,19 @@ class ExtractedClassBuilder {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void outputMethods(StringBuffer out) {
|
private void outputMethods(@NonNls StringBuilder out) {
|
||||||
for (PsiMethod method : methods) {
|
for (PsiMethod method : methods) {
|
||||||
method.accept(new Mutator(out));
|
method.accept(new Mutator(out));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void outputInnerClasses(StringBuffer out) {
|
private void outputInnerClasses(@NonNls StringBuilder out) {
|
||||||
for (PsiClass innerClass : innerClasses) {
|
for (PsiClass innerClass : innerClasses) {
|
||||||
outputMutatedInnerClass(out, innerClass, innerClassesToMakePublic.contains(innerClass));
|
outputMutatedInnerClass(out, innerClass, innerClassesToMakePublic.contains(innerClass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void outputMutatedInnerClass(StringBuffer out, PsiClass innerClass, boolean makePublic) {
|
private void outputMutatedInnerClass(@NonNls StringBuilder out, PsiClass innerClass, boolean makePublic) {
|
||||||
if (makePublic) {
|
if (makePublic) {
|
||||||
try {
|
try {
|
||||||
PsiUtil.setModifierProperty(innerClass, PsiModifier.PUBLIC, false);
|
PsiUtil.setModifierProperty(innerClass, PsiModifier.PUBLIC, false);
|
||||||
@@ -241,22 +240,23 @@ class ExtractedClassBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void outputFieldsAndInitializers(final StringBuffer out, boolean normalizeDeclaration) {
|
private void outputFieldsAndInitializers(@NonNls StringBuilder out, boolean normalizeDeclaration) {
|
||||||
if (hasEnumConstants()) {
|
if (hasEnumConstants()) {
|
||||||
out.append(StringUtil.join(enumConstantFields, field -> {
|
out.append(StringUtil.join(enumConstantFields, field -> {
|
||||||
final StringBuffer fieldStr = new StringBuffer(field.getName() + "(");
|
final @NonNls StringBuilder fieldStr = new StringBuilder(field.getName());
|
||||||
|
fieldStr.append('(');
|
||||||
final PsiExpression initializer = field.getInitializer();
|
final PsiExpression initializer = field.getInitializer();
|
||||||
if (initializer != null) {
|
if (initializer != null) {
|
||||||
initializer.accept(new Mutator(fieldStr));
|
initializer.accept(new Mutator(fieldStr));
|
||||||
}
|
}
|
||||||
fieldStr.append(")");
|
fieldStr.append(')');
|
||||||
return fieldStr.toString();
|
return fieldStr.toString();
|
||||||
}, ", "));
|
}, ", "));
|
||||||
out.append(";");
|
out.append(";\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<PsiClassInitializer> remainingInitializers = new ArrayList<>(initializers);
|
final List<PsiClassInitializer> remainingInitializers = new ArrayList<>(initializers);
|
||||||
for (final PsiField field : fields) {
|
for (PsiField field : fields) {
|
||||||
if (normalizeDeclaration) {
|
if (normalizeDeclaration) {
|
||||||
field.normalizeDeclaration();
|
field.normalizeDeclaration();
|
||||||
}
|
}
|
||||||
@@ -287,9 +287,8 @@ class ExtractedClassBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void outputConstructor(@NonNls StringBuilder out) {
|
||||||
private void outputConstructor(@NonNls StringBuffer out) {
|
out.append(hasEnumConstants() ? "" : "public ").append(className).append('(');
|
||||||
out.append("\t").append(hasEnumConstants() ? "" : "public ").append(className).append('(');
|
|
||||||
if (requiresBackPointer) {
|
if (requiresBackPointer) {
|
||||||
final String parameterName = myJavaCodeStyleManager.propertyNameToVariableName(backPointerName, VariableKind.PARAMETER);
|
final String parameterName = myJavaCodeStyleManager.propertyNameToVariableName(backPointerName, VariableKind.PARAMETER);
|
||||||
out.append(originalClassName);
|
out.append(originalClassName);
|
||||||
@@ -305,35 +304,34 @@ class ExtractedClassBuilder {
|
|||||||
}
|
}
|
||||||
out.append('>');
|
out.append('>');
|
||||||
}
|
}
|
||||||
out.append(' ' + parameterName);
|
out.append(' ').append(parameterName);
|
||||||
} else if (hasEnumConstants()) {
|
} else if (hasEnumConstants()) {
|
||||||
out.append(myEnumParameterType.getCanonicalText()).append(" ").append("value");
|
out.append(myEnumParameterType.getCanonicalText()).append(" ").append("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
out.append(")");
|
out.append(") {\n");
|
||||||
out.append("\t{");
|
|
||||||
if (requiresBackPointer) {
|
if (requiresBackPointer) {
|
||||||
final String parameterName = myJavaCodeStyleManager.propertyNameToVariableName(backPointerName, VariableKind.PARAMETER);
|
final String parameterName = myJavaCodeStyleManager.propertyNameToVariableName(backPointerName, VariableKind.PARAMETER);
|
||||||
if (backPointerName.equals(parameterName)) {
|
if (backPointerName.equals(parameterName)) {
|
||||||
out.append("\t\tthis." + backPointerName + " = " + parameterName + ";");
|
out.append("this.");
|
||||||
}
|
|
||||||
else {
|
|
||||||
out.append("\t\t" + backPointerName + " = " + parameterName + ";");
|
|
||||||
}
|
}
|
||||||
|
out.append(backPointerName).append('=').append(parameterName).append(";\n");
|
||||||
|
|
||||||
} else if (hasEnumConstants()) {
|
} else if (hasEnumConstants()) {
|
||||||
final String fieldName = getValueFieldName();
|
final String fieldName = getValueFieldName();
|
||||||
out.append(fieldName.equals("value") ? "this." : "").append(fieldName).append(" = value;");
|
if (fieldName.equals("value")) {
|
||||||
|
out.append("this.");
|
||||||
|
}
|
||||||
|
out.append(fieldName).append("=value;\n");
|
||||||
}
|
}
|
||||||
out.append("\t}");
|
out.append("}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRequiresBackPointer(boolean requiresBackPointer) {
|
public void setRequiresBackPointer(boolean requiresBackPointer) {
|
||||||
this.requiresBackPointer = requiresBackPointer;
|
this.requiresBackPointer = requiresBackPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setProject(Project project) {
|
||||||
public void setProject(final Project project) {
|
|
||||||
myProject = project;
|
myProject = project;
|
||||||
myJavaCodeStyleManager = JavaCodeStyleManager.getInstance(project);
|
myJavaCodeStyleManager = JavaCodeStyleManager.getInstance(project);
|
||||||
}
|
}
|
||||||
@@ -363,10 +361,9 @@ class ExtractedClassBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final class Mutator extends JavaElementVisitor {
|
private final class Mutator extends JavaElementVisitor {
|
||||||
@NonNls
|
private final @NonNls StringBuilder out;
|
||||||
private final StringBuffer out;
|
|
||||||
|
|
||||||
private Mutator(StringBuffer out) {
|
private Mutator(@NonNls StringBuilder out) {
|
||||||
super();
|
super();
|
||||||
this.out = out;
|
this.out = out;
|
||||||
}
|
}
|
||||||
@@ -466,8 +463,7 @@ class ExtractedClassBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void delegate(final PsiExpression rhs, final PsiField field, final PsiJavaToken sign, final IElementType tokenType,
|
private void delegate(PsiExpression rhs, PsiField field, PsiJavaToken sign, IElementType tokenType, String fieldName) {
|
||||||
final String fieldName) {
|
|
||||||
final String setterName = GenerateMembersUtil.suggestSetterName(field);
|
final String setterName = GenerateMembersUtil.suggestSetterName(field);
|
||||||
out.append(fieldName).append('.').append(setterName).append('(');
|
out.append(fieldName).append('.').append(setterName).append('(');
|
||||||
if (!tokenType.equals(JavaTokenType.EQ)) {
|
if (!tokenType.equals(JavaTokenType.EQ)) {
|
||||||
@@ -480,7 +476,6 @@ class ExtractedClassBuilder {
|
|||||||
out.append(')');
|
out.append(')');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitUnaryExpression(@NotNull PsiUnaryExpression expression) {
|
public void visitUnaryExpression(@NotNull PsiUnaryExpression expression) {
|
||||||
PsiExpression operand = expression.getOperand();
|
PsiExpression operand = expression.getOperand();
|
||||||
@@ -501,14 +496,14 @@ class ExtractedClassBuilder {
|
|||||||
final PsiField field = (PsiField)reference.resolve();
|
final PsiField field = (PsiField)reference.resolve();
|
||||||
assert field != null;
|
assert field != null;
|
||||||
if (!field.hasModifierProperty(PsiModifier.STATIC)) {
|
if (!field.hasModifierProperty(PsiModifier.STATIC)) {
|
||||||
out.append(backPointerName +
|
out.append(backPointerName)
|
||||||
'.' + GenerateMembersUtil.suggestSetterName(field) +
|
.append('.').append(GenerateMembersUtil.suggestSetterName(field))
|
||||||
'(' +
|
.append('(')
|
||||||
backPointerName +
|
.append(backPointerName)
|
||||||
'.' + GenerateMembersUtil.suggestGetterName(field) +
|
.append('.').append(GenerateMembersUtil.suggestGetterName(field))
|
||||||
"()" +
|
.append("()")
|
||||||
operator +
|
.append(operator)
|
||||||
"1)");
|
.append("1)");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
visitElement(expression);
|
visitElement(expression);
|
||||||
@@ -523,14 +518,11 @@ class ExtractedClassBuilder {
|
|||||||
return BackpointerUtil.isBackpointerReference(expression, psiField -> !fieldIsExtracted(psiField));
|
return BackpointerUtil.isBackpointerReference(expression, psiField -> !fieldIsExtracted(psiField));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitThisExpression(@NotNull PsiThisExpression expression) {
|
public void visitThisExpression(@NotNull PsiThisExpression expression) {
|
||||||
out.append(backPointerName);
|
out.append(backPointerName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitMethodCallExpression(@NotNull PsiMethodCallExpression call) {
|
public void visitMethodCallExpression(@NotNull PsiMethodCallExpression call) {
|
||||||
final PsiReferenceExpression expression = call.getMethodExpression();
|
final PsiReferenceExpression expression = call.getMethodExpression();
|
||||||
@@ -546,11 +538,11 @@ class ExtractedClassBuilder {
|
|||||||
final PsiClass targetClass = ((PsiImportStaticStatement)resolveScope).resolveTargetClass();
|
final PsiClass targetClass = ((PsiImportStaticStatement)resolveScope).resolveTargetClass();
|
||||||
out.append(targetClass != null ? targetClass.getQualifiedName() : "").append('.').append(methodName);
|
out.append(targetClass != null ? targetClass.getQualifiedName() : "").append('.').append(methodName);
|
||||||
} else {
|
} else {
|
||||||
out.append(originalClassName + '.' + methodName);
|
out.append(originalClassName).append('.').append(methodName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
out.append(backPointerName + '.' + methodName);
|
out.append(backPointerName).append('.').append(methodName);
|
||||||
}
|
}
|
||||||
final PsiExpressionList argumentList = call.getArgumentList();
|
final PsiExpressionList argumentList = call.getArgumentList();
|
||||||
argumentList.accept(this);
|
argumentList.accept(this);
|
||||||
|
|||||||
Reference in New Issue
Block a user