mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
replace constructor with builder: escalate visibility (IDEA-82768)
This commit is contained in:
+21
-7
@@ -45,6 +45,7 @@ import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -156,6 +157,14 @@ public class ReplaceConstructorWithBuilderProcessor extends FixableUsagesRefacto
|
||||
builderClass.add(method);
|
||||
}
|
||||
|
||||
//fix visibilities
|
||||
final PsiMethod constructor = getWorkingConstructor();
|
||||
VisibilityUtil.escalateVisibility(constructor, builderClass);
|
||||
PsiClass containingClass = constructor.getContainingClass();
|
||||
while (containingClass != null) {
|
||||
VisibilityUtil.escalateVisibility(containingClass, builderClass);
|
||||
containingClass = containingClass.getContainingClass();
|
||||
}
|
||||
}
|
||||
|
||||
private void createSetter(PsiClass builderClass, ParameterData parameterData, PsiField field) {
|
||||
@@ -221,13 +230,7 @@ public class ReplaceConstructorWithBuilderProcessor extends FixableUsagesRefacto
|
||||
private PsiMethod createMethodSignature(String createMethodName) {
|
||||
JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(myProject);
|
||||
final StringBuffer buf = new StringBuffer();
|
||||
PsiMethod constructor = getMostCommonConstructor();
|
||||
if (constructor == null){
|
||||
constructor = myConstructors[0];
|
||||
if (constructor.getParameterList().getParametersCount() == 0) {
|
||||
constructor = myConstructors[1];
|
||||
}
|
||||
}
|
||||
final PsiMethod constructor = getWorkingConstructor();
|
||||
for (PsiParameter parameter : constructor.getParameterList().getParameters()) {
|
||||
final String pureParamName = styleManager.variableNameToPropertyName(parameter.getName(), VariableKind.PARAMETER);
|
||||
if (buf.length() > 0) buf.append(", ");
|
||||
@@ -245,6 +248,17 @@ public class ReplaceConstructorWithBuilderProcessor extends FixableUsagesRefacto
|
||||
";\n}", constructor);
|
||||
}
|
||||
|
||||
private PsiMethod getWorkingConstructor() {
|
||||
PsiMethod constructor = getMostCommonConstructor();
|
||||
if (constructor == null){
|
||||
constructor = myConstructors[0];
|
||||
if (constructor.getParameterList().getParametersCount() == 0) {
|
||||
constructor = myConstructors[1];
|
||||
}
|
||||
}
|
||||
return constructor;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private PsiMethod getMostCommonConstructor() {
|
||||
if (myConstructors.length == 1) return myConstructors[0];
|
||||
|
||||
Reference in New Issue
Block a user