From be31f9f578895110e07b8b991faab1e378034d0a Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Tue, 25 Jun 2013 20:17:54 +0400 Subject: [PATCH] Don't add maven references to parameter --- .../MavenPropertyPsiReferenceProvider.java | 32 +++++++++++-------- .../plugins/api/MavenPluginDescriptor.java | 6 ++++ .../plugins/api/MavenPluginParamInfo.java | 12 +++++-- .../src/main/resources/META-INF/plugin.xml | 4 +++ 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReferenceProvider.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReferenceProvider.java index 53ce16acee65..278f123a1c4d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReferenceProvider.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReferenceProvider.java @@ -23,15 +23,14 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.PsiReferenceProvider; import com.intellij.psi.xml.XmlTag; +import com.intellij.util.PairProcessor; import com.intellij.util.ProcessingContext; -import com.intellij.util.xml.DomElement; -import com.intellij.util.xml.DomManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.dom.MavenDomUtil; -import org.jetbrains.idea.maven.dom.MavenPluginDomUtil; import org.jetbrains.idea.maven.dom.MavenPropertyResolver; import org.jetbrains.idea.maven.dom.model.MavenDomConfiguration; +import org.jetbrains.idea.maven.plugins.api.MavenPluginParamInfo; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -50,20 +49,25 @@ public class MavenPropertyPsiReferenceProvider extends PsiReferenceProvider { private static boolean isElementCanContainReference(PsiElement element) { if (element instanceof XmlTag) { - if ("delimiter".equals(((XmlTag)element).getName())) { - XmlTag delimitersTag = ((XmlTag)element).getParentTag(); - if (delimitersTag != null && "delimiters".equals(delimitersTag.getName())) { - XmlTag configurationTag = delimitersTag.getParentTag(); - if (configurationTag != null && "configuration".equals(configurationTag.getName())) { - DomElement configurationDom = DomManager.getDomManager(configurationTag.getProject()).getDomElement(configurationTag); - if (configurationDom != null && configurationDom instanceof MavenDomConfiguration) { - if (MavenPluginDomUtil.isPlugin((MavenDomConfiguration)configurationDom, "org.apache.maven.plugins", "maven-resources-plugin")) { - return false; - } - } + class MyProcessor implements PairProcessor { + + boolean disableReferences = false; + + @Override + public boolean process(MavenPluginParamInfo.ParamInfo info, MavenDomConfiguration configuration) { + if (Boolean.TRUE.equals(info.getParam().disableReferences)) { + disableReferences = true; + return false; } + return true; } } + + MyProcessor p = new MyProcessor(); + + MavenPluginParamInfo.processParamInfo((XmlTag)element, p); + + return !p.disableReferences; } return true; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java index 8350dc4aaa28..c0663282a6d3 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java @@ -72,6 +72,12 @@ public class MavenPluginDescriptor extends AbstractExtensionPointBean { @Attribute("soft") public Boolean soft; + /** + * Disallow to add standard maven references to parameter like $$, see MavenPropertyPsiReferenceProvider + */ + @Attribute("disableReferences") + public Boolean disableReferences; + /** * Language to inject. */ diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java index a613e4d8bbc2..c6c4a023f865 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java @@ -99,9 +99,13 @@ public class MavenPluginParamInfo { } public static void processParamInfo(@NotNull XmlText paramValue, @NotNull PairProcessor processor) { - XmlTag paramTag = paramValue.getParentTag(); - if (paramTag == null) return; + XmlTag tag = paramValue.getParentTag(); + if (tag != null) { + processParamInfo(tag, processor); + } + } + public static void processParamInfo(@NotNull XmlTag paramTag, @NotNull PairProcessor processor) { XmlTag configurationTag = paramTag; DomElement domElement; @@ -216,6 +220,10 @@ public class MavenPluginParamInfo { return myLanguageProvider; } + public MavenPluginDescriptor.Param getParam() { + return myParam; + } + public String getLanguageInjectionPrefix() { return myParam.languageInjectionPrefix; } diff --git a/plugins/maven/src/main/resources/META-INF/plugin.xml b/plugins/maven/src/main/resources/META-INF/plugin.xml index 50954e261eb0..adc7581d89a3 100644 --- a/plugins/maven/src/main/resources/META-INF/plugin.xml +++ b/plugins/maven/src/main/resources/META-INF/plugin.xml @@ -184,6 +184,8 @@ + + @@ -243,6 +245,8 @@ + +