IDEA-85394 IntelliJ should understand Archetypes in Maven project and not try to build the resources directory

This commit is contained in:
Sergey Evdokimov
2012-05-02 13:25:02 +04:00
parent 2b896b8910
commit 4e1ceb5587
3 changed files with 61 additions and 0 deletions
@@ -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);
}
}
@@ -102,6 +102,8 @@
<className>org.jetbrains.idea.maven.dom.intentions.ChooseFileIntentionAction</className>
</intentionAction>
<problemHighlightFilter implementation="org.jetbrains.idea.maven.utils.ArchetypeResourceHighlightFilter" />
<codeInsight.unresolvedReferenceQuickFixProvider
implementation="org.jetbrains.idea.maven.dom.intentions.ResolveReferenceQuickFixProvider"/>
@@ -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 <error>\$</error><error><error>{</error>package};</error>
class B {
}
""");
myFixture.configureFromExistingVirtualFile(file.getVirtualFile());
myFixture.checkHighlighting();
}
}