From a17c67c0d27c2b27c6d12b8b453b987bd4192bb3 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Fri, 24 Nov 2017 10:07:11 +0100 Subject: [PATCH] remove jsp dependency overload methods lack the dependency as well --- .../src/com/siyeh/ig/PsiReplacementUtil.java | 70 +++++-------------- 1 file changed, 16 insertions(+), 54 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/PsiReplacementUtil.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/PsiReplacementUtil.java index ff69c851d522..6aadfd5ce246 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/PsiReplacementUtil.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/PsiReplacementUtil.java @@ -15,17 +15,11 @@ */ package com.siyeh.ig; -import com.intellij.lang.Language; -import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; -import com.intellij.psi.util.FileTypeUtils; -import com.intellij.psi.util.PsiUtilCore; import com.intellij.psi.util.TypeConversionUtil; import com.siyeh.ig.psiutils.CommentTracker; import com.siyeh.ig.psiutils.ParenthesesUtils; @@ -93,64 +87,32 @@ public class PsiReplacementUtil { return styleManager.reformat(replacementExp); } + /** + * Consider to use {@link #replaceStatementAndShortenClassNames(PsiStatement, String, CommentTracker)} to preserve comments + */ public static void replaceStatementAndShortenClassNames(@NotNull PsiStatement statement, @NotNull @NonNls String newStatementText) { replaceStatementAndShortenClassNames(statement, newStatementText, null); } - public static void replaceStatementAndShortenClassNames(@NotNull PsiStatement statement, - @NotNull @NonNls String newStatementText, - @Nullable CommentTracker tracker) { + /** + * @param tracker ensure to {@link CommentTracker#markUnchanged(PsiElement)} expressions used as getText in newStatementText + */ + public static PsiElement replaceStatementAndShortenClassNames(@NotNull PsiStatement statement, + @NotNull @NonNls String newStatementText, + @Nullable CommentTracker tracker) { final Project project = statement.getProject(); final CodeStyleManager styleManager = CodeStyleManager.getInstance(project); final JavaCodeStyleManager javaStyleManager = JavaCodeStyleManager.getInstance(project); - if (FileTypeUtils.isInServerPageFile(statement)) { - final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project); - final PsiFile jspFile = PsiUtilCore.getTemplateLanguageFile(statement); - if (jspFile == null) { - return; - } - final Document document = documentManager.getDocument(jspFile); - if (document == null) { - return; - } - documentManager.doPostponedOperationsAndUnblockDocument(document); - final TextRange textRange = statement.getTextRange(); - document.replaceString(textRange.getStartOffset(), textRange.getEndOffset(), newStatementText); - documentManager.commitDocument(document); - final FileViewProvider viewProvider = jspFile.getViewProvider(); - PsiElement elementAt = viewProvider.findElementAt(textRange.getStartOffset(), JavaLanguage.INSTANCE); - if (elementAt == null) { - return; - } - final int endOffset = textRange.getStartOffset() + newStatementText.length(); - while (elementAt.getTextRange().getEndOffset() < endOffset || !(elementAt instanceof PsiStatement)) { - elementAt = elementAt.getParent(); - if (elementAt == null) { - LOG.error("Cannot decode statement"); - return; - } - } - final PsiStatement newStatement = (PsiStatement)elementAt; - javaStyleManager.shortenClassReferences(newStatement); - final TextRange newTextRange = newStatement.getTextRange(); - final Language baseLanguage = viewProvider.getBaseLanguage(); - final PsiFile element = viewProvider.getPsi(baseLanguage); - if (element != null) { - styleManager.reformatRange(element, newTextRange.getStartOffset(), newTextRange.getEndOffset()); - } + + PsiStatement newStatement; + if (tracker != null) { + newStatement = (PsiStatement)tracker.replaceAndRestoreComments(statement, newStatementText); } else { - PsiStatement newStatement; - if (tracker != null) { - newStatement = (PsiStatement)tracker.replaceAndRestoreComments(statement, newStatementText); - } - else { - final PsiElementFactory factory = JavaPsiFacade.getElementFactory(project); - newStatement = (PsiStatement)statement.replace(factory.createStatementFromText(newStatementText, statement)); - } - javaStyleManager.shortenClassReferences(newStatement); - styleManager.reformat(newStatement); + final PsiElementFactory factory = JavaPsiFacade.getElementFactory(project); + newStatement = (PsiStatement)statement.replace(factory.createStatementFromText(newStatementText, statement)); } + return styleManager.reformat(javaStyleManager.shortenClassReferences(newStatement)); } public static void replaceExpressionWithReferenceTo(@NotNull PsiExpression expression, @NotNull PsiMember target) {