From bab1bebab63473addf9515f51cdfdd00254acfdf Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 20 Dec 2018 10:55:52 +0100 Subject: [PATCH] =?UTF-8?q?plugin=20descriptor=20=E2=80=94=20make=20getMod?= =?UTF-8?q?ules=20not-null=20to=20simplify=20code,=20read=20not=20using=20?= =?UTF-8?q?xml=20serializer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ide/plugins/OptimizedPluginBean.java | 7 ------ .../com/intellij/ide/plugins/PluginBean.java | 8 ++++++ .../ide/plugins/IdeaPluginDescriptorImpl.java | 19 +++++++++----- .../ide/plugins/PluginManagerCore.java | 8 +++--- .../ide/plugins/BundledPluginsLister.java | 25 ++++--------------- .../plugins/PluginManagerConfigurableNew.java | 3 +-- .../ide/plugins/newui/MyPluginModel.java | 3 +-- 7 files changed, 31 insertions(+), 42 deletions(-) diff --git a/platform/core-api/src/com/intellij/ide/plugins/OptimizedPluginBean.java b/platform/core-api/src/com/intellij/ide/plugins/OptimizedPluginBean.java index 326fec580852..8a3473017843 100644 --- a/platform/core-api/src/com/intellij/ide/plugins/OptimizedPluginBean.java +++ b/platform/core-api/src/com/intellij/ide/plugins/OptimizedPluginBean.java @@ -1,15 +1,12 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.plugins; -import com.intellij.util.SmartList; import com.intellij.util.xmlb.annotations.Attribute; import com.intellij.util.xmlb.annotations.Property; import com.intellij.util.xmlb.annotations.Tag; import com.intellij.util.xmlb.annotations.XCollection; import org.jetbrains.annotations.NonNls; -import java.util.List; - public class OptimizedPluginBean { @NonNls public static final String APPLICATION_COMPONENTS = "application-components"; @NonNls public static final String PROJECT_COMPONENTS = "project-components"; @@ -67,8 +64,4 @@ public class OptimizedPluginBean { @Attribute("allow-bundled-update") public boolean allowBundledUpdate; - - @Property(surroundWithTag = false) - @XCollection(elementName = "module") - public List modules = new SmartList<>(); } diff --git a/platform/core-api/src/com/intellij/ide/plugins/PluginBean.java b/platform/core-api/src/com/intellij/ide/plugins/PluginBean.java index 1e37f193bb1b..7e6903b7505b 100644 --- a/platform/core-api/src/com/intellij/ide/plugins/PluginBean.java +++ b/platform/core-api/src/com/intellij/ide/plugins/PluginBean.java @@ -2,10 +2,14 @@ package com.intellij.ide.plugins; import com.intellij.openapi.components.OldComponentConfig; +import com.intellij.util.SmartList; +import com.intellij.util.xmlb.annotations.Property; import com.intellij.util.xmlb.annotations.Tag; import com.intellij.util.xmlb.annotations.XCollection; import org.jdom.Element; +import java.util.List; + public class PluginBean extends OptimizedPluginBean { @XCollection(propertyElementName = APPLICATION_COMPONENTS) public OldComponentConfig[] applicationComponents; @@ -24,4 +28,8 @@ public class PluginBean extends OptimizedPluginBean { @Tag("extensionPoints") public Element[] extensionPoints; + + @Property(surroundWithTag = false) + @XCollection(elementName = "module") + public List modules = new SmartList<>(); } diff --git a/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java b/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java index 1c83cd79b936..28e9bf744716 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java @@ -287,6 +287,17 @@ public class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor { } break; + case "module": { + String moduleName = child.getAttributeValue("value"); + if (moduleName != null) { + if (myModules == null) { + myModules = new SmartList<>(); + } + myModules.add(moduleName); + } + } + break; + case OptimizedPluginBean.APPLICATION_COMPONENTS: { // because of x-pointer, maybe several application-components tag in document if (myAppComponents == Collections.emptyList()) { @@ -313,10 +324,6 @@ public class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor { break; } } - - if (pluginBean.modules != null && !pluginBean.modules.isEmpty()) { - myModules = pluginBean.modules; - } } private static void readComponents(@NotNull Element parent, @NotNull Ref oldComponentConfigBean, @NotNull ArrayList result) { @@ -749,8 +756,8 @@ public class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor { return myAllowBundledUpdate; } - @Nullable + @NotNull public List getModules() { - return myModules; + return ContainerUtil.notNullize(myModules); } } \ No newline at end of file diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java index 56d1e93234d6..e3687c033954 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java @@ -1498,11 +1498,9 @@ public class PluginManagerCore { if (toNotLoadReason == null) { List modules = descriptor.getModules(); - if (modules != null) { - for (String module : modules) { - if (!ourModulesToContainingPlugins.containsKey(module)) { - ourModulesToContainingPlugins.put(module, descriptor); - } + for (String module : modules) { + if (!ourModulesToContainingPlugins.containsKey(module)) { + ourModulesToContainingPlugins.put(module, descriptor); } } result.add(descriptor); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/BundledPluginsLister.java b/platform/platform-impl/src/com/intellij/ide/plugins/BundledPluginsLister.java index 605976484dca..77b1a2d2eae4 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/BundledPluginsLister.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/BundledPluginsLister.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.plugins; import com.google.gson.stream.JsonWriter; @@ -23,6 +9,7 @@ import java.io.*; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author Ivan Chirkov @@ -60,11 +47,9 @@ public class BundledPluginsLister extends ApplicationStarterEx { IdeaPluginDescriptor[] plugins = PluginManagerCore.getPlugins(); List modules = Arrays.stream(plugins) - .filter(IdeaPluginDescriptorImpl.class::isInstance) - .filter(plugin -> ((IdeaPluginDescriptorImpl)plugin).getModules() != null) - .flatMap(plugin -> ((IdeaPluginDescriptorImpl)plugin).getModules().stream()) - .sorted() - .collect(Collectors.toList()); + .flatMap(it -> it instanceof IdeaPluginDescriptorImpl ? ((IdeaPluginDescriptorImpl)it).getModules().stream() : Stream.empty()) + .sorted() + .collect(Collectors.toList()); List pluginIds = Arrays.stream(plugins) .map(plugin -> plugin.getPluginId().getIdString()) diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java index af52f3c0b031..9469f090d885 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java @@ -1533,8 +1533,7 @@ public class PluginManagerConfigurableNew if (plugin == null && PluginManagerCore.isModuleDependency(id)) { for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) { if (descriptor instanceof IdeaPluginDescriptorImpl) { - List modules = ((IdeaPluginDescriptorImpl)descriptor).getModules(); - if (modules != null && modules.contains(id.getIdString())) { + if (((IdeaPluginDescriptorImpl)descriptor).getModules().contains(id.getIdString())) { plugin = descriptor; break; } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/MyPluginModel.java b/platform/platform-impl/src/com/intellij/ide/plugins/newui/MyPluginModel.java index 44a8b3ffb3b6..ce09ca206ee3 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/MyPluginModel.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/MyPluginModel.java @@ -442,8 +442,7 @@ public class MyPluginModel extends InstalledPluginsTableModel implements PluginM if (result == null && PluginManagerCore.isModuleDependency(pluginId)) { result = ContainerUtil.find(allPlugins, d -> { if (d instanceof IdeaPluginDescriptorImpl) { - List modules = ((IdeaPluginDescriptorImpl)d).getModules(); - return modules != null && modules.contains(pluginId.getIdString()); + return ((IdeaPluginDescriptorImpl)d).getModules().contains(pluginId.getIdString()); } return false; });