diff --git a/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32AetherModelConverter.java b/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32AetherModelConverter.java index af472f69e778..6bc210828c46 100644 --- a/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32AetherModelConverter.java +++ b/plugins/maven/maven32-server-impl/src/org/jetbrains/idea/maven/server/Maven32AetherModelConverter.java @@ -60,8 +60,8 @@ public class Maven32AetherModelConverter extends MavenModelConverter { Map convertedArtifacts = new THashMap(); result.setExtensions(convertArtifacts(extensions, convertedArtifacts, localRepository)); - result.setDependencies(convertArtifacts(dependencies, convertedArtifacts, localRepository)); result.setDependencyTree(convertAetherDependencyNodes(null, dependencyTree, convertedArtifacts, localRepository)); + result.setDependencies(convertArtifacts(dependencies, convertedArtifacts, localRepository)); result.setRemoteRepositories(convertRepositories(model.getRepositories())); result.setProfiles(convertProfiles(model.getProfiles())); @@ -88,19 +88,24 @@ public class Maven32AetherModelConverter extends MavenModelConverter { MavenArtifactState state = MavenArtifactState.ADDED; MavenArtifact relatedArtifact = null; + String scope = each.getDependency().getScope(); Object winner = data.get(ConflictResolver.NODE_DATA_WINNER); - if(winner instanceof DependencyNode) { + if (winner instanceof DependencyNode) { DependencyNode winnerNode = (DependencyNode)winner; - if(!StringUtil.equals(each.getVersion().toString(), winnerNode.getVersion().toString())) { + scope = winnerNode.getDependency().getScope(); + Artifact winnerArtifact = RepositoryUtils.toArtifact(winnerNode.getDependency().getArtifact()); + relatedArtifact = convertArtifact(winnerArtifact, nativeToConvertedMap, localRepository); + if (!StringUtil.equals(each.getVersion().toString(), winnerNode.getVersion().toString())) { state = MavenArtifactState.CONFLICT; - Artifact winnerArtifact = RepositoryUtils.toArtifact(winnerNode.getDependency().getArtifact()); - relatedArtifact = convertArtifact(winnerArtifact, nativeToConvertedMap, localRepository); + } + else { + state = MavenArtifactState.DUPLICATE; } } - MavenArtifactNode newNode = new MavenArtifactNode( - parent, ma, state, relatedArtifact, each.getDependency().getScope(), - premanagedVersion, premanagedScope); + ma.setScope(scope); + MavenArtifactNode newNode = + new MavenArtifactNode(parent, ma, state, relatedArtifact, each.getDependency().getScope(), premanagedVersion, premanagedScope); newNode.setDependencies(convertAetherDependencyNodes(newNode, each.getChildren(), nativeToConvertedMap, localRepository)); result.add(newNode); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsStructure.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsStructure.java index c94ca919edf9..add37a073d5b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsStructure.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsStructure.java @@ -955,7 +955,8 @@ public class MavenProjectsStructure extends SimpleTreeStructure { protected void setNameAndTooltip(String name, @Nullable String tooltip, SimpleTextAttributes attributes) { super.setNameAndTooltip(name, tooltip, attributes); if (myProjectsNavigator.getShowVersions()) { - addColoredFragment(":" + myMavenProject.getMavenId().getVersion(), new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, JBColor.GRAY)); + addColoredFragment(":" + myMavenProject.getMavenId().getVersion(), + new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, JBColor.GRAY)); } } @@ -1278,7 +1279,11 @@ public class MavenProjectsStructure extends SimpleTreeStructure { int validChildCount = 0; for (MavenArtifactNode each : children) { - if (each.getState() != MavenArtifactState.ADDED && each.getState() != MavenArtifactState.CONFLICT) continue; + if (each.getState() != MavenArtifactState.ADDED && + each.getState() != MavenArtifactState.CONFLICT && + each.getState() != MavenArtifactState.DUPLICATE) { + continue; + } if (newNodes == null) { if (validChildCount < myChildren.size()) { @@ -1375,7 +1380,7 @@ public class MavenProjectsStructure extends SimpleTreeStructure { private String getToolTip() { final StringBuilder myToolTip = new StringBuilder(""); - String scope = myArtifact.getScope(); + String scope = myArtifactNode.getOriginalScope(); if (StringUtil.isNotEmpty(scope) && !MavenConstants.SCOPE_COMPILE.equals(scope)) { myToolTip.append(scope).append(" "); @@ -1386,7 +1391,10 @@ public class MavenProjectsStructure extends SimpleTreeStructure { myToolTip.append(" with ").append(myArtifactNode.getRelatedArtifact().getVersion()); } } - return myToolTip.toString(); + if (myArtifactNode.getState() == MavenArtifactState.DUPLICATE) { + myToolTip.append("omitted for duplicate"); + } + return myToolTip.toString().trim(); } @Override @@ -1394,6 +1402,17 @@ public class MavenProjectsStructure extends SimpleTreeStructure { setNameAndTooltip(getName(), null, getToolTip()); } + @Override + protected void setNameAndTooltip(String name, @Nullable String tooltip, SimpleTextAttributes attributes) { + final SimpleTextAttributes mergedAttributes; + if (myArtifactNode.getState() == MavenArtifactState.CONFLICT || myArtifactNode.getState() == MavenArtifactState.DUPLICATE) { + mergedAttributes = SimpleTextAttributes.merge(attributes, SimpleTextAttributes.GRAYED_ATTRIBUTES); + } else { + mergedAttributes = attributes; + } + super.setNameAndTooltip(name, tooltip, mergedAttributes); + } + private void updateDependency() { setErrorLevel(myArtifact.isResolved() ? ErrorLevel.NONE : ErrorLevel.ERROR); }