push down more Java specific stuff, remove unnecessary generification

This commit is contained in:
Dmitry Jemerov
2011-09-05 20:41:12 +02:00
parent f65ce86c05
commit c4ec687c0d
5 changed files with 38 additions and 44 deletions
@@ -15,11 +15,16 @@
*/
package com.intellij.refactoring;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.LightPlatformTestCase;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
@@ -33,22 +38,18 @@ public abstract class AbstractJavaInplaceIntroduceTest extends AbstractInplaceIn
super.setUp();
}
@Override
@Nullable
protected PsiExpression getExpressionFromEditor() {
final PsiExpression expression =
PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiExpression.class);
protected static PsiExpression getExpressionFromEditor() {
final PsiExpression expression = PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiExpression.class);
if (expression instanceof PsiReferenceExpression && expression.getParent() instanceof PsiMethodCallExpression) {
return (PsiExpression)expression.getParent();
}
return expression;
}
@Override
protected PsiLocalVariable getLocalVariableFromEditor() {
final PsiLocalVariable localVariable =
PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiLocalVariable.class);
protected static PsiLocalVariable getLocalVariableFromEditor() {
final PsiLocalVariable localVariable = PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()),
PsiLocalVariable.class);
assertNotNull(localVariable);
return localVariable;
}
@@ -61,4 +62,24 @@ public abstract class AbstractJavaInplaceIntroduceTest extends AbstractInplaceIn
protected String getExtension() {
return ".java";
}
protected abstract MyIntroduceHandler createIntroduceHandler();
protected AbstractInplaceIntroducer invokeRefactoring() {
final MyIntroduceHandler introduceHandler = createIntroduceHandler();
final PsiExpression expression = getExpressionFromEditor();
if (expression != null) {
introduceHandler.invokeImpl(LightPlatformTestCase.getProject(), expression, getEditor());
} else {
final PsiLocalVariable localVariable = getLocalVariableFromEditor();
introduceHandler.invokeImpl(LightPlatformTestCase.getProject(), localVariable, getEditor());
}
return introduceHandler.getInplaceIntroducer();
}
public interface MyIntroduceHandler {
boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor);
boolean invokeImpl(Project project, PsiLocalVariable localVariable, Editor editor);
AbstractInplaceIntroducer getInplaceIntroducer();
}
}
@@ -111,7 +111,7 @@ public class InplaceIntroduceConstantTest extends AbstractJavaInplaceIntroduceTe
return new MyIntroduceConstantHandler();
}
public static class MyIntroduceConstantHandler extends IntroduceConstantHandler implements MyIntroduceHandler<PsiExpression, PsiLocalVariable> {
public static class MyIntroduceConstantHandler extends IntroduceConstantHandler implements MyIntroduceHandler {
@Override
public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) {
return super.invokeImpl(project, selectedExpr, editor);
@@ -98,7 +98,7 @@ public class InplaceIntroduceFieldTest extends AbstractJavaInplaceIntroduceTest
return new MyIntroduceFieldHandler();
}
public static class MyIntroduceFieldHandler extends IntroduceFieldHandler implements MyIntroduceHandler<PsiExpression, PsiLocalVariable> {
public static class MyIntroduceFieldHandler extends IntroduceFieldHandler implements MyIntroduceHandler {
@Override
public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) {
return super.invokeImpl(project, selectedExpr, editor);
@@ -93,7 +93,7 @@ public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceT
fail("Conflict expected");
}
private static class MyIntroduceParameterHandler extends IntroduceParameterHandler implements MyIntroduceHandler<PsiExpression, PsiLocalVariable> {
private static class MyIntroduceParameterHandler extends IntroduceParameterHandler implements MyIntroduceHandler {
@Override
public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) {
@@ -18,27 +18,18 @@ package com.intellij.refactoring;
import com.intellij.codeInsight.template.TemplateManager;
import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
import com.intellij.codeInsight.template.impl.TemplateState;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiNameIdentifierOwner;
import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer;
import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
import com.intellij.testFramework.LightPlatformTestCase;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* User: anna
* Date: 8/25/11
*/
public abstract class AbstractInplaceIntroduceTest<E extends PsiElement, V extends PsiNameIdentifierOwner> extends LightPlatformCodeInsightTestCase {
@Nullable protected abstract V getLocalVariableFromEditor();
@Nullable protected abstract E getExpressionFromEditor();
public abstract class AbstractInplaceIntroduceTest extends LightPlatformCodeInsightTestCase {
protected abstract String getBasePath();
protected abstract MyIntroduceHandler<E, V> createIntroduceHandler();
protected void doTestEscape() {
String name = getTestName(true);
@@ -49,14 +40,7 @@ public abstract class AbstractInplaceIntroduceTest<E extends PsiElement, V exten
templateManager.setTemplateTesting(true);
getEditor().getSettings().setVariableInplaceRenameEnabled(true);
final MyIntroduceHandler introduceFieldHandler = createIntroduceHandler();
final E expression = getExpressionFromEditor();
if (expression != null) {
introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), expression, getEditor());
} else {
final V localVariable = getLocalVariableFromEditor();
introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), localVariable, getEditor());
}
invokeRefactoring();
TemplateState state = TemplateManagerImpl.getTemplateState(getEditor());
assert state != null;
state.gotoEnd(true);
@@ -79,15 +63,8 @@ public abstract class AbstractInplaceIntroduceTest<E extends PsiElement, V exten
templateManager.setTemplateTesting(true);
getEditor().getSettings().setVariableInplaceRenameEnabled(true);
final MyIntroduceHandler introduceFieldHandler = createIntroduceHandler();
final E expression = getExpressionFromEditor();
if (expression != null) {
introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), expression, getEditor());
} else {
final V localVariable = getLocalVariableFromEditor();
introduceFieldHandler.invokeImpl(LightPlatformTestCase.getProject(), localVariable, getEditor());
}
pass.pass(introduceFieldHandler.getInplaceIntroducer());
final AbstractInplaceIntroducer introducer = invokeRefactoring();
pass.pass(introducer);
TemplateState state = TemplateManagerImpl.getTemplateState(getEditor());
assert state != null;
state.gotoEnd(false);
@@ -99,9 +76,5 @@ public abstract class AbstractInplaceIntroduceTest<E extends PsiElement, V exten
}
}
public interface MyIntroduceHandler<EH extends PsiElement, VH extends PsiNameIdentifierOwner> {
boolean invokeImpl(Project project, @NotNull EH selectedExpr, Editor editor);
boolean invokeImpl(Project project, VH localVariable, Editor editor);
AbstractInplaceIntroducer getInplaceIntroducer();
}
protected abstract AbstractInplaceIntroducer invokeRefactoring();
}