mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Gradle: do not re-create new module if it was unloaded (IDEA-174640)
This commit is contained in:
+6
@@ -17,11 +17,13 @@ package com.intellij.openapi.externalSystem.service.project;
|
||||
|
||||
import com.intellij.openapi.externalSystem.model.project.*;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.UnloadedModuleDescription;
|
||||
import com.intellij.openapi.roots.ModuleOrderEntry;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -47,6 +49,10 @@ public interface IdeModelsProvider {
|
||||
@Nullable
|
||||
Module findIdeModule(@NotNull String ideModuleName);
|
||||
|
||||
@ApiStatus.Experimental
|
||||
@Nullable
|
||||
UnloadedModuleDescription getUnloadedModuleDescription(@NotNull ModuleData moduleData);
|
||||
|
||||
@Nullable
|
||||
Library findIdeLibrary(@NotNull LibraryData libraryData);
|
||||
|
||||
|
||||
+15
-4
@@ -16,10 +16,7 @@
|
||||
package com.intellij.openapi.externalSystem.service.project;
|
||||
|
||||
import com.intellij.openapi.externalSystem.model.project.*;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleGrouperKt;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.module.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
@@ -125,6 +122,20 @@ public class IdeModelsProviderImpl implements IdeModelsProvider {
|
||||
return ModuleManager.getInstance(myProject).findModuleByName(ideModuleName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public UnloadedModuleDescription getUnloadedModuleDescription(@NotNull ModuleData moduleData) {
|
||||
for (String moduleName : suggestModuleNameCandidates(moduleData)) {
|
||||
UnloadedModuleDescription unloadedModuleDescription = ModuleManager.getInstance(myProject).getUnloadedModuleDescription(moduleName);
|
||||
|
||||
// TODO external system module options should be honored to handle duplicated module names issues
|
||||
if(unloadedModuleDescription != null) {
|
||||
return unloadedModuleDescription;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Library findIdeLibrary(@NotNull LibraryData libraryData) {
|
||||
|
||||
+10
-1
@@ -37,7 +37,10 @@ import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author Denis Zhdanov
|
||||
@@ -96,10 +99,16 @@ public abstract class AbstractDependencyDataService<E extends AbstractDependency
|
||||
for (DataNode<E> node : toImport) {
|
||||
final AbstractDependencyData data = node.getData();
|
||||
Module ownerModule = modelsProvider.findIdeModule(data.getOwnerModule());
|
||||
if (ownerModule == null && modelsProvider.getUnloadedModuleDescription(data.getOwnerModule()) != null) {
|
||||
continue;
|
||||
}
|
||||
assert ownerModule != null;
|
||||
String depName;
|
||||
if(data instanceof ModuleDependencyData) {
|
||||
Module targetModule = modelsProvider.findIdeModule(((ModuleDependencyData)data).getTarget());
|
||||
if (targetModule == null && modelsProvider.getUnloadedModuleDescription(((ModuleDependencyData)data).getTarget()) != null) {
|
||||
continue;
|
||||
}
|
||||
assert targetModule != null;
|
||||
depName = targetModule.getName();
|
||||
} else {
|
||||
|
||||
+5
-1
@@ -34,6 +34,7 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemBundle;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUiUtil;
|
||||
import com.intellij.openapi.module.ModifiableModuleModel;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.UnloadedModuleDescription;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
@@ -152,7 +153,10 @@ public abstract class AbstractModuleDataService<E extends ModuleData> extends Ab
|
||||
ModuleData moduleData = node.getData();
|
||||
Module module = modelsProvider.findIdeModule(moduleData);
|
||||
if (module == null) {
|
||||
result.add(node);
|
||||
UnloadedModuleDescription unloadedModuleDescription = modelsProvider.getUnloadedModuleDescription(moduleData);
|
||||
if (unloadedModuleDescription == null) {
|
||||
result.add(node);
|
||||
}
|
||||
}
|
||||
else {
|
||||
node.putUserData(MODULE_KEY, module);
|
||||
|
||||
+20
-4
@@ -27,10 +27,8 @@ import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsPr
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
|
||||
import com.intellij.openapi.externalSystem.util.Order;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.roots.DependencyScope;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ModuleOrderEntry;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.impl.ModuleOrderEntryImpl;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -38,8 +36,10 @@ import com.intellij.util.containers.ContainerUtilRt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Denis Zhdanov
|
||||
@@ -142,4 +142,20 @@ public class ModuleDependencyDataService extends AbstractDependencyDataService<M
|
||||
|
||||
return orderEntryDataMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void removeData(@NotNull Collection<? extends ExportableOrderEntry> toRemove,
|
||||
@NotNull Module module,
|
||||
@NotNull IdeModifiableModelsProvider modelsProvider) {
|
||||
|
||||
// do not remove 'invalid' module dependencies on unloaded modules
|
||||
List<? extends ExportableOrderEntry> filteredList = toRemove.stream().filter(o -> {
|
||||
if (o instanceof ModuleOrderEntry) {
|
||||
String moduleName = ((ModuleOrderEntry)o).getModuleName();
|
||||
return ModuleManager.getInstance(module.getProject()).getUnloadedModuleDescription(moduleName) == null;
|
||||
}
|
||||
return true;
|
||||
}).collect(Collectors.toList());
|
||||
super.removeData(filteredList, module, modelsProvider);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user