From 4e1ceb5587726aacbe5f504f8f825deb7d97c384 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Wed, 2 May 2012 13:23:47 +0400 Subject: [PATCH] IDEA-85394 IntelliJ should understand Archetypes in Maven project and not try to build the resources directory --- .../ArchetypeResourceHighlightFilter.java | 29 ++++++++++++++++++ .../src/main/resources/META-INF/plugin.xml | 2 ++ ...avenArchetypeResourcesHighlightTest.groovy | 30 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/ArchetypeResourceHighlightFilter.java create mode 100644 plugins/maven/src/test/java/org/jetbrains/idea/maven/utils/MavenArchetypeResourcesHighlightTest.groovy diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/ArchetypeResourceHighlightFilter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/ArchetypeResourceHighlightFilter.java new file mode 100644 index 000000000000..5207f1fae25f --- /dev/null +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/ArchetypeResourceHighlightFilter.java @@ -0,0 +1,29 @@ +package org.jetbrains.idea.maven.utils; + +import com.intellij.codeInsight.daemon.ProblemHighlightFilter; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; + +/** + * @author Sergey Evdokimov + */ +public class ArchetypeResourceHighlightFilter extends ProblemHighlightFilter { + + @Override + public boolean shouldHighlight(@NotNull PsiFile psiFile) { + VirtualFile virtualFile = psiFile.getOriginalFile().getVirtualFile(); + + do { + if (virtualFile == null) return true; + + if (virtualFile.getName().equals("archetype-resources")) { + if (virtualFile.getPath().endsWith("src/main/resources/archetype-resources")) { + return false; + } + } + + virtualFile = virtualFile.getParent(); + } while (true); + } +} diff --git a/plugins/maven/src/main/resources/META-INF/plugin.xml b/plugins/maven/src/main/resources/META-INF/plugin.xml index 2503ec032610..80eae7de882a 100644 --- a/plugins/maven/src/main/resources/META-INF/plugin.xml +++ b/plugins/maven/src/main/resources/META-INF/plugin.xml @@ -102,6 +102,8 @@ org.jetbrains.idea.maven.dom.intentions.ChooseFileIntentionAction + + diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/utils/MavenArchetypeResourcesHighlightTest.groovy b/plugins/maven/src/test/java/org/jetbrains/idea/maven/utils/MavenArchetypeResourcesHighlightTest.groovy new file mode 100644 index 000000000000..f37bd72041fe --- /dev/null +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/utils/MavenArchetypeResourcesHighlightTest.groovy @@ -0,0 +1,30 @@ +package org.jetbrains.idea.maven.utils + +import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase +import com.intellij.psi.PsiFile + +/** + * @author Sergey Evdokimov + */ +class MavenArchetypeResourcesHighlightTest extends LightCodeInsightFixtureTestCase { + + public void testHighlight() throws Exception { + PsiFile file = myFixture.addFileToProject("src/main/resources/archetype-resources/src/main/java/A.java", """ +import \${package}; +class A { +} +"""); + myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); + myFixture.checkHighlighting(); + + file = myFixture.addFileToProject("src/main/resources/B.java", """ +import \${package}; +class B { +} +"""); + myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); + myFixture.checkHighlighting(); + } + +} +