From 32b1bb15aa760dda79aee01eff2b5fe9ccc347f0 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 21 Apr 2016 19:05:11 +0200 Subject: [PATCH] push down api prettify after (IDEA-CR-8676) --- .../memberPushDown/JavaPushDownDelegate.java | 12 +++++------- .../memberPushDown/PushDownConflicts.java | 3 +-- .../memberPushDown/AbstractPushDownProcessor.java | 6 +++--- .../refactoring/memberPushDown/NewSubClassData.java | 12 +++++++++--- .../refactoring/memberPushDown/PushDownDelegate.java | 8 +++----- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java b/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java index b4284a7d5a9c..90c8c1f53da2 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java @@ -90,11 +90,9 @@ public class JavaPushDownDelegate extends PushDownDelegate { @Override public void checkTargetClassConflicts(PsiElement targetClass, - PushDownData pushDownData, - boolean checkStatic, - PsiElement context, + PushDownData pushDownData, MultiMap conflicts) { - new PushDownConflicts((PsiClass)pushDownData.getSourceClass(), (MemberInfo[])pushDownData.getMembersToMove(), conflicts).checkTargetClassConflicts(targetClass, checkStatic, context); + new PushDownConflicts((PsiClass)pushDownData.getSourceClass(), (MemberInfo[])pushDownData.getMembersToMove(), conflicts).checkTargetClassConflicts(targetClass, targetClass); } @Override @@ -104,7 +102,7 @@ public class JavaPushDownDelegate extends PushDownDelegate { if (Messages.showOkCancelDialog((aClass.isEnum() ? "Enum " + aClass.getQualifiedName() + " doesn't have constants to inline to. " : "Final class " + aClass.getQualifiedName() + "does not have inheritors. ") + "Pushing members down will result in them being deleted. " + "Would you like to proceed?", conflictDialogTitle, Messages.getWarningIcon()) != Messages.OK) { - return NewSubClassData.EMPTY; + return NewSubClassData.ABORT_REFACTORING; } } else { String noInheritors = aClass.isInterface() ? @@ -117,11 +115,11 @@ public class JavaPushDownDelegate extends PushDownDelegate { if (classDialog != null) { return new NewSubClassData(classDialog.getTargetDirectory(), classDialog.getClassName()); } else { - return NewSubClassData.EMPTY; + return NewSubClassData.ABORT_REFACTORING; } } else if (answer != Messages.NO) { - return NewSubClassData.EMPTY; + return NewSubClassData.ABORT_REFACTORING; } } return null; diff --git a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java index 55acbe88e55a..21b0b9c49afb 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java @@ -77,7 +77,7 @@ public class PushDownConflicts { } } - public void checkTargetClassConflicts(final PsiElement targetElement, final boolean checkStatic, final PsiElement context) { + public void checkTargetClassConflicts(final PsiElement targetElement, final PsiElement context) { if (targetElement instanceof PsiFunctionalExpression) { myConflicts.putValue(targetElement, RefactoringBundle.message("functional.interface.broken")); return; @@ -123,7 +123,6 @@ public class PushDownConflicts { aClass = ((PsiClassType)qualifierType).resolve(); } else { - if (!checkStatic) continue; if (qualifier instanceof PsiReferenceExpression) { final PsiElement resolved = ((PsiReferenceExpression)qualifier).resolve(); if (resolved instanceof PsiClass) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/AbstractPushDownProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/AbstractPushDownProcessor.java index 43ad20993dca..aef1539df93e 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/AbstractPushDownProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/AbstractPushDownProcessor.java @@ -107,7 +107,7 @@ public abstract class AbstractPushDownProcessor extends BaseRefactoringProcessor final UsageInfo[] usagesIn = refUsages.get(); if (usagesIn.length == 0) { mySubClassData = myDelegate.preprocessNoInheritorsFound(myPushDownData.getSourceClass(), getCommandName()); - if (mySubClassData == NewSubClassData.EMPTY) { + if (mySubClassData == NewSubClassData.ABORT_REFACTORING) { return false; } } @@ -118,7 +118,7 @@ public abstract class AbstractPushDownProcessor extends BaseRefactoringProcessor @Override public void run() { if (mySubClassData != null) { - myDelegate.checkTargetClassConflicts(null, myPushDownData, false, mySubClassData.getContext(), conflicts); + myDelegate.checkTargetClassConflicts(null, myPushDownData, conflicts); } else { for (UsageInfo usage : usagesIn) { @@ -126,7 +126,7 @@ public abstract class AbstractPushDownProcessor extends BaseRefactoringProcessor if (element != null) { final PushDownDelegate delegate = PushDownDelegate.findDelegateForTarget(myPushDownData.getSourceClass(), element); if (delegate != null) { - delegate.checkTargetClassConflicts(element, myPushDownData, usagesIn.length > 1, element, conflicts); + delegate.checkTargetClassConflicts(element, myPushDownData, conflicts); } else { conflicts.putValue(element, "Not supported source/target pair detected"); diff --git a/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/NewSubClassData.java b/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/NewSubClassData.java index 47c8cf4c2de5..7bc26e606cfe 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/NewSubClassData.java +++ b/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/NewSubClassData.java @@ -17,10 +17,13 @@ package com.intellij.refactoring.memberPushDown; import com.intellij.psi.PsiElement; +/** + * Bean to store new class data if no inheritors were found: {@link PushDownDelegate#preprocessNoInheritorsFound(PsiElement, String)} + */ public class NewSubClassData { - public static final NewSubClassData EMPTY = new NewSubClassData(null, null); + public static final NewSubClassData ABORT_REFACTORING = new NewSubClassData(null, null); - private PsiElement myContext; + private Object myContext; private String myNewClassName; public NewSubClassData(PsiElement context, String newClassName) { @@ -28,7 +31,10 @@ public class NewSubClassData { myNewClassName = newClassName; } - protected PsiElement getContext() { + /** + * Directory to create new class + */ + protected Object getContext() { return myContext; } diff --git a/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/PushDownDelegate.java b/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/PushDownDelegate.java index 2296f204bfc8..14c6e4889fa5 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/PushDownDelegate.java +++ b/platform/lang-impl/src/com/intellij/refactoring/memberPushDown/PushDownDelegate.java @@ -52,7 +52,7 @@ public abstract class PushDownDelegate { * Implementations are supposed to override this method when overriding default behaviour for the language, * e.g. pushing members from groovy class to java, groovy could provide additional delegate which inherits delegate for java and accepts groovy sources. * Methods to process target class should be updated to cope with source of another language (e.g. calling super on PushDownData translated to java): - * {@link #checkTargetClassConflicts(PsiElement, PushDownData, boolean, PsiElement, MultiMap)}, + * {@link #checkTargetClassConflicts(PsiElement, PushDownData, MultiMap) }, * {@link #pushDownToClass(PsiElement, PushDownData)} */ protected abstract boolean isApplicableForSource(@NotNull PsiElement sourceClass); @@ -79,8 +79,6 @@ public abstract class PushDownDelegate { */ protected abstract void checkTargetClassConflicts(PsiElement targetClass, PushDownData pushDownData, - boolean checkStatic, - PsiElement context, MultiMap conflicts); /** @@ -102,7 +100,7 @@ public abstract class PushDownDelegate { * Called if no inheritors were found in {@link #findInheritors(PushDownData)}. Should warn that members would be deleted and * suggest to create new target class if applicable * - * @return NewSubClassData.EMPTY if refactoring should be aborted + * @return NewSubClassData.ABORT_REFACTORING if refactoring should be aborted * null to proceed without inheritors (members would be deleted from the source class and not added to the target) * new NewSubClassData(context, name) if new inheritor should be created with {@link #createSubClass(PsiElement, NewSubClassData)} */ @@ -111,7 +109,7 @@ public abstract class PushDownDelegate { RefactoringBundle.message("push.down.will.delete.members"); final int answer = Messages.showYesNoDialog(message, conflictDialogTitle, Messages.getWarningIcon()); if (answer != Messages.YES) { - return NewSubClassData.EMPTY; + return NewSubClassData.ABORT_REFACTORING; } return null; }