mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
project configuration: restore excluded roots after refreshing a repository library (IDEA-194717)
This commit is contained in:
+8
-3
@@ -35,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
@@ -215,13 +216,13 @@ public class NewLibraryEditor extends LibraryEditorBase {
|
||||
|
||||
public void applyTo(@NotNull LibraryEx.ModifiableModelEx model) {
|
||||
model.setProperties(myProperties);
|
||||
exportRoots(model::getUrls, model::isValid, model::removeRoot, model::addRoot, model::addJarDirectory);
|
||||
exportRoots(model::getUrls, model::isValid, model::removeRoot, model::addRoot, model::addJarDirectory, model::addExcludedRoot);
|
||||
}
|
||||
|
||||
|
||||
public void applyTo(@NotNull LibraryEditorBase editor) {
|
||||
editor.setProperties(myProperties);
|
||||
exportRoots(editor::getUrls, editor::isValid, editor::removeRoot, editor::addRoot, editor::addJarDirectory);
|
||||
exportRoots(editor::getUrls, editor::isValid, editor::removeRoot, editor::addRoot, editor::addJarDirectory, editor::addExcludedRoot);
|
||||
}
|
||||
|
||||
private void exportRoots(
|
||||
@@ -229,7 +230,8 @@ public class NewLibraryEditor extends LibraryEditorBase {
|
||||
final BiFunction<String, OrderRootType, Boolean> isValid,
|
||||
final BiConsumer<String, OrderRootType> removeRoot,
|
||||
final BiConsumer<String, OrderRootType> addRoot,
|
||||
final TriConsumer<String, Boolean, OrderRootType> addJarDir) {
|
||||
final TriConsumer<String, Boolean, OrderRootType> addJarDir,
|
||||
final Consumer<String> addExcludedRoot) {
|
||||
|
||||
// first, clean the target container optionally preserving invalid paths
|
||||
for (OrderRootType type : OrderRootType.getAllTypes()) {
|
||||
@@ -260,6 +262,9 @@ public class NewLibraryEditor extends LibraryEditorBase {
|
||||
addJarDir.accept(url, true, type);
|
||||
}
|
||||
}
|
||||
for (LightFilePointer root: myExcludedRoots) {
|
||||
addExcludedRoot.accept(root.getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
private static void collectJarFiles(@NotNull VirtualFile dir, @NotNull List<VirtualFile> container, final boolean recursively) {
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEdito
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.containers.JBIterable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -43,6 +44,7 @@ import org.jetbrains.concurrency.AsyncPromise;
|
||||
import org.jetbrains.concurrency.Promise;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class RepositoryUtils {
|
||||
private static final Logger LOG = Logger.getInstance("#org.jetbrains.idea.maven.utils.library.RepositoryUtils");
|
||||
@@ -95,6 +97,7 @@ public class RepositoryUtils {
|
||||
}
|
||||
final RepositoryLibraryProperties properties = (RepositoryLibraryProperties)library.getProperties();
|
||||
String[] annotationUrls = library.getUrls(AnnotationOrderRootType.getInstance());
|
||||
String[] excludedRootUrls = library.getExcludedRootUrls();
|
||||
|
||||
return JarRepositoryManager.loadDependenciesAsync(
|
||||
project, properties, downloadSources, downloadJavaDocs, null, copyTo).thenAsync(roots -> {
|
||||
@@ -118,6 +121,14 @@ public class RepositoryUtils {
|
||||
for (String url : annotationUrls) {
|
||||
editor.addRoot(url, AnnotationOrderRootType.getInstance());
|
||||
}
|
||||
List<String> allRootUrls = editor.getOrderRootTypes().stream()
|
||||
.flatMap(type -> Arrays.stream(editor.getUrls(type)))
|
||||
.collect(Collectors.toList());
|
||||
for (String excludedRootUrl: excludedRootUrls) {
|
||||
if (VfsUtilCore.isUnder(excludedRootUrl, allRootUrls)) {
|
||||
editor.addExcludedRoot(excludedRootUrl);
|
||||
}
|
||||
}
|
||||
final LibraryEx.ModifiableModelEx model = library.getModifiableModel();
|
||||
editor.applyTo(model);
|
||||
model.commit();
|
||||
|
||||
Reference in New Issue
Block a user