From ecf0ebe9373f8262ed17cb2adf474a72ee3aeddb Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 17 Oct 2013 15:25:45 +0400 Subject: [PATCH] IDEA-113936 Dependency autocompletion causes confusing behaviour when editing POMs --- ...rtifactCoordinatesArtifactIdConverter.java | 92 +++++ .../MavenArtifactCoordinatesConverter.java | 10 +- ...enArtifactCoordinatesGroupIdConverter.java | 50 +++ .../MavenDependencyCompletionUtil.java | 112 ++++++ .../MavenDomShortArtifactCoordinates.java | 3 +- .../MavenDependenciesCompletionProvider.java | 38 +-- ...omXmlCompletionTagListenerContributor.java | 8 +- .../MavenSmartCompletionContributor.java | 27 +- .../local1/asm/asm/3.3.1/_maven.repositories | 6 + .../data/local1/asm/asm/3.3.1/asm-3.3.1.jar | Bin 0 -> 633 bytes .../local1/asm/asm/3.3.1/asm-3.3.1.jar.sha1 | 1 + .../data/local1/asm/asm/3.3.1/asm-3.3.1.pom | 14 + .../local1/asm/asm/3.3.1/asm-3.3.1.pom.sha1 | 1 + .../local1/asm/asm/3.3/_maven.repositories | 4 + .../test/data/local1/asm/asm/3.3/asm-3.3.jar | Bin 0 -> 630 bytes .../data/local1/asm/asm/3.3/asm-3.3.jar.sha1 | 1 + .../test/data/local1/asm/asm/3.3/asm-3.3.pom | 14 + .../data/local1/asm/asm/3.3/asm-3.3.pom.sha1 | 1 + .../commons-io/2.4/commons-io-2.4.jar | Bin 0 -> 17479 bytes .../commons-io/2.4/commons-io-2.4.jar.sha1 | 1 + .../commons-io/2.4/commons-io-2.4.pom | 323 ++++++++++++++++++ .../commons-io/2.4/commons-io-2.4.pom.sha1 | 1 + .../org/ow2/asm/asm/4.1/_maven.repositories | 4 + .../local1/org/ow2/asm/asm/4.1/asm-4.1.jar | Bin 0 -> 1068 bytes .../org/ow2/asm/asm/4.1/asm-4.1.jar.sha1 | 1 + .../local1/org/ow2/asm/asm/4.1/asm-4.1.pom | 44 +++ .../org/ow2/asm/asm/4.1/asm-4.1.pom.sha1 | 1 + .../maven/src/test/data/local1_index/_2.cfs | Bin 4145 -> 0 bytes .../maven/src/test/data/local1_index/_7.cfs | Bin 0 -> 11037 bytes .../src/test/data/local1_index/segments.gen | Bin 20 -> 20 bytes .../src/test/data/local1_index/segments_3 | Bin 45 -> 0 bytes .../src/test/data/local1_index/segments_8 | Bin 0 -> 58 bytes .../src/test/data/local1_index/timestamp | Bin 8 -> 12 bytes ...DependencyCompletionAndResolutionTest.java | 16 +- .../MavenDependencySmartCompletionTest.java | 320 +++++++++++++++++ ...avenParentCompletionAndResolutionTest.java | 4 +- ...avenPluginCompletionAndResolutionTest.java | 2 +- .../idea/maven/indices/MavenIndicesTest.java | 24 +- .../idea/maven/indices/MavenSearcherTest.java | 5 +- 39 files changed, 1047 insertions(+), 81 deletions(-) create mode 100644 plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenDependencyCompletionUtil.java create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3.1/_maven.repositories create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar.sha1 create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom.sha1 create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3/_maven.repositories create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar.sha1 create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom create mode 100644 plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom.sha1 create mode 100644 plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar create mode 100644 plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar.sha1 create mode 100644 plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom create mode 100644 plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom.sha1 create mode 100644 plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/_maven.repositories create mode 100644 plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar create mode 100644 plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar.sha1 create mode 100644 plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom create mode 100644 plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom.sha1 delete mode 100644 plugins/maven/src/test/data/local1_index/_2.cfs create mode 100644 plugins/maven/src/test/data/local1_index/_7.cfs delete mode 100644 plugins/maven/src/test/data/local1_index/segments_3 create mode 100644 plugins/maven/src/test/data/local1_index/segments_8 diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesArtifactIdConverter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesArtifactIdConverter.java index b2ba34dd8ddf..cac162a388e5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesArtifactIdConverter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesArtifactIdConverter.java @@ -15,8 +15,24 @@ */ package org.jetbrains.idea.maven.dom.converters; +import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.codeInsight.completion.InsertHandler; +import com.intellij.codeInsight.completion.InsertionContext; +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; import com.intellij.util.xml.ConvertContext; +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.model.MavenDomArtifactCoordinates; +import org.jetbrains.idea.maven.dom.model.MavenDomDependency; import org.jetbrains.idea.maven.indices.MavenProjectIndicesManager; import org.jetbrains.idea.maven.model.MavenArtifact; import org.jetbrains.idea.maven.model.MavenId; @@ -46,9 +62,85 @@ public class MavenArtifactCoordinatesArtifactIdConverter extends MavenArtifactCo return false; } + @Nullable + @Override + public LookupElement createLookupElement(String s) { + LookupElementBuilder res = LookupElementBuilder.create(s); + res = res.withInsertHandler(MavenArtifactInsertHandler.INSTANCE); + return res; + } + @Override protected Set doGetVariants(MavenId id, MavenProjectIndicesManager manager) { if (StringUtil.isEmptyOrSpaces(id.getGroupId())) return Collections.emptySet(); return manager.getArtifactIds(id.getGroupId()); } + + private static class MavenArtifactInsertHandler implements InsertHandler { + + public static final InsertHandler INSTANCE = new MavenArtifactInsertHandler(); + + @Override + public void handleInsert(final InsertionContext context, LookupElement item) { + context.commitDocument(); + + XmlFile xmlFile = (XmlFile)context.getFile(); + + PsiElement element = xmlFile.findElementAt(context.getStartOffset()); + XmlTag tag = PsiTreeUtil.getParentOfType(element, XmlTag.class); + if (tag == null) return; + + XmlTag dependencyTag = tag.getParentTag(); + + DomElement domElement = DomManager.getDomManager(context.getProject()).getDomElement(dependencyTag); + if (!(domElement instanceof MavenDomDependency)) return; + + MavenDomArtifactCoordinates dependency = (MavenDomArtifactCoordinates)domElement; + + String artifactId = item.getLookupString(); + + String groupId = dependency.getGroupId().getStringValue(); + if (StringUtil.isEmpty(groupId)) { + String g = getUniqueGroupIdOrNull(context.getProject(), artifactId); + if (g != null) { + dependency.getGroupId().setStringValue(g); + groupId = g; + } + else { + if (groupId == null) { + dependency.getGroupId().setStringValue(""); + } + + XmlTag groupIdTag = dependency.getGroupId().getXmlTag(); + context.getEditor().getCaretModel().moveToOffset(groupIdTag.getValue().getTextRange().getStartOffset()); + + MavenDependencyCompletionUtil.invokeCompletion(context, CompletionType.SMART); + + return; + } + } + + MavenDependencyCompletionUtil.completeVersion(context, dependency, groupId, artifactId); + } + + private static String getUniqueGroupIdOrNull(@NotNull Project project, @NotNull String artifactId) { + MavenProjectIndicesManager manager = MavenProjectIndicesManager.getInstance(project); + + String res = null; + + for (String groupId : manager.getGroupIds()) { + if (manager.getArtifactIds(groupId).contains(artifactId)) { + if (res == null) { + res = groupId; + } + else { + return null; // There are more then one appropriate groupId. + } + } + } + + return res; + } + } + } 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 3301e63e3699..4ef73ee0952b 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 @@ -315,12 +315,12 @@ public abstract class MavenArtifactCoordinatesConverter extends ResolvingConvert public Set getVariants(MavenId id, MavenProjectIndicesManager manager, MavenDomShortArtifactCoordinates coordinates) { if (StringUtil.isEmpty(id.getGroupId())) { Set result = new THashSet(); - if (DomUtil.hasXml(coordinates.getGroupId())) { - for (String each : manager.getGroupIds()) { - id = new MavenId(each, id.getArtifactId(), id.getVersion()); - result.addAll(super.getVariants(id, manager, coordinates)); - } + + for (String each : manager.getGroupIds()) { + id = new MavenId(each, id.getArtifactId(), id.getVersion()); + result.addAll(super.getVariants(id, manager, coordinates)); } + return result; } return super.getVariants(id, manager, coordinates); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesGroupIdConverter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesGroupIdConverter.java index 17874ffeba0f..5cffc360a0d0 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesGroupIdConverter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenArtifactCoordinatesGroupIdConverter.java @@ -1,8 +1,21 @@ package org.jetbrains.idea.maven.dom.converters; +import com.intellij.codeInsight.completion.InsertHandler; +import com.intellij.codeInsight.completion.InsertionContext; +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.xml.XmlFile; +import com.intellij.psi.xml.XmlTag; import com.intellij.util.containers.hash.HashSet; import com.intellij.util.xml.ConvertContext; +import com.intellij.util.xml.DomElement; +import com.intellij.util.xml.DomManager; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.idea.maven.dom.model.MavenDomArtifactCoordinates; +import org.jetbrains.idea.maven.dom.model.MavenDomDependency; import org.jetbrains.idea.maven.indices.MavenProjectIndicesManager; import org.jetbrains.idea.maven.model.MavenArtifact; import org.jetbrains.idea.maven.model.MavenId; @@ -36,6 +49,14 @@ public class MavenArtifactCoordinatesGroupIdConverter extends MavenArtifactCoord return manager.getGroupIds(); } + @Nullable + @Override + public LookupElement createLookupElement(String s) { + LookupElementBuilder res = LookupElementBuilder.create(s); + res = res.withInsertHandler(MavenGroupIdInsertHandler.INSTANCE); + return res; + } + @Override public Collection getSmartVariants(ConvertContext convertContext) { Set groupIds = new HashSet(); @@ -50,4 +71,33 @@ public class MavenArtifactCoordinatesGroupIdConverter extends MavenArtifactCoord } return groupIds; } + + private static class MavenGroupIdInsertHandler implements InsertHandler { + + public static final InsertHandler INSTANCE = new MavenGroupIdInsertHandler(); + + @Override + public void handleInsert(final InsertionContext context, LookupElement item) { + context.commitDocument(); + + XmlFile xmlFile = (XmlFile)context.getFile(); + + PsiElement element = xmlFile.findElementAt(context.getStartOffset()); + XmlTag tag = PsiTreeUtil.getParentOfType(element, XmlTag.class); + if (tag == null) return; + + XmlTag dependencyTag = tag.getParentTag(); + + DomElement domElement = DomManager.getDomManager(context.getProject()).getDomElement(dependencyTag); + if (!(domElement instanceof MavenDomDependency)) return; + + MavenDomArtifactCoordinates dependency = (MavenDomArtifactCoordinates)domElement; + + String artifactId = dependency.getArtifactId().getStringValue(); + if (StringUtil.isEmpty(artifactId)) return; + + MavenDependencyCompletionUtil.completeVersion(context, dependency, item.getLookupString(), artifactId); + } + } + } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenDependencyCompletionUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenDependencyCompletionUtil.java new file mode 100644 index 000000000000..81066993f42e --- /dev/null +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/converters/MavenDependencyCompletionUtil.java @@ -0,0 +1,112 @@ +/* + * 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.converters; + +import com.intellij.codeInsight.completion.CodeCompletionHandlerBase; +import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.codeInsight.completion.InsertionContext; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Ref; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.util.Processor; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.xml.DomElement; +import com.intellij.util.xml.DomUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.idea.maven.dom.MavenDomProjectProcessorUtils; +import org.jetbrains.idea.maven.dom.model.*; +import org.jetbrains.idea.maven.indices.MavenProjectIndicesManager; + +import java.util.Set; + +/** + * @author Sergey Evdokimov + */ +public class MavenDependencyCompletionUtil { + + public static MavenDomDependency findManagedDependency(MavenDomProjectModel domModel, Project project, + @NotNull final String groupId, @NotNull final String artifactId) { + + final Ref ref = new Ref(); + + MavenDomProjectProcessorUtils.processDependenciesInDependencyManagement(domModel, + new Processor() { + @Override + public boolean process(MavenDomDependency dependency) { + if (groupId.equals(dependency.getGroupId().getStringValue()) + && + artifactId.equals( + dependency.getArtifactId().getStringValue())) { + ref.set(dependency); + return true; + } + return false; + } + }, project); + + return ref.get(); + } + + private static boolean isInsideManagedDependency(MavenDomArtifactCoordinates dependency) { + DomElement parent = dependency.getParent(); + if (!(parent instanceof MavenDomDependencies)) return false; + + return parent.getParent() instanceof MavenDomDependencyManagement; + } + + public static void completeVersion(@NotNull InsertionContext context, + @NotNull MavenDomArtifactCoordinates dependency, + @NotNull String groupId, @NotNull String artifactId) { + if (!StringUtil.isEmpty(dependency.getVersion().getStringValue())) return; + + Project project = context.getProject(); + + if (!isInsideManagedDependency(dependency)) { + MavenDomProjectModel model = DomUtil.getFileElement(dependency).getRootElement(); + if (findManagedDependency(model, project, groupId, artifactId) != null) { + return; + } + } + + MavenProjectIndicesManager manager = MavenProjectIndicesManager.getInstance(project); + + Set versions = manager.getVersions(groupId, artifactId); + if (versions.size() == 1) { + dependency.getVersion().setStringValue(ContainerUtil.getFirstItem(versions)); + return; + } + + dependency.getVersion().setStringValue(""); + + int versionPosition = dependency.getVersion().getXmlTag().getValue().getTextRange().getStartOffset(); + + context.getEditor().getCaretModel().moveToOffset(versionPosition); + + if (versions.size() > 0) { + invokeCompletion(context, CompletionType.BASIC); + } + } + + public static void invokeCompletion(@NotNull final InsertionContext context, final CompletionType completionType) { + context.setLaterRunnable(new Runnable() { + @Override + public void run() { + new CodeCompletionHandlerBase(completionType).invokeCompletion(context.getProject(), context.getEditor()); + } + }); + } + +} diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/MavenDomShortArtifactCoordinates.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/MavenDomShortArtifactCoordinates.java index f75b3d447c59..ed0aa1e51cfd 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/MavenDomShortArtifactCoordinates.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/MavenDomShortArtifactCoordinates.java @@ -17,12 +17,13 @@ package org.jetbrains.idea.maven.dom.model; import com.intellij.spellchecker.xml.NoSpellchecking; import com.intellij.util.xml.Convert; +import com.intellij.util.xml.DomElement; import com.intellij.util.xml.GenericDomValue; import com.intellij.util.xml.Required; import org.jetbrains.idea.maven.dom.converters.MavenArtifactCoordinatesArtifactIdConverter; import org.jetbrains.idea.maven.dom.converters.MavenArtifactCoordinatesGroupIdConverter; -public interface MavenDomShortArtifactCoordinates { +public interface MavenDomShortArtifactCoordinates extends DomElement { @Required @NoSpellchecking @Convert(MavenArtifactCoordinatesGroupIdConverter.class) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenDependenciesCompletionProvider.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenDependenciesCompletionProvider.java index 21d35fa07485..ac212bd9bb57 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenDependenciesCompletionProvider.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenDependenciesCompletionProvider.java @@ -6,7 +6,6 @@ import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.icons.AllIcons; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -15,12 +14,10 @@ import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.psi.xml.XmlText; import com.intellij.psi.xml.XmlTokenType; -import com.intellij.util.Processor; import com.intellij.util.xml.DomElement; import com.intellij.util.xml.DomFileElement; import com.intellij.util.xml.DomManager; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.idea.maven.dom.MavenDomProjectProcessorUtils; +import org.jetbrains.idea.maven.dom.converters.MavenDependencyCompletionUtil; import org.jetbrains.idea.maven.dom.model.MavenDomDependency; import org.jetbrains.idea.maven.dom.model.MavenDomProjectModel; import org.jetbrains.idea.maven.indices.MavenProjectIndicesManager; @@ -67,29 +64,6 @@ public class MavenDependenciesCompletionProvider extends CompletionContributor { } } - private static MavenDomDependency findManagedDependency(MavenDomProjectModel domModel, Project project, - @NotNull final String groupId, @NotNull final String artifactId) { - - final Ref ref = new Ref(); - - MavenDomProjectProcessorUtils.processDependenciesInDependencyManagement(domModel, - new Processor() { - @Override - public boolean process(MavenDomDependency dependency) { - if (groupId.equals(dependency.getGroupId().getStringValue()) - && - artifactId.equals( - dependency.getArtifactId().getStringValue())) { - ref.set(dependency); - return false; - } - return true; - } - }, project); - - return ref.get(); - } - private static class MavenDependencyInsertHandler implements InsertHandler { public static final InsertHandler INSTANCE = new MavenDependencyInsertHandler(); @@ -111,7 +85,8 @@ public class MavenDependenciesCompletionProvider extends CompletionContributor { boolean shouldInvokeCompletion = false; - MavenDomDependency managedDependency = findManagedDependency(domModel.getRootElement(), context.getProject(), groupId, artifactId); + MavenDomDependency managedDependency = MavenDependencyCompletionUtil.findManagedDependency(domModel.getRootElement(), + context.getProject(), groupId, artifactId); if (managedDependency == null) { String value = "" + groupId + "\n" + "" + artifactId + "\n" + @@ -153,12 +128,7 @@ public class MavenDependenciesCompletionProvider extends CompletionContributor { } if (shouldInvokeCompletion) { - context.setLaterRunnable(new Runnable() { - @Override - public void run() { - new CodeCompletionHandlerBase(CompletionType.BASIC).invokeCompletion(context.getProject(), context.getEditor()); - } - }); + MavenDependencyCompletionUtil.invokeCompletion(context, CompletionType.BASIC); } } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenPomXmlCompletionTagListenerContributor.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenPomXmlCompletionTagListenerContributor.java index 2a02adbabc0e..f62c67c1d649 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenPomXmlCompletionTagListenerContributor.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenPomXmlCompletionTagListenerContributor.java @@ -17,6 +17,7 @@ import com.intellij.util.xml.DomFileDescription; import com.intellij.util.xml.DomManager; import org.jetbrains.idea.maven.dom.MavenDomProjectModelDescription; import org.jetbrains.idea.maven.dom.MavenDomUtil; +import org.jetbrains.idea.maven.dom.converters.MavenDependencyCompletionUtil; import org.jetbrains.idea.maven.dom.model.MavenDomDependency; import java.util.Set; @@ -71,12 +72,7 @@ public class MavenPomXmlCompletionTagListenerContributor extends CompletionContr new ReformatCodeProcessor(context.getProject(), context.getFile(), xmlTag.getTextRange(), true).run(); - context.setLaterRunnable(new Runnable() { - @Override - public void run() { - new CodeCompletionHandlerBase(CompletionType.BASIC).invokeCompletion(context.getProject(), context.getEditor()); - } - }); + MavenDependencyCompletionUtil.invokeCompletion(context, CompletionType.BASIC); } } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java index e4b1c51c854b..f56ec2685bd3 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java @@ -20,8 +20,7 @@ import com.intellij.codeInsight.completion.CompletionContributor; import com.intellij.codeInsight.completion.CompletionParameters; import com.intellij.codeInsight.completion.CompletionResultSet; import com.intellij.codeInsight.completion.CompletionType; -import com.intellij.openapi.application.AccessToken; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.impl.source.xml.TagNameReference; @@ -63,11 +62,19 @@ public class MavenSmartCompletionContributor extends CompletionContributor { Converter converter = reference.getConverter(); if (converter instanceof MavenSmartConverter) { - result.addAll(((MavenSmartConverter)converter).getSmartVariants(reference.getConvertContext())); + Collection variants = ((MavenSmartConverter)converter).getSmartVariants(reference.getConvertContext()); + if (converter instanceof ResolvingConverter) { + addVariants((ResolvingConverter)converter, variants, result); + } + else { + result.addAll(variants); + } } else if (converter instanceof ResolvingConverter) { //noinspection unchecked - result.addAll(((ResolvingConverter)converter).getVariants(reference.getConvertContext())); + ResolvingConverter resolvingConverter = (ResolvingConverter)converter; + Collection variants = resolvingConverter.getVariants(reference.getConvertContext()); + addVariants(resolvingConverter, variants, result); } } else { @@ -78,6 +85,18 @@ public class MavenSmartCompletionContributor extends CompletionContributor { return result; } + private static void addVariants(ResolvingConverter converter, Collection variants, Collection result) { + for (T variant : variants) { + LookupElement lookupElement = converter.createLookupElement(variant); + if (lookupElement != null) { + result.add(lookupElement); + } + else { + result.add(variant); + } + } + } + @NotNull private static PsiReference[] getReferences(CompletionParameters parameters) { PsiElement psiElement = parameters.getPosition().getParent(); diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3.1/_maven.repositories b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/_maven.repositories new file mode 100644 index 000000000000..a29e8ae77799 --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/_maven.repositories @@ -0,0 +1,6 @@ +#NOTE: This is an internal implementation file, its format can be changed without prior notice. +#Fri Mar 01 18:02:46 MSK 2013 +asm-3.3.1.pom>remote-repos= +asm-3.3.1.jar>remote-repos= +asm-3.3.1.jar>central= +asm-3.3.1.pom>central= diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..9e4c1e6ccff8b96cbb27024dcd577494bfda0cc5 GIT binary patch literal 633 zcmWIWW@Zs#U|`^2xL%`eClp_&HyOw~55yo*U)K;vT~9wZeP2gEPdC@#5ItYF+}@2` zhYUnqzdQVU=)1_-=~k1+_Ej9RyKX$vGOSHnP^sxD^XvODSC-iGJLlZa+*ID<8Drq` zdS#oF);XzPN@v%cWmep*Q=VVTu|l{nY5$(@(JR+26*3P!w5wjI@=juD=<>i+omSpDVg=H3JmgE=dCFdj- z7fi`;bLPP~DT9PF`KI``YriT_1DKt2ud` zEmb;dbW%t+)I(y*ow}T7&m1FmoT=0P|3&w7%** z4D6cE$!qL$wC%y(TZiwpK0Z{+A-g4TO6>Wm8ye>5-e{A1)n=E~<{O|`%Mjqr$Rq-e sHSBQ-3<)HFEoRY8Ko3ZS_M<>1(ZL$v&B_MS$^?Wnf%GY0yf82T04G-I(*OVf literal 0 HcmV?d00001 diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar.sha1 b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar.sha1 new file mode 100644 index 000000000000..ffa8db63a5d8 --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.jar.sha1 @@ -0,0 +1 @@ +1d5f20b4ea675e6fab6ab79f1cd60ec268ddc015 diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom new file mode 100644 index 000000000000..4b4cea601f97 --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom @@ -0,0 +1,14 @@ + + 4.0.0 + + + asm-parent + asm + 3.3.1 + + + ASM Core + asm + jar + + diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom.sha1 b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom.sha1 new file mode 100644 index 000000000000..819f1114743a --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3.1/asm-3.3.1.pom.sha1 @@ -0,0 +1 @@ +bbcde0189656fa6cc671f27437432ac7e7f95673 diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3/_maven.repositories b/plugins/maven/src/test/data/local1/asm/asm/3.3/_maven.repositories new file mode 100644 index 000000000000..7097771b1f76 --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3/_maven.repositories @@ -0,0 +1,4 @@ +#NOTE: This is an internal implementation file, its format can be changed without prior notice. +#Mon Mar 25 15:17:33 MSK 2013 +asm-3.3.pom>remote-repos= +asm-3.3.jar>remote-repos= diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..c7930a29d9073664fe3ab78d75a07b8220fe3d16 GIT binary patch literal 630 zcmWIWW@Zs#U|`^2aCddHRcLzcJORi%3B({#U)K;vT~9wZeP2gEPdC@#5ItYF+}@2` zhYUnqzdQVU=)1_-Df{Ze=+G9v$ehCdm%_{^y*(dY*l#|WW7oW5%ka!i{63L)4Ai7o zv_^%^DgENQD{{8FQ=+TflX;tiUFH@F9bfvUyh!_9DDUfst_#+5D(Y%3_P;QBqV%~c zd+RSAkIxR6tB-D>0XIeQrc;6CsG`oMM0 z2B&>Mmv3fdV9*58`9YTcP>HzN>PJ^~Y#Q2yCWi*7c+7b= zTk_tS>g~UuawW9r9pq~BK4j4mRQDw3xa%3QC{-oC_K6{elUJAQzP9{r*TXX>>7f6+Z1^Rj;4lJ9f-FRXvywV~hD{e{#%R+j%e z1H0yP@*4XbZF{iy*5P}tj}Mh{$ZiRo5_^8?hK4!1H`?T0wb^C0`35M~G6Z-tGKqkr r40}WZLjnn4i&kV4umvPS`yn8c=wJ=-W@Q6uWdg#PK>9c^UKkhv8>-}Q literal 0 HcmV?d00001 diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar.sha1 b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar.sha1 new file mode 100644 index 000000000000..c09efaa38611 --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.jar.sha1 @@ -0,0 +1 @@ +fb0f302a91a376fd5cfe23167c419375e8fc9b8f diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom new file mode 100644 index 000000000000..9a857ba5344a --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom @@ -0,0 +1,14 @@ + + 4.0.0 + + + asm-parent + asm + 3.3 + + + ASM Core + asm + jar + + diff --git a/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom.sha1 b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom.sha1 new file mode 100644 index 000000000000..307ba96c5a51 --- /dev/null +++ b/plugins/maven/src/test/data/local1/asm/asm/3.3/asm-3.3.pom.sha1 @@ -0,0 +1 @@ +3a860b74b902e6f67fa389c336984792826025a1 diff --git a/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..1cd1525b25037a134aa58b5daa8d767811685911 GIT binary patch literal 17479 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 F{{WIO9a{hZ literal 0 HcmV?d00001 diff --git a/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar.sha1 b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar.sha1 new file mode 100644 index 000000000000..aa020ca3e172 --- /dev/null +++ b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.jar.sha1 @@ -0,0 +1 @@ +b1b6ea3b7e4aa4f492509a4952029cd8e48019ad ./commons-io-2.4.jar diff --git a/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom new file mode 100644 index 000000000000..99bdc7f87779 --- /dev/null +++ b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom @@ -0,0 +1,323 @@ + + + + + org.apache.commons + commons-parent + 25 + + 4.0.0 + commons-io + commons-io + 2.4 + Commons IO + + 2002 + +The Commons IO library contains utility classes, stream implementations, file filters, +file comparators, endian transformation classes, and much more. + + + http://commons.apache.org/io/ + + + jira + http://issues.apache.org/jira/browse/IO + + + + + apache.website + Apache Commons IO Site + ${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/${commons.componentid} + + + + + scm:svn:http://svn.apache.org/repos/asf/commons/proper/io/trunk + scm:svn:https://svn.apache.org/repos/asf/commons/proper/io/trunk + http://svn.apache.org/viewvc/commons/proper/io/trunk + + + + + Scott Sanders + sanders + sanders@apache.org + + + Java Developer + + + + dIon Gillard + dion + dion@apache.org + + + Java Developer + + + + Nicola Ken Barozzi + nicolaken + nicolaken@apache.org + + + Java Developer + + + + Henri Yandell + bayard + bayard@apache.org + + + Java Developer + + + + Stephen Colebourne + scolebourne + + + Java Developer + + 0 + + + Jeremias Maerki + jeremias + jeremias@apache.org + + + Java Developer + + +1 + + + Matthew Hawthorne + matth + matth@apache.org + + + Java Developer + + + + Martin Cooper + martinc + martinc@apache.org + + + Java Developer + + + + Rob Oxspring + roxspring + roxspring@apache.org + + + Java Developer + + + + Jochen Wiedmann + jochen + jochen.wiedmann@gmail.com + + + Niall Pemberton + niallp + + Java Developer + + + + Jukka Zitting + jukka + + Java Developer + + + + Gary Gregory + ggregory + ggregory@apache.org + http://www.garygregory.com + -5 + + + + + + Rahul Akolkar + + + Jason Anderson + + + Nathan Beyer + + + Emmanuel Bourg + + + Chris Eldredge + + + Magnus Grimsell + + + Jim Harrington + + + Thomas Ledoux + + + Andy Lehane + + + Marcelo Liberato + + + Alban Peignier + alban.peignier at free.fr + + + Ian Springer + + + Masato Tezuka + + + James Urie + + + Frank W. Zammetti + + + + + + junit + junit + 4.10 + test + + + + + 1.6 + 1.6 + io + RC1 + 2.4 + (requires JDK 1.6+) + 2.2 + (requires JDK 1.5+) + IO + 12310477 + + + org.apache.commons.io; + org.apache.commons.io.comparator; + org.apache.commons.io.filefilter; + org.apache.commons.io.input; + org.apache.commons.io.output;version=1.4.9999;-noimport:=true, + + org.apache.commons.io; + org.apache.commons.io.comparator; + org.apache.commons.io.filefilter; + org.apache.commons.io.input; + org.apache.commons.io.output; + org.apache.commons.io.*;version=${project.version};-noimport:=true + + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + pertest + + -Xmx25M + + + **/*Test*.class + + + **/*AbstractTestCase* + **/testtools/** + + **/*$* + + + + + maven-assembly-plugin + + + src/main/assembly/bin.xml + src/main/assembly/src.xml + + gnu + + + + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 2.9.1 + + ${basedir}/checkstyle.xml + false + + + + org.codehaus.mojo + findbugs-maven-plugin + 2.4.0 + + Normal + Default + ${basedir}/findbugs-exclude-filter.xml + + + + org.apache.rat + apache-rat-plugin + + + src/test/resources/**/*.bin + .pmd + + + + + + diff --git a/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom.sha1 b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom.sha1 new file mode 100644 index 000000000000..1dce7443d4f9 --- /dev/null +++ b/plugins/maven/src/test/data/local1/commons-io/commons-io/2.4/commons-io-2.4.pom.sha1 @@ -0,0 +1 @@ +9ece23effe8bce3904f3797a76b1ba6ab681e1b9 ./commons-io-2.4.pom diff --git a/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/_maven.repositories b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/_maven.repositories new file mode 100644 index 000000000000..c4400d2cab0b --- /dev/null +++ b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/_maven.repositories @@ -0,0 +1,4 @@ +#NOTE: This is an internal implementation file, its format can be changed without prior notice. +#Tue Apr 09 20:46:20 MSD 2013 +asm-4.1.pom>remote-repos= +asm-4.1.jar>remote-repos= diff --git a/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..648e7b0d567a1763f42a0adcd13de2e48a807ded GIT binary patch literal 1068 zcmWIWW@Zs#VBp|jINjmrXxM3Cpv}m@Ai>1IAi}`H;OiRVsO#zHrtjsjSCUP^U4v6JQD>A87RRQCQ@G&yEo^@2-I zjB--{=Jab+73O)~&J7bgawe{EH~$R5WO3dZZ%d?RF3Ggrz@)KDGTm3T{kvC`z)Pu$ zr#ACmP2J)qzChOX`$>zVhA&NiR0N;tnN(waV)eVq4}DU3Tu~C<7uTlFVxHB&l*cti zp7;BNxqFR;+7BLJDpn|{4_?32U8&?xhGcjH+cCY~)UDem8+cs*_wa-8Ri@v4JM8Deiuft#OZ(x5>ccIg;YtgS4 zhA-W|vj1QSfCumiU;y8Y$XRs}7{Hg985lGf7#Q-4()II`vQm>v%2Si{6N_{89rNm^Yg+oi!)2|i}aFn5{rwcPWJV`5+Krc|FYPrDUS~Da73^_@xEnrW9z{g0*8~7 zI=O{~rnAmkmaNI)D_H#IT;im*xS|@dIVta(lh5yeQTe-YPD-7a>c_wm!Bo#(>TimF ze>n60cii=U=l8kO+zNL*@0sd*W1sr>bLVC+a=7^P>;9Af-&Ef}lYI5Lr&_#A;gr2k zc2`ZE!^ZMTVB4`btA9Ngbo}_c;TF`qhqeWNR!q&#Cqs{Qe#*V0P?< z%ZwM^E-S?Cm^j>aPG0uU{ZPn8iw=Lzty+8Dyj<~m##O`gMQpAv#)i$A!u$!dG7>Ji z2=D5w^qCPM@I-N0R>ZO7iPIWgZHzXkY~t}waZL$*(s^RmiCx={?K&dA@X*v9cJ8yb zBwYX5yv8xrwBqU$kBPC@7cp+Lca~$^!d38N>#2K1>=jw2FNBxnZ~T$hur_~PX)o{g z+TOE?Qs?8BZnf~d^z4rQjX!+BIm_oBmRnS_hAZ}A+@IMC0v8#p?wY;WHf8qF3y0Q) zrOvM3U^z#7*Q$hlJMXtneU#I?+xSU=yH0$;(Wo~^;`Ae(b&mU4GS)E$cr!AI05ch` rtOraSNB~zxL^cIm`a&3y2uyWEr?voZRyL4UCLo*(q$`2Rm4N{OR)EKa literal 0 HcmV?d00001 diff --git a/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar.sha1 b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar.sha1 new file mode 100644 index 000000000000..fca9878081d2 --- /dev/null +++ b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.jar.sha1 @@ -0,0 +1 @@ +ad568238ee36a820bd6c6806807e8a14ea34684d diff --git a/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom new file mode 100644 index 000000000000..731a3300af78 --- /dev/null +++ b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom @@ -0,0 +1,44 @@ + + + + 4.0.0 + + + asm-parent + org.ow2.asm + 4.1 + + + ASM Core + asm + jar + + diff --git a/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom.sha1 b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom.sha1 new file mode 100644 index 000000000000..55dbfe0430ba --- /dev/null +++ b/plugins/maven/src/test/data/local1/org/ow2/asm/asm/4.1/asm-4.1.pom.sha1 @@ -0,0 +1 @@ +14520f912710fa80079305bdcf8d52bd68764b60 diff --git a/plugins/maven/src/test/data/local1_index/_2.cfs b/plugins/maven/src/test/data/local1_index/_2.cfs deleted file mode 100644 index 6a84f0a7a873c5a7a6e18dd402093bbe064b39f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4145 zcmd59d3+O9I&Y3lo3x=VmBRuC5SAj8TuoCbAV)1lTcEg5*(y7kd1;2GNjfuWS}2Ez zU9KN^R1vgWKyiPF3IYoPVnr>;Dz~WHD#GHiuxKr;iXe2qH`A85>mUBPFTc#Z?|a{U zy!R%~ppRCxJ%*a>1CRQ1)kb^@xBq=WGTbWqX3 zBm)71a=FDcF?afeqWr1%PborN{>0+^!h5D9p$I}!5-LTAN2n5^U=k9OP#7UQLIN_$ zp^%yQdFf7IBQ^ri00mE^| zB*spS10-t%5+lPIhjK&^3;ckACzD8ZH(G$307MRB(Nw?;h~TH;2?ImJQ$qn6LlHal z5f4NhkkTAY>!F|o3pFwCGU{u|u_hDa$7B{nrwZd98kjn`XHJd3>=opH7$qkXezN>I znixEY-bdwq2u2@dFLH5&5;8r>;?yj?UcYkCohwl*p| zCoG%KFc;8%RB#$iZAS9+=(p$^5@XrvVFTSG2G4j3twRs=jB}*VZ9tjBUO=7^^GiJD zs&3;Jp;~mid6Z-JGPDwHMyn7#n)Z&;vqqkXqR127!f3O!4!A{s)8q6vy9B6Bg}5rB z4R&TX6SC$07HIFYZ=dFBD zwBCz@s&zaT$}+6^DiIY?ut*41Kemdv5(h$IEL)@gkX0%V2XHyi0}&XY=~1jw&^no~ z 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 literal 0 HcmV?d00001 diff --git a/plugins/maven/src/test/data/local1_index/segments.gen b/plugins/maven/src/test/data/local1_index/segments.gen index e9fa6008becd133f1cac4c5cec7f4311c6576acc..e76c9033a6adb8854f5974cedc48b3ffa36d7dec 100644 GIT binary patch literal 20 QcmezW|NlP*2;hLx07?l23;+NC literal 20 QcmezW|NlP*2w;ZM07=&b0ssI2 diff --git a/plugins/maven/src/test/data/local1_index/segments_3 b/plugins/maven/src/test/data/local1_index/segments_3 deleted file mode 100644 index 4d8270f7604e386dfb05e62c1571503a0d37c429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45 mcmezW|NkEb21d!mYNnG63=GUb%*YgP1f*F1BLPMbn-Kt=1QtmE diff --git a/plugins/maven/src/test/data/local1_index/segments_8 b/plugins/maven/src/test/data/local1_index/segments_8 new file mode 100644 index 0000000000000000000000000000000000000000..0de34bd5741ebf6301a16663ba352f72043abc86 GIT binary patch literal 58 vcmezW|Nl=021dt25;E=#3=AAV%*YgP4y3sLBLPMbn-M6=046rRyO{|9y!jaQ literal 0 HcmV?d00001 diff --git a/plugins/maven/src/test/data/local1_index/timestamp b/plugins/maven/src/test/data/local1_index/timestamp index 8af1c7a7fa59d4d0f0bfed69a781b6f06b737e6f..f7e2da32b8c92087ad5bcbde2b73fa9fca6bf8ed 100644 GIT binary patch literal 12 ScmZQzV03)Hf3JiLkN^M~ZUs#M literal 8 PcmZQzV3bU(W>x_J1F8WY 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 2b257d97e00a..506815f8e7e9 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 @@ -56,7 +56,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi " " + ""); - assertCompletionVariants(myProjectPom, "junit", "jmock", "test"); + assertCompletionVariantsInclude(myProjectPom, "junit", "jmock", "test"); } public void testArtifactIdCompletion() throws Exception { @@ -89,20 +89,6 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi assertCompletionVariants(myProjectPom); } - public void testDoNotCompleteArtifactIdIfNoGroupId() throws Exception { - createProjectPom("test" + - "project" + - "1" + - - "" + - " " + - " " + - " " + - ""); - - assertCompletionVariants(myProjectPom); // should not throw - } - public void testVersionCompletion() throws Exception { createProjectPom("test" + "project" + diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencySmartCompletionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencySmartCompletionTest.java index 7642c1a57e35..68eabbc955e3 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencySmartCompletionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDependencySmartCompletionTest.java @@ -1,8 +1,10 @@ package org.jetbrains.idea.maven.dom; import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.codeInsight.lookup.LookupElement; import java.io.IOException; +import java.util.Arrays; /** * @author Sergey Evdokimov @@ -141,4 +143,322 @@ public class MavenDependencySmartCompletionTest extends MavenDomWithIndicesTestC "\n")); } + public void testCompletionArtifactIdThenVersion() throws IOException { + importProject("test" + + "project" + + "1"); + + createProjectPom("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " juni\n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.completeBasic(); + assertSize(1, elements); + + myFixture.type('\n'); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " junit\n" + + " junit\n" + + " \n" + + " \n" + + "\n")); + + myFixture.getLookupElementStrings().containsAll(Arrays.asList("3.8.1", "4.0")); + } + + public void testCompletionArtifactIdThenGroupIdThenInsertVersion() throws IOException { + importProject("test" + + "project" + + "1"); + + createProjectPom("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " as\n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.completeBasic(); + assertSize(1, elements); + + myFixture.type('\n'); + + assertUnorderedElementsAreEqual(myFixture.getLookupElementStrings(), "asm", "org.ow2.asm"); + + myFixture.type("org\n"); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " org.ow2.asm\n" + + " asm\n" + + " 4.1\n" + + " \n" + + "\n")); + } + + public void testCompletionArtifactIdThenGroupIdThenCompleteVersion() throws IOException { + importProject("test" + + "project" + + "1"); + + createProjectPom("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " as\n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.completeBasic(); + assertSize(1, elements); + + myFixture.type('\n'); + + assertUnorderedElementsAreEqual(myFixture.getLookupElementStrings(), "asm", "org.ow2.asm"); + + myFixture.type("asm\n"); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " asm\n" + + " asm\n" + + " \n" + + " \n" + + "\n")); + + myFixture.getLookupElementStrings().equals(Arrays.asList("3.3", "3.3.1")); + } + + public void testCompletionArtifactIdWithFullInsert() throws IOException { + importProject("test" + + "project" + + "1"); + + createProjectPom("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " common-i\n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.completeBasic(); + assertSize(1, elements); + + myFixture.type('\n'); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + "\n")); + } + + public void testCompletionArtifactIdInsideManagedDependency() throws IOException { + importProject("test" + + "project" + + "1"); + + createProjectPom("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " \n" + + " commons-i\n" + + " \n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.completeBasic(); + assertSize(1, elements); + myFixture.type('\n'); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + "\n")); + } + + public void testCompletionArtifactIdWithManagedDependency() throws IOException { + importProject("test" + + "project" + + "1\n" + + "" + + " \n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + " \n"); + + createProjectPom("test" + + "project" + + "1\n" + + " \n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + " \n" + + + "\n" + + " \n" + + " common-i\n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.completeBasic(); + assertSize(1, elements); + myFixture.type('\n'); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + " \n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + " \n" + + + "\n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " \n" + + "\n" + )); + } + + public void testCompletionGroupIdWithManagedDependency() throws IOException { + importProject("test" + + "project" + + "1\n" + + "" + + "\n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + "\n"); + + createProjectPom("test" + + "project" + + "1\n" + + "\n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + "\n" + + + "\n" + + " \n" + + " commons-i\n" + + " commons-io\n" + + " \n" + + "\n"); + + myFixture.configureFromExistingVirtualFile(myProjectPom); + + LookupElement[] elements = myFixture.complete(CompletionType.SMART); + assertNull(elements); +// assertSize(1, elements); +// myFixture.type('\n'); + + myFixture.checkResult(createPomXml("test" + + "project" + + "1\n" + + + "\n" + + " \n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " 2.4\n" + + " \n" + + " \n" + + "\n" + + + "\n" + + " \n" + + " commons-io\n" + + " commons-io\n" + + " \n" + + "\n" + )); + } + } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenParentCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenParentCompletionAndResolutionTest.java index 2c1728711c5f..c22d06b4e24b 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenParentCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenParentCompletionAndResolutionTest.java @@ -34,9 +34,9 @@ public class MavenParentCompletionAndResolutionTest extends MavenDomWithIndicesT "" + " " + " junit" + - " " + + " " + ""); - assertCompletionVariants(myProjectPom, "junit", "jmock", "test"); + assertCompletionVariantsInclude(myProjectPom, "junit", "jmock", "test"); createProjectPom("test" + "project" + diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java index a7d10fe81c8a..11c3fce704d3 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java @@ -823,7 +823,7 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT assertCompletionVariants(myProjectPom); } - @Bombed(year = 2013, month = Calendar.MARCH, day = 25, user = "sergey.evdokimov") + @Bombed(year = 2014, month = Calendar.MARCH, day = 25, user = "sergey.evdokimov") public void testDocumentationForParameter() throws Exception { createProjectPom("test" + "project" + diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenIndicesTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenIndicesTest.java index 1a989942d3f3..c411299ffbef 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenIndicesTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenIndicesTest.java @@ -81,7 +81,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { MavenIndex i = myIndices.add("id", myRepositoryHelper.getTestDataPath("local1"), MavenIndex.Kind.LOCAL); myIndices.updateOrRepair(i, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(i.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); } public void testCreatingAndUpdatingLocalWhenNoDirectory() throws Exception { @@ -97,7 +97,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { myIndices.updateOrRepair(i1, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); myIndices.updateOrRepair(i2, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); assertUnorderedElementsAreEqual(i2.getGroupIds(), "jmock"); } @@ -108,7 +108,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { myIndices.updateOrRepair(i1, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); myIndices.updateOrRepair(i2, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); assertUnorderedElementsAreEqual(i2.getGroupIds(), "jmock"); } @@ -119,8 +119,8 @@ public class MavenIndicesTest extends MavenIndicesTestCase { myIndices.updateOrRepair(i1, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); myIndices.updateOrRepair(i2, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit"); - assertUnorderedElementsAreEqual(i2.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); + assertUnorderedElementsAreEqual(i2.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); } public void testAddingWithoutUpdate() throws Exception { @@ -132,7 +132,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { MavenIndex i = myIndices.add("id", myRepositoryHelper.getTestDataPath("local1"), MavenIndex.Kind.LOCAL); myIndices.updateOrRepair(i, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(i.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); myRepositoryHelper.delete("local1"); myRepositoryHelper.copy("local2", "local1"); @@ -240,7 +240,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { myIndices.updateOrRepair(i1, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); myIndices.updateOrRepair(i2, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(i1.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); assertUnorderedElementsAreEqual(i2.getGroupIds(), "jmock"); shutdownIndices(); @@ -253,7 +253,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { assertUnorderedElementsAreEqual(myIndices.getIndices().get(1).getGroupIds(), "jmock"); myIndices.updateOrRepair(myIndices.getIndices().get(0), false, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(myIndices.getIndices().get(0).getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(myIndices.getIndices().get(0).getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); } public void testDoNotLoadSameIndexTwice() throws Exception { @@ -318,7 +318,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { assertTrue(index.getGroupIds().isEmpty()); myIndices.updateOrRepair(myIndices.getIndices().get(0), false, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(index.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(index.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); } public void testRepairingIndicesOnReadWhileAddingArtifact() throws Exception { @@ -337,7 +337,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { assertTrue(index.getGroupIds().isEmpty()); myIndices.updateOrRepair(myIndices.getIndices().get(0), false, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(index.getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(index.getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); } public void testCorrectlyClosingIndicesOnRemoteFacadeShutdown() throws Exception { @@ -390,7 +390,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { MavenIndex i = myIndices.add("id", myRepositoryHelper.getTestDataPath("local1"), MavenIndex.Kind.LOCAL); myIndices.updateOrRepair(i, true, getMavenGeneralSettings(), EMPTY_MAVEN_PROCESS); - assertUnorderedElementsAreEqual(i.getGroupIds(), "junit", "jmock"); + assertUnorderedElementsAreEqual(i.getGroupIds(), "junit", "jmock", "asm", "commons-io", "org.ow2.asm"); assertUnorderedElementsAreEqual(i.getArtifactIds("junit"), "junit"); assertUnorderedElementsAreEqual(i.getArtifactIds("jmock"), "jmock"); @@ -414,7 +414,7 @@ public class MavenIndicesTest extends MavenIndicesTestCase { shutdownIndices(); initIndices(); - assertUnorderedElementsAreEqual(myIndices.getIndices().get(0).getGroupIds(), "junit"); + assertUnorderedElementsAreEqual(myIndices.getIndices().get(0).getGroupIds(), "junit", "asm", "commons-io", "org.ow2.asm"); } public void testHasArtifactInfo() throws Exception { diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenSearcherTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenSearcherTest.java index 8ee0e5599192..4018e23ac023 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenSearcherTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/indices/MavenSearcherTest.java @@ -89,8 +89,11 @@ public class MavenSearcherTest extends MavenIndicesTestCase { public void testArtifactSearch() throws Exception { assertArtifactSearchResults("", + "asm:asm:3.3.1 asm:asm:3.3", + "commons-io:commons-io:2.4", "jmock:jmock:1.2.0 jmock:jmock:1.1.0 jmock:jmock:1.0.0", - "junit:junit:4.0 junit:junit:3.8.2 junit:junit:3.8.1"); + "junit:junit:4.0 junit:junit:3.8.2 junit:junit:3.8.1", + "org.ow2.asm:asm:4.1"); assertArtifactSearchResults("j *1*", "jmock:jmock:1.2.0 jmock:jmock:1.1.0 jmock:jmock:1.0.0", "junit:junit:3.8.1");