diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesConverter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesConverter.java index 4c6f27aca790..6e2b13848646 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesConverter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesConverter.java @@ -26,6 +26,7 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.util.ArrayUtil; import com.intellij.util.xml.ConvertContext; +import com.intellij.util.xml.DomElement; import com.intellij.util.xml.DomUtil; import com.intellij.util.xml.ResolvingConverter; import gnu.trove.THashSet; @@ -45,7 +46,7 @@ import java.io.File; import java.util.Collection; import java.util.Set; -public abstract class MavenArtifactCoordinatesConverter extends ResolvingConverter { +public abstract class MavenArtifactCoordinatesConverter extends ResolvingConverter implements MavenDomSoftAwareConverter { public String fromString(@Nullable @NonNls String s, ConvertContext context) { if (s == null) return null; @@ -96,6 +97,28 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert return ArrayUtil.append(super.getQuickFixes(context), new MyUpdateIndicesFix()); } + public boolean isSoft(@NotNull DomElement element) { + DomElement dependencyOrPluginElement = element.getParent(); + if (dependencyOrPluginElement instanceof MavenDomDependency) { + DomElement dependencies = dependencyOrPluginElement.getParent(); + if (dependencies instanceof MavenDomDependencies) { + if (dependencies.getParent() instanceof MavenDomDependencyManagement) { + return true; + } + } + } + else if (dependencyOrPluginElement instanceof MavenDomPlugin) { + DomElement pluginsElement = dependencyOrPluginElement.getParent(); + if (pluginsElement instanceof MavenDomPlugins) { + if (pluginsElement.getParent() instanceof MavenDomPluginManagement) { + return true; + } + } + } + + return false; + } + private ConverterStrategy selectStrategy(ConvertContext context) { if (MavenDomUtil.getImmediateParent(context, MavenDomProjectModel.class) != null) { return new ProjectStrategy(); diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDontCheckDependencyInManagementSectionTest.groovy b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDontCheckDependencyInManagementSectionTest.groovy new file mode 100644 index 000000000000..69c440369683 --- /dev/null +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDontCheckDependencyInManagementSectionTest.groovy @@ -0,0 +1,115 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.maven.dom + +/** + * @author Sergey Evdokimov + */ +class MavenDontCheckDependencyInManagementSectionTest extends MavenDomTestCase { + + public void testHighlighting() { + importProject(""" +test +m1 +1 + + + + xxxx + yyyy + zzzz + + + + + + + xxxx + yyyy + zzzz + + + + + + + + xxxx + yyyy + zzzz + + + + + + + xxxx + yyyy + zzzz + + + + +""") + + createProjectPom(""" +test +m1 +1 + + + + xxxx + yyyy + zzzz + + + + + + + xxxx + yyyy + zzzz + + + + + + + + xxxx + yyyy + zzzz + + + + + + + xxxx + yyyy + zzzz + + + + +""") + + checkHighlighting(myProjectPom, true, false, true) + } + +}