mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
download from the same repositories on both initial configuration stage and synchronization stage
This commit is contained in:
@@ -42,7 +42,6 @@ import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.util.PairProcessor;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.concurrency.SequentialTaskExecutor;
|
||||
import gnu.trove.THashMap;
|
||||
@@ -67,7 +66,6 @@ import java.util.*;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -96,13 +94,14 @@ public class JarRepositoryManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
final List<RemoteRepositoryDescription> repositories = dialog.getRepositories();
|
||||
final String coord = dialog.getCoordinateText();
|
||||
final boolean attachSources = dialog.getAttachSources();
|
||||
final boolean attachJavaDoc = dialog.getAttachJavaDoc();
|
||||
final String copyTo = dialog.getDirectoryPath();
|
||||
|
||||
final NewLibraryConfiguration config = resolveAndDownload(project, coord, attachSources, attachJavaDoc, copyTo, repositories);
|
||||
final NewLibraryConfiguration config = resolveAndDownload(
|
||||
project, coord, attachSources, attachJavaDoc, copyTo, RemoteRepositoryDescription.DEFAULT_REPOSITORIES
|
||||
);
|
||||
if (config == null) {
|
||||
Messages.showErrorDialog(parentComponent, "No files were downloaded for " + coord, CommonBundle.getErrorTitle());
|
||||
}
|
||||
@@ -277,7 +276,7 @@ public class JarRepositoryManager {
|
||||
Notifications.Bus.notify(new Notification("Repository", title, sb.toString(), NotificationType.INFORMATION), project);
|
||||
}
|
||||
|
||||
public static void searchArtifacts(final Project project, String coord, final PairProcessor<Collection<Pair<RepositoryArtifactDescription, RemoteRepositoryDescription>>, Boolean> resultProcessor) {
|
||||
public static void searchArtifacts(final Project project, String coord, final Consumer<Collection<Pair<RepositoryArtifactDescription, RemoteRepositoryDescription>>> resultProcessor) {
|
||||
if (coord == null || coord.length() == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -291,30 +290,18 @@ public class JarRepositoryManager {
|
||||
ProgressManager.getInstance().run(new Task.Backgroundable(project, "Maven", false) {
|
||||
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
String[] urls = MavenRepositoryServicesManager.getServiceUrls();
|
||||
boolean tooManyResults = false;
|
||||
final AtomicBoolean proceedFlag = new AtomicBoolean(true);
|
||||
|
||||
for (int i = 0, length = urls.length; i < length; i++) {
|
||||
if (!proceedFlag.get()) break;
|
||||
final List<Pair<RepositoryArtifactDescription, RemoteRepositoryDescription>> resultList = new ArrayList<>();
|
||||
try {
|
||||
String serviceUrl = urls[i];
|
||||
final List<RepositoryArtifactDescription> artifacts = MavenRepositoryServicesManager.findArtifacts(template, serviceUrl);
|
||||
if (!artifacts.isEmpty()) {
|
||||
if (!proceedFlag.get()) {
|
||||
break;
|
||||
}
|
||||
final List<RemoteRepositoryDescription> repositories = MavenRepositoryServicesManager.getRepositories(serviceUrl);
|
||||
Map<String, RemoteRepositoryDescription> map = new THashMap<>();
|
||||
for (RemoteRepositoryDescription repository : repositories) {
|
||||
map.put(repository.getId(), repository);
|
||||
}
|
||||
for (RepositoryArtifactDescription artifact : artifacts) {
|
||||
if (artifact == null) {
|
||||
tooManyResults = true;
|
||||
final List<Pair<RepositoryArtifactDescription, RemoteRepositoryDescription>> resultList = new ArrayList<>();
|
||||
try {
|
||||
for (String serviceUrl : MavenRepositoryServicesManager.getServiceUrls()) {
|
||||
try {
|
||||
final List<RepositoryArtifactDescription> artifacts = MavenRepositoryServicesManager.findArtifacts(template, serviceUrl);
|
||||
if (!artifacts.isEmpty()) {
|
||||
final List<RemoteRepositoryDescription> repositories = MavenRepositoryServicesManager.getRepositories(serviceUrl);
|
||||
final Map<String, RemoteRepositoryDescription> map = new THashMap<>();
|
||||
for (RemoteRepositoryDescription repository : repositories) {
|
||||
map.put(repository.getId(), repository);
|
||||
}
|
||||
else {
|
||||
for (RepositoryArtifactDescription artifact : artifacts) {
|
||||
final RemoteRepositoryDescription repository = map.get(artifact.getRepositoryId());
|
||||
// if the artifact is provided by an unsupported repository just skip it
|
||||
// because it won't be resolved anyway
|
||||
@@ -324,38 +311,32 @@ public class JarRepositoryManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
finally {
|
||||
if (!proceedFlag.get()) {
|
||||
break;
|
||||
catch (Exception e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
final Boolean aBoolean = i == length - 1 ? tooManyResults : null;
|
||||
ApplicationManager.getApplication().invokeLater(
|
||||
() -> proceedFlag.set(resultProcessor.process(resultList, aBoolean)), o -> !proceedFlag.get()
|
||||
);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
ApplicationManager.getApplication().invokeLater(() -> resultProcessor.accept(resultList));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void searchRepositories(final Project project, final Collection<String> nexusUrls, final Processor<Collection<RemoteRepositoryDescription>> resultProcessor) {
|
||||
public static void searchRepositories(final Project project, final Collection<String> serviceUrls, final Processor<Collection<RemoteRepositoryDescription>> resultProcessor) {
|
||||
ProgressManager.getInstance().run(new Task.Backgroundable(project, "Maven", false) {
|
||||
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
final Ref<List<RemoteRepositoryDescription>> result = Ref.create(Collections.<RemoteRepositoryDescription>emptyList());
|
||||
try {
|
||||
final ArrayList<RemoteRepositoryDescription> repoList = new ArrayList<>();
|
||||
for (String nexusUrl : nexusUrls) {
|
||||
for (String url : serviceUrls) {
|
||||
final List<RemoteRepositoryDescription> repositories;
|
||||
try {
|
||||
repositories = MavenRepositoryServicesManager.getRepositories(nexusUrl);
|
||||
repositories = MavenRepositoryServicesManager.getRepositories(url);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
LOG.warn("Accessing Service at: " + nexusUrl, ex);
|
||||
LOG.warn("Accessing Service at: " + url, ex);
|
||||
continue;
|
||||
}
|
||||
repoList.addAll(repositories);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
package com.intellij.jarRepository;
|
||||
|
||||
import com.intellij.codeInspection.IntentionAndQuickFixAction;
|
||||
import com.intellij.jarRepository.propertiesEditor.RepositoryLibraryPropertiesDialog;
|
||||
import com.intellij.jarRepository.settings.RepositoryLibraryPropertiesDialog;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
@@ -56,8 +55,10 @@ import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class RepositoryAttachDialog extends DialogWrapper {
|
||||
@NonNls private static final String PROPERTY_DOWNLOAD_TO_PATH = "Downloaded.Files.Path";
|
||||
@@ -79,8 +80,7 @@ public class RepositoryAttachDialog extends DialogWrapper {
|
||||
|
||||
private final JComboBox myCombobox;
|
||||
|
||||
private final Map<String, Pair<RepositoryArtifactDescription, RemoteRepositoryDescription>> myCoordinates = ContainerUtil.newTroveMap();
|
||||
private final Map<String, RemoteRepositoryDescription> myRepositories = new TreeMap<>();
|
||||
private final Map<String, RepositoryArtifactDescription> myCoordinates = ContainerUtil.newTroveMap();
|
||||
private final List<String> myShownItems = ContainerUtil.newArrayList();
|
||||
private final String myDefaultDownloadFolder;
|
||||
|
||||
@@ -203,7 +203,9 @@ public class RepositoryAttachDialog extends DialogWrapper {
|
||||
main:
|
||||
for (String coordinate : myCoordinates.keySet()) {
|
||||
for (String part : parts) {
|
||||
if (!StringUtil.containsIgnoreCase(coordinate, part)) continue main;
|
||||
if (!StringUtil.containsIgnoreCase(coordinate, part)) {
|
||||
continue main;
|
||||
}
|
||||
}
|
||||
myShownItems.add(coordinate);
|
||||
}
|
||||
@@ -267,41 +269,22 @@ public class RepositoryAttachDialog extends DialogWrapper {
|
||||
|
||||
private boolean performSearch() {
|
||||
final String text = getCoordinateText();
|
||||
if (StringUtil.isEmptyOrSpaces(text)) return false;
|
||||
if (myCoordinates.containsKey(text)) return false;
|
||||
if (myProgressIcon.isRunning()) return false;
|
||||
if (myProgressIcon.isRunning() || StringUtil.isEmptyOrSpaces(text) || myCoordinates.containsKey(text)) {
|
||||
return false;
|
||||
}
|
||||
myProgressIcon.resume();
|
||||
JarRepositoryManager.searchArtifacts(myProject, text, (artifacts, tooMany) -> {
|
||||
JarRepositoryManager.searchArtifacts(myProject, text, (pairs) -> {
|
||||
if (myProgressIcon.isDisposed()) {
|
||||
return false;
|
||||
}
|
||||
if (tooMany != null) {
|
||||
myProgressIcon.suspend(); // finished
|
||||
return;
|
||||
}
|
||||
myProgressIcon.suspend(); // finished
|
||||
final int prevSize = myCoordinates.size();
|
||||
for (Pair<RepositoryArtifactDescription, RemoteRepositoryDescription> each : artifacts) {
|
||||
myCoordinates.put(each.first.getGroupId() + ":" + each.first.getArtifactId() + ":" + each.first.getVersion(), each);
|
||||
String url = each.second != null? each.second.getUrl() : null;
|
||||
if (StringUtil.isNotEmpty(url) && !myRepositories.containsKey(url)) {
|
||||
myRepositories.put(url, each.second);
|
||||
}
|
||||
}
|
||||
String title = getTitle();
|
||||
String tooManyMessage = ": too many results found";
|
||||
if (tooMany != null) {
|
||||
boolean alreadyThere = title.endsWith(tooManyMessage);
|
||||
if (tooMany.booleanValue() && !alreadyThere) {
|
||||
setTitle(title + tooManyMessage);
|
||||
}
|
||||
else if (!tooMany.booleanValue() && alreadyThere) {
|
||||
setTitle(title.substring(0, title.length() - tooManyMessage.length()));
|
||||
}
|
||||
for (Pair<RepositoryArtifactDescription, RemoteRepositoryDescription> pair : pairs) {
|
||||
final RepositoryArtifactDescription artifact = pair.first;
|
||||
myCoordinates.put(artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion(), artifact);
|
||||
}
|
||||
updateComboboxSelection(prevSize != myCoordinates.size());
|
||||
// tooMany != null on last call, so enable OK action to let
|
||||
// local maven repo a chance even if all remote services failed
|
||||
setOKActionEnabled(!myRepositories.isEmpty() || tooMany != null);
|
||||
return true;
|
||||
setOKActionEnabled(true);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@@ -352,13 +335,6 @@ public class RepositoryAttachDialog extends DialogWrapper {
|
||||
return RepositoryAttachDialog.class.getName();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<RemoteRepositoryDescription> getRepositories() {
|
||||
final Pair<RepositoryArtifactDescription, RemoteRepositoryDescription> artifactAndRepo = myCoordinates.get(getCoordinateText());
|
||||
final RemoteRepositoryDescription repository = artifactAndRepo == null ? null : artifactAndRepo.second;
|
||||
return repository != null ? Collections.singletonList(repository) : ContainerUtil.findAll(myRepositories.values(), Condition.NOT_NULL);
|
||||
}
|
||||
|
||||
private boolean isValidCoordinateSelected() {
|
||||
final String text = getCoordinateText();
|
||||
return text.split(":").length == 3;
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
package com.intellij.jarRepository;
|
||||
|
||||
import com.intellij.framework.addSupport.FrameworkSupportInModuleConfigurable;
|
||||
import com.intellij.jarRepository.propertiesEditor.RepositoryLibraryPropertiesEditor;
|
||||
import com.intellij.jarRepository.settings.RepositoryLibraryPropertiesEditor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ModifiableModelsProvider;
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
package com.intellij.jarRepository;
|
||||
|
||||
import com.intellij.jarRepository.propertiesEditor.RepositoryLibraryPropertiesDialog;
|
||||
import com.intellij.jarRepository.settings.RepositoryLibraryPropertiesDialog;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.libraries.ui.LibraryEditorComponent;
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor;
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.jarRepository.propertiesEditor;
|
||||
package com.intellij.jarRepository.settings;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.jarRepository.propertiesEditor.RepositoryLibraryPropertiesEditor">
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.jarRepository.settings.RepositoryLibraryPropertiesEditor">
|
||||
<grid id="27dc6" binding="mainPanel" layout-manager="GridLayoutManager" row-count="5" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.jarRepository.propertiesEditor;
|
||||
package com.intellij.jarRepository.settings;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.intellij.jarRepository.JarRepositoryManager;
|
||||
+4
-4
@@ -98,7 +98,7 @@ public class NexusRepositoryService extends MavenRepositoryService {
|
||||
final SearchResults results = new Endpoint.DataIndex(url).getArtifactlistAsSearchResults(
|
||||
name, template.getGroupId(), template.getArtifactId(), template.getVersion(), null, template.getClassNames()
|
||||
);
|
||||
boolean tooManyResults = results.isTooManyResults();
|
||||
//boolean tooManyResults = results.isTooManyResults();
|
||||
final SearchResults.Data data = results.getData();
|
||||
final ArrayList<RepositoryArtifactDescription> result = new ArrayList<>();
|
||||
if (data != null) {
|
||||
@@ -108,9 +108,9 @@ public class NexusRepositoryService extends MavenRepositoryService {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tooManyResults) {
|
||||
result.add(null);
|
||||
}
|
||||
//if (tooManyResults) {
|
||||
// result.add(null);
|
||||
//}
|
||||
return result;
|
||||
}
|
||||
catch (UnmarshalException e) {
|
||||
|
||||
@@ -28,7 +28,7 @@ public class RemoteRepositoryDescription {
|
||||
public static final RemoteRepositoryDescription MAVEN_CENTRAL = new RemoteRepositoryDescription(
|
||||
"central",
|
||||
"Maven Central repository",
|
||||
"http://repo1.maven.org/maven2"
|
||||
"https://repo1.maven.org/maven2"
|
||||
);
|
||||
public static final RemoteRepositoryDescription JBOSS_COMMUNITY = new RemoteRepositoryDescription(
|
||||
"jboss.community",
|
||||
|
||||
+6
-4
@@ -77,14 +77,16 @@ public class RepositoryAttachHandler {
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
public static void searchArtifacts(final Project project, String coord, final PairProcessor<Collection<Pair<MavenArtifactInfo, MavenRepositoryInfo>>, Boolean> resultProcessor) {
|
||||
JarRepositoryManager.searchArtifacts(project, coord, (pairs, aBoolean) -> resultProcessor.process(convert(pairs), aBoolean));
|
||||
JarRepositoryManager.searchArtifacts(
|
||||
project, coord, (pairs) -> resultProcessor.process(convert(pairs), Boolean.FALSE)
|
||||
);
|
||||
}
|
||||
|
||||
public static void searchRepositories(final Project project, final Collection<String> nexusUrls, final Processor<Collection<MavenRepositoryInfo>> resultProcessor) {
|
||||
JarRepositoryManager.searchRepositories(project, nexusUrls, descriptions -> resultProcessor.process(
|
||||
convertRepositoryList(descriptions)));
|
||||
JarRepositoryManager.searchRepositories(
|
||||
project, nexusUrls, descriptions -> resultProcessor.process(convertRepositoryList(descriptions))
|
||||
);
|
||||
}
|
||||
|
||||
public static MavenId getMavenId(@NotNull String coord) {
|
||||
|
||||
Reference in New Issue
Block a user