diff options
author | Tor Norbye <tnorbye@google.com> | 2014-07-25 20:12:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-07-24 20:55:36 +0000 |
commit | 6044be7330c93bc8dacb0f63e62da8029f39a16f (patch) | |
tree | 0ba72f5de1949e0527874a799baa224cbe1537e0 /platform/core-impl/src/com/intellij/ide/plugins/PluginDescriptorComparator.java | |
parent | b03a5855292feb8c331815f883fe64372aacd872 (diff) | |
parent | e5266e2343c8d275d79fa0be725180d0fe3a993c (diff) | |
download | idea-6044be7330c93bc8dacb0f63e62da8029f39a16f.tar.gz |
Merge "Merge remote-tracking branch 'aosp/upstream-master' into merge"
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.java | 13 |
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) { |