From 5366eaf0b084fec75a0f58e80e6b1a1092311d89 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 9 Apr 2019 09:48:55 +0300 Subject: [PATCH] repository libraries: support artifacts with pom packaging (IDEA-209554) 'Download Library from Maven Repository' dialog now allows to specify packaging (if groupId:artifactId:packaging:version format is used). --- .../jetbrains/idea/maven/aether/ArtifactKind.java | 2 +- .../jarRepository/JarRepositoryManager.java | 6 +++--- .../jarRepository/RepositoryAttachDialog.java | 14 ++++++++++++-- .../RepositoryLibraryWithDescriptionEditor.java | 5 +++-- .../RepositoryLibraryPropertiesModel.java | 5 +++-- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactKind.java b/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactKind.java index 60db937c99e5..db092d593979 100644 --- a/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactKind.java +++ b/aether-dependency-resolver/src/org/jetbrains/idea/maven/aether/ArtifactKind.java @@ -21,7 +21,7 @@ import java.util.EnumSet; public enum ArtifactKind { ARTIFACT("", "jar"), SOURCES("sources", "jar"), JAVADOC("javadoc", "jar"), - ANNOTATIONS("annotations", "zip"), AAR_ARTIFACT("", "aar"); + ANNOTATIONS("annotations", "zip"), AAR_ARTIFACT("", "aar"), POM("", "pom"); private final String myClassifier; private final String myExtension; diff --git a/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java b/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java index 04b7b300c848..90a1186c5c66 100644 --- a/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java +++ b/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java @@ -98,7 +98,7 @@ public class JarRepositoryManager { boolean includeTransitiveDependencies = dialog.getIncludeTransitiveDependencies(); final String copyTo = dialog.getDirectoryPath(); - final EnumSet artifactKinds = kindsOf(attachSources, attachJavaDoc); + final EnumSet artifactKinds = kindsOf(attachSources, attachJavaDoc, dialog.getPackaging()); if (attachAnnotations) { artifactKinds.add(ArtifactKind.ANNOTATIONS); } @@ -276,9 +276,9 @@ public class JarRepositoryManager { return repositories; } - protected static EnumSet kindsOf(boolean loadSources, boolean loadJavadoc, String... artifactPackaging) { + public static EnumSet kindsOf(boolean loadSources, boolean loadJavadoc, String... artifactPackaging) { final EnumSet kinds = ArtifactKind.kindsOf(loadSources, loadJavadoc); - if (artifactPackaging.length == 0) { + if (artifactPackaging.length == 0 || artifactPackaging.length == 1 && artifactPackaging[0] == null) { kinds.add(ArtifactKind.ARTIFACT); } else { diff --git a/java/idea-ui/src/com/intellij/jarRepository/RepositoryAttachDialog.java b/java/idea-ui/src/com/intellij/jarRepository/RepositoryAttachDialog.java index 2e26d1359ec6..fc79d94f6c9f 100644 --- a/java/idea-ui/src/com/intellij/jarRepository/RepositoryAttachDialog.java +++ b/java/idea-ui/src/com/intellij/jarRepository/RepositoryAttachDialog.java @@ -393,8 +393,18 @@ public class RepositoryAttachDialog extends DialogWrapper { } public String getCoordinateText() { - final JTextField field = (JTextField)myCombobox.getEditor().getEditorComponent(); - return field.getText(); + String text = getFullCoordinateText(); + List parts = StringUtil.split(text, ":"); + return parts.size() == 4 ? parts.get(0) + ":" + parts.get(1) + ":" + parts.get(3) : text; + } + + public String getPackaging() { + List parts = StringUtil.split(getFullCoordinateText(), ":"); + return parts.size() == 4 ? parts.get(2) : null; + } + + private String getFullCoordinateText() { + return ((JTextField)myCombobox.getEditor().getEditorComponent()).getText(); } private void createUIComponents() { diff --git a/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java b/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java index a8329b270654..17263d2e5e26 100644 --- a/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java +++ b/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java @@ -50,8 +50,9 @@ public class RepositoryLibraryWithDescriptionEditor //String oldVersion = properties.getVersion(); boolean wasGeneratedName = RepositoryLibraryType.getInstance().getDescription(properties).equals(myEditorComponent.getLibraryEditor().getName()); - final EnumSet artifactKinds = ArtifactKind.kindsOf(libraryHasSources(myEditorComponent.getLibraryEditor()), - libraryHasJavaDocs(myEditorComponent.getLibraryEditor())); + final EnumSet artifactKinds = JarRepositoryManager.kindsOf(libraryHasSources(myEditorComponent.getLibraryEditor()), + libraryHasJavaDocs(myEditorComponent.getLibraryEditor()), + properties.getPackaging()); if (libraryHasExternalAnnotations(myEditorComponent.getLibraryEditor())) { artifactKinds.add(ArtifactKind.ANNOTATIONS); } diff --git a/java/idea-ui/src/org/jetbrains/idea/maven/utils/library/propertiesEditor/RepositoryLibraryPropertiesModel.java b/java/idea-ui/src/org/jetbrains/idea/maven/utils/library/propertiesEditor/RepositoryLibraryPropertiesModel.java index 39944c91b38b..811da60c2c63 100644 --- a/java/idea-ui/src/org/jetbrains/idea/maven/utils/library/propertiesEditor/RepositoryLibraryPropertiesModel.java +++ b/java/idea-ui/src/org/jetbrains/idea/maven/utils/library/propertiesEditor/RepositoryLibraryPropertiesModel.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.utils.library.propertiesEditor; import com.google.common.base.Strings; +import com.intellij.jarRepository.JarRepositoryManager; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.idea.maven.aether.ArtifactKind; @@ -26,7 +27,7 @@ import java.util.List; public class RepositoryLibraryPropertiesModel { private String version; - private final EnumSet myArtifactKinds = EnumSet.of(ArtifactKind.ARTIFACT); + private final EnumSet myArtifactKinds = EnumSet.noneOf(ArtifactKind.class); private boolean includeTransitiveDependencies; private List myExcludedDependencies; @@ -36,7 +37,7 @@ public class RepositoryLibraryPropertiesModel { public RepositoryLibraryPropertiesModel(String version, boolean downloadSources, boolean downloadJavaDocs, boolean includeTransitiveDependencies, List excludedDependencies) { - this(version, ArtifactKind.kindsOf(downloadSources, downloadJavaDocs), includeTransitiveDependencies, excludedDependencies); + this(version, JarRepositoryManager.kindsOf(downloadSources, downloadJavaDocs), includeTransitiveDependencies, excludedDependencies); } public RepositoryLibraryPropertiesModel(String version, EnumSet artifactKinds,