From 41d180c59638619d59ba13302913659fc5f0e17f Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 22 Jan 2013 15:35:11 +0100 Subject: [PATCH] IDEA-99479 (`package.html` may be converted to `package-info.java` inspection doesn't produce any results) --- .../InspectionGadgets/src/META-INF/plugin.xml | 2 +- ...kageDotHtmlMayBePackageInfoInspection.java | 86 ++++++------------- .../expected.xml | 9 ++ .../package.html | 3 + ...DotHtmlMayBePackageInfoInspectionTest.java | 10 +++ 5 files changed, 51 insertions(+), 59 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/expected.xml create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/package.html create mode 100644 plugins/InspectionGadgets/testsrc/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspectionTest.java diff --git a/plugins/InspectionGadgets/src/META-INF/plugin.xml b/plugins/InspectionGadgets/src/META-INF/plugin.xml index 2cddd9de39f7..3e5977f50329 100644 --- a/plugins/InspectionGadgets/src/META-INF/plugin.xml +++ b/plugins/InspectionGadgets/src/META-INF/plugin.xml @@ -1197,7 +1197,7 @@ key="html.tag.can.be.javadoc.tag.display.name" groupBundle="messages.InspectionsBundle" groupKey="group.names.javadoc.issues" enabledByDefault="false" level="WARNING" implementationClass="com.siyeh.ig.javadoc.HtmlTagCanBeJavadocTagInspection"/> - diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java index 1b388fff38f5..b6ec3b92ea1d 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 Bas Leijdekkers + * Copyright 2011-2013 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,12 +17,11 @@ package com.siyeh.ig.javadoc; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.ide.DataManager; -import com.intellij.ide.IdeView; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.command.WriteCommandAction; +import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; @@ -35,7 +34,6 @@ import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.psi.xml.XmlTagValue; -import com.intellij.util.IncorrectOperationException; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -51,19 +49,16 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { @NotNull @Override public String getDisplayName() { - return InspectionGadgetsBundle.message( - "package.dot.html.may.be.package.info.display.name"); + return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.display.name"); } @NotNull @Override protected String buildErrorString(Object... infos) { if (((Boolean)infos[1]).booleanValue()) { - return InspectionGadgetsBundle.message( - "package.dot.html.may.be.package.info.exists.problem.descriptor"); + return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.exists.problem.descriptor"); } - return InspectionGadgetsBundle.message( - "package.dot.html.may.be.package.info.problem.descriptor"); + return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.problem.descriptor"); } @Override @@ -80,22 +75,17 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { @NotNull public String getName() { - return InspectionGadgetsBundle.message( - "package.dot.html.may.be.package.info.delete.quickfix"); + return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.delete.quickfix"); } @Override - protected void doFix(Project project, ProblemDescriptor descriptor) - throws IncorrectOperationException { + protected void doFix(Project project, ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); if (!(element instanceof XmlFile)) { return; } final XmlFile xmlFile = (XmlFile)element; - - new WriteCommandAction.Simple(project, - InspectionGadgetsBundle.message( - "package.dot.html.delete.command"), xmlFile) { + new WriteCommandAction.Simple(project, InspectionGadgetsBundle.message("package.dot.html.delete.command"), xmlFile) { @Override protected void run() throws Throwable { element.delete(); @@ -109,8 +99,7 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { } } - private static class PackageDotHtmlMayBePackageInfoFix - extends InspectionGadgetsFix { + private static class PackageDotHtmlMayBePackageInfoFix extends InspectionGadgetsFix { private final String aPackage; @@ -120,14 +109,11 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { @NotNull public String getName() { - return InspectionGadgetsBundle.message( - "package.dot.html.may.be.package.info.convert.quickfix"); + return InspectionGadgetsBundle.message("package.dot.html.may.be.package.info.convert.quickfix"); } @Override - protected void doFix(final Project project, - ProblemDescriptor descriptor) - throws IncorrectOperationException { + protected void doFix(final Project project, ProblemDescriptor descriptor) { final PsiElement element = descriptor.getPsiElement(); if (!(element instanceof XmlFile)) { return; @@ -141,24 +127,18 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { if (file != null) { return; } - new WriteCommandAction.Simple(project, - InspectionGadgetsBundle.message( - "package.dot.html.convert.command"), file) { + new WriteCommandAction.Simple(project, InspectionGadgetsBundle.message("package.dot.html.convert.command"), file) { @Override protected void run() throws Throwable { - final PsiJavaFile file = (PsiJavaFile) - directory.createFile("package-info.java"); - CommandProcessor.getInstance().addAffectedFiles(project, - file.getVirtualFile()); - final PsiElementFactory elementFactory = - JavaPsiFacade.getElementFactory(project); + final PsiJavaFile file = (PsiJavaFile)directory.createFile("package-info.java"); + CommandProcessor.getInstance().addAffectedFiles(project, file.getVirtualFile()); + final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(project); String packageInfoText = getPackageInfoText(xmlFile); if (packageInfoText == null) { packageInfoText = xmlFile.getText(); } final StringBuilder commentText = new StringBuilder("/**\n"); - final String[] lines = - StringUtil.splitByLines(packageInfoText); + final String[] lines = StringUtil.splitByLines(packageInfoText); boolean appended = false; for (String line : lines) { if (!appended && line.length() == 0) { @@ -169,12 +149,9 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { appended = true; } commentText.append("*/"); - final PsiDocComment comment = - elementFactory.createDocCommentFromText( - commentText.toString()); + final PsiDocComment comment = elementFactory.createDocCommentFromText(commentText.toString()); if (aPackage.length() > 0) { - final PsiPackageStatement packageStatement = - elementFactory.createPackageStatement(aPackage); + final PsiPackageStatement packageStatement = elementFactory.createPackageStatement(aPackage); final PsiElement addedElement = file.add(packageStatement); file.addBefore(comment, addedElement); } @@ -185,18 +162,16 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { if (!isOnTheFly()) { return; } - final AsyncResult dataContextFromFocus = - DataManager.getInstance().getDataContextFromFocus(); + final AsyncResult dataContextFromFocus = DataManager.getInstance().getDataContextFromFocus(); dataContextFromFocus.doWhenDone( new AsyncResult.Handler() { public void run(DataContext dataContext) { - final IdeView ideView = - DataKeys.IDE_VIEW.getData( - dataContext); - if (ideView == null) { + final FileEditorManager editorManager = FileEditorManager.getInstance(project); + final VirtualFile virtualFile = file.getVirtualFile(); + if (virtualFile == null) { return; } - ideView.selectElement(file); + editorManager.openFile(virtualFile, true); } } ); @@ -236,8 +211,7 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { return new PackageDotHtmlMayBePackageInfoVisitor(); } - private static class PackageDotHtmlMayBePackageInfoVisitor - extends BaseInspectionVisitor { + private static class PackageDotHtmlMayBePackageInfoVisitor extends BaseInspectionVisitor { @Override public void visitFile(PsiFile file) { @@ -249,8 +223,7 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { if (!"package.html".equals(fileName)) { return; } - final PsiDirectory directory = - file.getContainingDirectory(); + final PsiDirectory directory = file.getContainingDirectory(); if (directory == null) { return; } @@ -258,18 +231,15 @@ public class PackageDotHtmlMayBePackageInfoInspection extends BaseInspection { if (aPackage == null) { return; } - final boolean exists = - directory.findFile("package-info.java") != null; + final boolean exists = directory.findFile("package-info.java") != null; registerError(file, aPackage, Boolean.valueOf(exists)); } public static String getPackage(@NotNull PsiDirectory directory) { final VirtualFile virtualFile = directory.getVirtualFile(); final Project project = directory.getProject(); - final ProjectRootManager projectRootManager = - ProjectRootManager.getInstance(project); - final ProjectFileIndex fileIndex = - projectRootManager.getFileIndex(); + final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(project); + final ProjectFileIndex fileIndex = projectRootManager.getFileIndex(); return fileIndex.getPackageNameByDirectory(virtualFile); } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/expected.xml new file mode 100644 index 000000000000..dd5618e37f02 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/expected.xml @@ -0,0 +1,9 @@ + + + + package.html + 1 + 'package.html' may be converted to 'package-info.java' + <code>package.html</code> may be converted to <code>package-info.java</code> + + \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/package.html b/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/package.html new file mode 100644 index 000000000000..b074131a521c --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info/package.html @@ -0,0 +1,3 @@ + +this is a test file + \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspectionTest.java new file mode 100644 index 000000000000..34550c020892 --- /dev/null +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/javadoc/PackageDotHtmlMayBePackageInfoInspectionTest.java @@ -0,0 +1,10 @@ +package com.siyeh.ig.javadoc; + +import com.siyeh.ig.IGInspectionTestCase; + +public class PackageDotHtmlMayBePackageInfoInspectionTest extends IGInspectionTestCase { + + public void test() throws Exception { + doTest("com/siyeh/igtest/javadoc/package_dot_html_may_be_package_info", new PackageDotHtmlMayBePackageInfoInspection()); + } +} \ No newline at end of file