From a170a20bbdff19d89f2cfde8d188297e91680746 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 21 Jan 2010 16:47:19 +0300 Subject: [PATCH] remove settings for since API usage inspection: use language level instead --- .../java15api/ForbiddenApiChooser.form | 32 ------ .../java15api/Java15APIUsageInspection.java | 106 +++++------------- .../JavaAPIUsagesInspectionTest.java | 1 - .../inspections/Java15FormInspection.java | 7 +- 4 files changed, 35 insertions(+), 111 deletions(-) delete mode 100644 java/java-impl/src/com/intellij/codeInspection/java15api/ForbiddenApiChooser.form diff --git a/java/java-impl/src/com/intellij/codeInspection/java15api/ForbiddenApiChooser.form b/java/java-impl/src/com/intellij/codeInspection/java15api/ForbiddenApiChooser.form deleted file mode 100644 index 85c798e8000e..000000000000 --- a/java/java-impl/src/com/intellij/codeInspection/java15api/ForbiddenApiChooser.form +++ /dev/null @@ -1,32 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java b/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java index 9aba693f3ca4..029e2197cc42 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspection.java @@ -21,23 +21,20 @@ import com.intellij.codeInsight.daemon.GroupNames; import com.intellij.codeInspection.*; import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.util.InvalidDataException; -import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.module.LanguageLevelUtil; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.vfs.CharsetToolkit; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; +import com.intellij.util.containers.HashMap; import gnu.trove.THashSet; -import gnu.trove.TIntObjectHashMap; -import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.swing.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.io.*; /** @@ -46,32 +43,23 @@ import java.io.*; public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { @NonNls public static final String SHORT_NAME = "Since15"; - private static final TIntObjectHashMap> ourForbiddenAPI = new TIntObjectHashMap>(5); + private static final HashMap> ourForbiddenAPI = new HashMap>(5); private static final THashSet ourIgnored16ClassesAPI = new THashSet(10); - private static final int API_16 = 2; - private static final TIntObjectHashMap ourAPIPresentationMap = new TIntObjectHashMap(5); - - public boolean FORBID_15_API = false; - - public boolean FORBID_16_API = false; - private JPanel myWholePanel; - private JComboBox myApiComboBox; - - public int API = 1; + private static final HashMap ourAPIPresentationMap = new HashMap(5); static { final THashSet ourForbidden14API = new THashSet(1000); initForbiddenApi("api14List.txt", ourForbidden14API); - ourForbiddenAPI.put(0, ourForbidden14API); - ourAPIPresentationMap.put(0, "1.4"); + ourForbiddenAPI.put(LanguageLevel.JDK_1_4, ourForbidden14API); + ourAPIPresentationMap.put(LanguageLevel.JDK_1_4, "1.4"); final THashSet ourForbidden15API = new THashSet(1000); initForbiddenApi("apiList.txt", ourForbidden15API); - ourForbiddenAPI.put(1, ourForbidden15API); - ourAPIPresentationMap.put(1, "1.5"); + ourForbiddenAPI.put(LanguageLevel.JDK_1_5, ourForbidden15API); + ourAPIPresentationMap.put(LanguageLevel.JDK_1_5, "1.5"); final THashSet ourForbidden16API = new THashSet(1000); initForbiddenApi("api16List.txt", ourForbidden16API); - ourForbiddenAPI.put(2, ourForbidden16API); - ourAPIPresentationMap.put(2, "1.6"); + ourForbiddenAPI.put(LanguageLevel.JDK_1_6, ourForbidden16API); + ourAPIPresentationMap.put(LanguageLevel.JDK_1_6, "1.6"); initForbiddenApi("ignore16List.txt", ourIgnored16ClassesAPI); } @@ -106,22 +94,6 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { } } - @Nullable - public JComponent createOptionsPanel() { - final DefaultComboBoxModel model = (DefaultComboBoxModel)myApiComboBox.getModel(); - model.removeAllElements(); - for (int idx = 0; idx < ourAPIPresentationMap.size(); idx++) { - model.addElement(ourAPIPresentationMap.get(idx)); - } - myApiComboBox.setSelectedIndex(API); - myApiComboBox.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - API = myApiComboBox.getSelectedIndex(); - } - }); - return myWholePanel; - } - @NotNull public String getGroupDisplayName() { return GroupNames.JDK15_SPECIFIC_GROUP_NAME; @@ -138,27 +110,6 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { } - @Override - public void readSettings(Element node) throws InvalidDataException { - super.readSettings(node); - if (FORBID_15_API) { - API = API_16 - 1; - } - else if (FORBID_16_API) { - API = API_16; - } - } - - @Override - public void writeSettings(Element node) throws WriteExternalException { - if (API != API_16 - 1) { - final Element element = new Element("option"); - element.setAttribute("name", "API"); - element.setAttribute("value", String.valueOf(API)); - node.addContent(element); - } - } - @NotNull @Override public HighlightDisplayLevel getDefaultLevel() { @@ -193,8 +144,8 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { return null; } - public String getApiPresentable() { - return ourAPIPresentationMap.get(API); + public static String getPresentable(LanguageLevel languageLevel) { + return ourAPIPresentationMap.get(languageLevel); } private class MyVisitor extends JavaElementVisitor { @@ -221,7 +172,8 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { final PsiElement resolved = reference.resolve(); if (resolved instanceof PsiCompiledElement && resolved instanceof PsiMember) { - if (isForbiddenApiUsage((PsiMember)resolved, API)) { + final LanguageLevel languageLevel = LanguageLevelUtil.getEffectiveLanguageLevel(ModuleUtil.findModuleForPsiElement(reference.getElement())); + if (isForbiddenApiUsage((PsiMember)resolved, languageLevel)) { PsiClass psiClass = null; final PsiElement qualifier = reference.getQualifier(); if (qualifier != null) { @@ -238,7 +190,7 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { if (isIgnored(superClass)) return; } } - registerError(reference, API); + registerError(reference, languageLevel); } } } @@ -251,22 +203,22 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { @Override public void visitNewExpression(final PsiNewExpression expression) { super.visitNewExpression(expression); final PsiMethod constructor = expression.resolveConstructor(); + final LanguageLevel languageLevel = LanguageLevelUtil.getEffectiveLanguageLevel(ModuleUtil.findModuleForPsiElement(expression)); if (constructor instanceof PsiCompiledElement) { - if (isForbiddenApiUsage(constructor, API)) { - registerError(expression.getClassReference(), API); + if (isForbiddenApiUsage(constructor, languageLevel)) { + registerError(expression.getClassReference(), languageLevel); } } } - private void registerError(PsiJavaCodeReferenceElement reference, int api) { + private void registerError(PsiJavaCodeReferenceElement reference, LanguageLevel api) { if (isInProject(reference)) { - myHolder.registerProblem(reference, InspectionsBundle.message("inspection.1.5.problem.descriptor", ourAPIPresentationMap.get(api))); + myHolder.registerProblem(reference, InspectionsBundle.message("inspection.1.5.problem.descriptor", getPresentable(api))); } } } - public static boolean isForbiddenApiUsage(final PsiMember member, int api) { - if (api == -1) return false; + public static boolean isForbiddenApiUsage(final PsiMember member, LanguageLevel languageLevel) { if (member == null) return false; // Annotations caught by special inspection if necessary @@ -275,16 +227,18 @@ public class Java15APIUsageInspection extends BaseJavaLocalInspectionTool { if (member instanceof PsiAnonymousClass) return false; if (member.getContainingClass() instanceof PsiAnonymousClass) return false; if (member instanceof PsiClass && !(member.getParent() instanceof PsiClass || member.getParent() instanceof PsiFile)) return false; - return isForbiddenSignature(member, api) || - isForbiddenApiUsage(member.getContainingClass(), api); + + return isForbiddenSignature(member, languageLevel) || + isForbiddenApiUsage(member.getContainingClass(), languageLevel); } - private static boolean isForbiddenSignature(PsiMember member, int api) { - final THashSet forbiddenApi = ourForbiddenAPI.get(api); + private static boolean isForbiddenSignature(PsiMember member, LanguageLevel languageLevel) { + + final THashSet forbiddenApi = ourForbiddenAPI.get(languageLevel); if (forbiddenApi == null) return false; return forbiddenApi.contains(getSignature(member)) || - isForbiddenSignature(member, api + 1); + (languageLevel.compareTo(LanguageLevel.HIGHEST) != 0 && isForbiddenSignature(member, LanguageLevel.values()[languageLevel.ordinal() + 1])); } public static String getSignature(PsiMember member) { diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/JavaAPIUsagesInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/JavaAPIUsagesInspectionTest.java index 17ebd7567d8a..55bcfa7b5ac2 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/JavaAPIUsagesInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/JavaAPIUsagesInspectionTest.java @@ -27,7 +27,6 @@ public class JavaAPIUsagesInspectionTest extends InspectionTestCase { private void doTest() throws Exception { final Java15APIUsageInspection usageInspection = new Java15APIUsageInspection(); - usageInspection.API = 1; doTest("usage1.5/" + getTestName(true), new LocalInspectionToolWrapper(usageInspection), "java 1.5"); } diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/inspections/Java15FormInspection.java b/plugins/ui-designer/src/com/intellij/uiDesigner/inspections/Java15FormInspection.java index fbae5c06fbb4..6534d6b29b0c 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/inspections/Java15FormInspection.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/inspections/Java15FormInspection.java @@ -19,7 +19,9 @@ import com.intellij.codeInspection.InspectionProfileEntry; import com.intellij.codeInspection.InspectionsBundle; import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; import com.intellij.codeInspection.java15api.Java15APIUsageInspection; +import com.intellij.openapi.module.LanguageLevelUtil; import com.intellij.openapi.module.Module; +import com.intellij.pom.java.LanguageLevel; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; @@ -64,8 +66,9 @@ public class Java15FormInspection extends BaseFormInspection { profileEntry = ((LocalInspectionToolWrapper) profileEntry).getTool(); } final Java15APIUsageInspection tool = (Java15APIUsageInspection)profileEntry; - if (Java15APIUsageInspection.isForbiddenApiUsage(getter, tool.API)) { - registerError(component, collector, prop, "@since " + tool.getApiPresentable()); + final LanguageLevel languageLevel = LanguageLevelUtil.getEffectiveLanguageLevel(module); + if (Java15APIUsageInspection.isForbiddenApiUsage(getter, languageLevel)) { + registerError(component, collector, prop, "@since " + tool.getPresentable(languageLevel)); } } }