summaryrefslogtreecommitdiff
path: root/plugins/maven
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-04-03 16:27:26 -0700
committerTor Norbye <tnorbye@google.com>2013-04-03 16:27:26 -0700
commitd1a59a0799588a226d255d9b45c4825b19651554 (patch)
treec9759b94ddad742db08b6662f52a62e0401491c1 /plugins/maven
parent2bd2b7c2623d4266384e890271869efc044aabff (diff)
downloadidea-d1a59a0799588a226d255d9b45c4825b19651554.tar.gz
Snapshot dc7fe9a777db5bc87a5b1ad4bfe40a547fc7d49a from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: Iae1c655b8958fc7603a78c675e4a4b942a1fccd4
Diffstat (limited to 'plugins/maven')
-rw-r--r--plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java38
-rw-r--r--plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesConverter.java42
-rw-r--r--plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java4
-rw-r--r--plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencyCompletionAndResolutionTest.java28
4 files changed, 83 insertions, 29 deletions
diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java
index a3b3cd35e410..246897a2cb53 100644
--- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java
+++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java
@@ -315,27 +315,25 @@ public class MavenDomProjectProcessorUtils {
SearchProcessor<MavenDomDependency, MavenDomDependencies> processor = new SearchProcessor<MavenDomDependency, MavenDomDependencies>() {
@Override
protected MavenDomDependency find(MavenDomDependencies mavenDomDependencies) {
- if (!model.equals(mavenDomDependencies.getParentOfType(MavenDomProjectModel.class, true))) {
- for (MavenDomDependency domDependency : mavenDomDependencies.getDependencies()) {
- if (artifactId.equals(domDependency.getArtifactId().getStringValue()) &&
- groupId.equals(domDependency.getGroupId().getStringValue())) {
- return domDependency;
- }
+ for (MavenDomDependency domDependency : mavenDomDependencies.getDependencies()) {
+ if (artifactId.equals(domDependency.getArtifactId().getStringValue()) &&
+ groupId.equals(domDependency.getGroupId().getStringValue())) {
+ return domDependency;
+ }
- if ("import".equals(domDependency.getScope().getRawText())) {
- GenericDomValue<String> version = domDependency.getVersion();
- if (version.getXmlElement() != null) {
- GenericDomValueReference reference = new GenericDomValueReference(version);
- PsiElement resolve = reference.resolve();
-
- if (resolve instanceof XmlFile) {
- MavenDomProjectModel dependModel = MavenDomUtil.getMavenDomModel((PsiFile)resolve, MavenDomProjectModel.class);
- if (dependModel != null) {
- for (MavenDomDependency dep : dependModel.getDependencyManagement().getDependencies().getDependencies()) {
- if (artifactId.equals(dep.getArtifactId().getStringValue()) &&
- groupId.equals(dep.getGroupId().getStringValue())) {
- return domDependency;
- }
+ if ("import".equals(domDependency.getScope().getRawText())) {
+ GenericDomValue<String> version = domDependency.getVersion();
+ if (version.getXmlElement() != null) {
+ GenericDomValueReference reference = new GenericDomValueReference(version);
+ PsiElement resolve = reference.resolve();
+
+ if (resolve instanceof XmlFile) {
+ MavenDomProjectModel dependModel = MavenDomUtil.getMavenDomModel((PsiFile)resolve, MavenDomProjectModel.class);
+ if (dependModel != null) {
+ for (MavenDomDependency dep : dependModel.getDependencyManagement().getDependencies().getDependencies()) {
+ if (artifactId.equals(dep.getArtifactId().getStringValue()) &&
+ groupId.equals(dep.getGroupId().getStringValue())) {
+ return domDependency;
}
}
}
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 6e2b13848646..1c835789d6de 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
@@ -18,6 +18,8 @@ package org.jetbrains.idea.maven.dom.converters;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Computable;
+import com.intellij.openapi.util.RecursionManager;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
@@ -25,15 +27,14 @@ import com.intellij.psi.PsiElement;
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 com.intellij.util.xml.*;
+import com.intellij.util.xml.impl.GenericDomValueReference;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.dom.MavenDomBundle;
+import org.jetbrains.idea.maven.dom.MavenDomProjectProcessorUtils;
import org.jetbrains.idea.maven.dom.MavenDomUtil;
import org.jetbrains.idea.maven.dom.model.*;
import org.jetbrains.idea.maven.indices.MavenProjectIndicesManager;
@@ -79,7 +80,7 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert
Project p = getProject(context);
MavenId id = MavenArtifactCoordinatesHelper.getId(context);
- PsiFile result = selectStrategy(context).resolve(p, id);
+ PsiFile result = selectStrategy(context).resolve(p, id, context);
return result != null ? result : super.resolve(o, context);
}
@@ -178,7 +179,7 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert
return doGetVariants(id, manager);
}
- public PsiFile resolve(Project project, MavenId id) {
+ public PsiFile resolve(Project project, MavenId id, ConvertContext context) {
MavenProjectsManager projectsManager = MavenProjectsManager.getInstance(project);
PsiManager psiManager = PsiManager.getInstance(project);
@@ -224,7 +225,7 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert
private class ProjectStrategy extends ConverterStrategy {
@Override
- public PsiFile resolve(Project project, MavenId id) {
+ public PsiFile resolve(Project project, MavenId id, ConvertContext context) {
return null;
}
@@ -265,6 +266,31 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert
}
@Override
+ public PsiFile resolve(Project project, MavenId id, ConvertContext context) {
+ if (id.getVersion() == null && id.getGroupId() != null && id.getArtifactId() != null) {
+ DomElement parent = context.getInvocationElement().getParent();
+ if (parent instanceof MavenDomDependency) {
+ MavenDomDependency managedDependency = MavenDomProjectProcessorUtils.searchManagingDependency((MavenDomDependency)parent);
+ if (managedDependency != null && !"import".equals(managedDependency.getScope().getStringValue())) {
+ final GenericDomValue<String> managedDependencyArtifactId = managedDependency.getArtifactId();
+ PsiElement res = RecursionManager.doPreventingRecursion(managedDependencyArtifactId, false, new Computable<PsiElement>() {
+ @Override
+ public PsiElement compute() {
+ return new GenericDomValueReference(managedDependencyArtifactId).resolve();
+ }
+ });
+
+ if (res instanceof PsiFile) {
+ return (PsiFile)res;
+ }
+ }
+ }
+ }
+
+ return super.resolve(project, id, context);
+ }
+
+ @Override
public PsiFile resolveBySpecifiedPath() {
return myDependency.getSystemPath().getValue();
}
@@ -287,7 +313,7 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert
private class ExclusionStrategy extends ConverterStrategy {
@Override
- public PsiFile resolve(Project project, MavenId id) {
+ public PsiFile resolve(Project project, MavenId id, ConvertContext context) {
return null;
}
diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java
index 5fbef78c3498..4e3cf1854652 100644
--- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java
+++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java
@@ -347,7 +347,9 @@ public class RepositoryAttachHandler {
private static List<MavenRemoteRepository> convertRepositories(Collection<MavenRepositoryInfo> infos) {
List<MavenRemoteRepository> result = new ArrayList<MavenRemoteRepository>(infos.size());
for (MavenRepositoryInfo each : infos) {
- result.add(new MavenRemoteRepository(each.getId(), each.getName(), each.getUrl(), null, null, null));
+ if (each.getUrl() != null) {
+ result.add(new MavenRemoteRepository(each.getId(), each.getName(), each.getUrl(), null, null, null));
+ }
}
return result;
}
diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencyCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencyCompletionAndResolutionTest.java
index 48e8b72fcf83..9d7365241feb 100644
--- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencyCompletionAndResolutionTest.java
+++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencyCompletionAndResolutionTest.java
@@ -29,6 +29,7 @@ import org.jetbrains.idea.maven.dom.intentions.ChooseFileIntentionAction;
import org.jetbrains.idea.maven.dom.model.MavenDomDependency;
import org.jetbrains.idea.maven.dom.model.MavenDomProjectModel;
+import java.io.File;
import java.util.Arrays;
import java.util.List;
@@ -414,6 +415,33 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
assertResolved(myProjectPom, findPsiFile(f));
}
+ public void testResolveManagedDependency() throws Exception {
+ importProject("<groupId>test</groupId>" +
+ "<artifactId>project</artifactId>" +
+ "<version>1</version>" +
+
+ "<dependencyManagement>" +
+ " <dependencies>" +
+ " <dependency>" +
+ " <groupId>junit</groupId>" +
+ " <artifactId>junit</artifactId>" +
+ " <version>4.0</version>" +
+ " </dependency>" +
+ " </dependencies>" +
+ "</dependencyManagement>" +
+
+ "<dependencies>" +
+ " <dependency>" +
+ " <groupId>junit</groupId>" +
+ " <artifactId>junit<caret></artifactId>" +
+ " </dependency>" +
+ "</dependencies>");
+
+ String filePath = myIndicesFixture.getRepositoryHelper().getTestDataPath("local1/junit/junit/4.0/junit-4.0.pom");
+ VirtualFile f = LocalFileSystem.getInstance().refreshAndFindFileByPath(filePath);
+ assertResolved(myProjectPom, findPsiFile(f));
+ }
+
public void testResolutionIsTypeBased() throws Exception {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +