From 9af0bc693900394c52207be86dafdedce2ee8cdd Mon Sep 17 00:00:00 2001 From: Nikolay Mikhaylov Date: Fri, 28 Aug 2015 13:12:25 +0300 Subject: [PATCH] maven libs in arq containers --- .../library/RepositoryAttachHandler.java | 6 +- .../maven/utils/library/RepositoryUtils.java | 105 +++++++++++------- 2 files changed, 71 insertions(+), 40 deletions(-) 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 84907efe541a..7b0cbf7612cb 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 @@ -381,7 +381,7 @@ public class RepositoryAttachHandler { List mavenIds, List extraTypes, Collection repositories, - final Processor> resultProcessor, + @Nullable final Processor> resultProcessor, ProgressIndicator indicator) { boolean cancelled = false; final Collection result = new LinkedHashSet(); @@ -434,7 +434,9 @@ public class RepositoryAttachHandler { DumbService.allowStartingDumbModeInside(DumbModePermission.MAY_START_BACKGROUND, new Runnable() { @Override public void run() { - resultProcessor.process(new ArrayList(result)); + if (resultProcessor != null) { + resultProcessor.process(new ArrayList(result)); + } } }); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java index e2372f199b41..926928f45b1f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryUtils.java @@ -53,6 +53,18 @@ public class RepositoryUtils { @NotNull static public final String ReleaseVersionId = "RELEASE"; @NotNull static public final String SnapshotVersionSuffix = "-SNAPSHOT"; + public static void downloadAsync(final Project project, + final boolean downloadSources, + final boolean downloadJavaDocs, + @NotNull final RepositoryLibraryProperties properties) { + String displayName = RepositoryLibraryDescription.findDescription(properties).getDisplayName(); + Task task = new Task.Backgroundable(project, ProjectBundle.message("maven.loading.library.hint", displayName), false) { + public void run(@NotNull ProgressIndicator indicator) { + List download = download(project, downloadSources, downloadJavaDocs, properties); + } + }; + ProgressManager.getInstance().run(task); + } public static List download(Project project, boolean downloadSources, boolean downloadJavaDocs, @@ -162,14 +174,14 @@ public class RepositoryUtils { return result; } - public static void loadDependencies(@NotNull ProgressIndicator indicator, - @NotNull final Project project, - @NotNull final LibraryEx library, - boolean downloadSources, - boolean downloadJavaDocs) { - indicator.setText(ProjectBundle.message("maven.loading.library.hint", library.getName())); - @NotNull final RepositoryLibraryProperties libraryProperties = (RepositoryLibraryProperties)library.getProperties(); - final String storageRoot = getStorageRoot(library, project); + public static synchronized void loadDependencies(@NotNull ProgressIndicator indicator, + @NotNull final Project project, + RepositoryLibraryProperties libraryProperties, + boolean downloadSources, + boolean downloadJavaDocs, + String displayName, + Processor> processor) { + indicator.setText(ProjectBundle.message("maven.loading.library.hint", displayName)); RepositoryAttachHandler.doResolveInner( project, @@ -178,39 +190,56 @@ public class RepositoryUtils { resolveEffectiveVersion(project, libraryProperties))), createExtraArtifactTypeList(downloadSources, downloadJavaDocs), RepositoryLibraryDescription.findDescription(libraryProperties).getRemoteRepositories(), - new Processor>() { - @Override - public boolean process(List artifacts) { - if (artifacts == null || artifacts.isEmpty()) { - return true; - } - final List roots = RepositoryAttachHandler.createRoots(artifacts, storageRoot); - ApplicationManager.getApplication().invokeLater(new Runnable() { - @Override - public void run() { - if (library.isDisposed()) { - return; - } - AccessToken token = WriteAction.start(); - try { - final NewLibraryEditor editor = new NewLibraryEditor(null, libraryProperties); - editor.removeAllRoots(); - editor.addRoots(roots); - final Library.ModifiableModel model = library.getModifiableModel(); - editor.applyTo((LibraryEx.ModifiableModelEx)model); - model.commit(); - } - finally { - token.finish(); - } - } - }); - return true; - } - }, + processor, indicator); } + + public static void loadDependencies(@NotNull ProgressIndicator indicator, + @NotNull final Project project, + @NotNull final LibraryEx library, + boolean downloadSources, + boolean downloadJavaDocs) { + final String storageRoot = getStorageRoot(library, project); + final RepositoryLibraryProperties libraryProperties = (RepositoryLibraryProperties)library.getProperties(); + loadDependencies(indicator, + project, + libraryProperties, + downloadSources, + downloadJavaDocs, + library.getName(), + new Processor>() { + @Override + public boolean process(List artifacts) { + if (artifacts == null || artifacts.isEmpty()) { + return true; + } + final List roots = RepositoryAttachHandler.createRoots(artifacts, storageRoot); + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + if (library.isDisposed()) { + return; + } + AccessToken token = WriteAction.start(); + try { + final NewLibraryEditor editor = new NewLibraryEditor(null, libraryProperties); + editor.removeAllRoots(); + editor.addRoots(roots); + final Library.ModifiableModel model = library.getModifiableModel(); + editor.applyTo((LibraryEx.ModifiableModelEx)model); + model.commit(); + } + finally { + token.finish(); + } + } + }); + return true; + } + }); + } + public static void reloadDependencies(@NotNull ProgressIndicator indicator, @NotNull final Project project, @NotNull final LibraryEx library) {