summaryrefslogtreecommitdiff
path: root/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java')
-rw-r--r--platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java13
1 files changed, 7 insertions, 6 deletions
diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
index 3094304a02cb..a6b957c0c508 100644
--- a/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
+++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java
@@ -15,7 +15,6 @@
*/
package com.intellij.ide.plugins;
-import com.intellij.ide.IdeBundle;
import com.intellij.openapi.extensions.PluginId;
import com.intellij.util.containers.HashMap;
import gnu.trove.TObjectIntHashMap;
@@ -32,7 +31,7 @@ public class PluginDescriptorComparator implements Comparator<IdeaPluginDescript
private final TObjectIntHashMap<PluginId> myIdToNumberMap = new TObjectIntHashMap<PluginId>();
private int myAvailableNumber = 1;
- public PluginDescriptorComparator(IdeaPluginDescriptor[] descriptors) throws Exception{
+ public PluginDescriptorComparator(IdeaPluginDescriptor[] descriptors){
final Map<PluginId, IdeaPluginDescriptor> idToDescriptorMap = new HashMap<PluginId, IdeaPluginDescriptor>();
for (final IdeaPluginDescriptor descriptor : descriptors) {
idToDescriptorMap.put(descriptor.getPluginId(), descriptor);
@@ -46,18 +45,20 @@ public class PluginDescriptorComparator implements Comparator<IdeaPluginDescript
}
}
- private void assignNumbers(PluginId id, Map<PluginId, IdeaPluginDescriptor> idToDescriptorMap, Stack<PluginId> visited) throws Exception {
+ private void assignNumbers(PluginId id, Map<PluginId, IdeaPluginDescriptor> idToDescriptorMap, Stack<PluginId> visited){
visited.push(id);
try {
final IdeaPluginDescriptor ideaPluginDescriptor = idToDescriptorMap.get(id);
- if (ideaPluginDescriptor == null) {
- // missing optional dependency
+ if (ideaPluginDescriptor == null || !ideaPluginDescriptor.isEnabled()) {
+ // missing optional dependency or already disabled due to cycles
return;
}
final PluginId[] parentIds = ideaPluginDescriptor.getDependentPluginIds();
for (final PluginId parentId : parentIds) {
if (visited.contains(parentId)) {
- throw new Exception(IdeBundle.message("error.plugins.should.not.have.cyclic.dependencies") + id + "->" + parentId + "->...->" + id);
+ //disable plugins in the cycle
+ ideaPluginDescriptor.setEnabled(false);
+ break;
}
}
for (PluginId parentId1 : parentIds) {