From 0c2b1a2ea9b3bcb8643769540541ffde7075efa1 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 8 Aug 2016 16:34:37 +0200 Subject: [PATCH] =?UTF-8?q?EP=20=E2=80=94=20ability=20to=20load=20for=20OS?= =?UTF-8?q?=20only=20(as=20it=20is=20already=20done=20for=20service=20comp?= =?UTF-8?q?onents)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/impl/ComponentManagerImpl.java | 35 ++++--------------- .../openapi/extensions/Extensions.java | 30 +++++++++++++++- .../extensions/impl/ExtensionsAreaImpl.java | 8 ++++- .../ide/passwordSafe/macOsKeychainLibrary.kt | 3 +- .../components/impl/ServiceManagerImpl.java | 2 +- .../src/META-INF/PlatformExtensions.xml | 2 +- 6 files changed, 47 insertions(+), 33 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java index e7b6c7c414d4..e0282038f75c 100644 --- a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -30,7 +30,10 @@ import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.*; +import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.ReflectionUtil; @@ -49,6 +52,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import static com.intellij.openapi.extensions.Extensions.isComponentSuitableForOs; + public abstract class ComponentManagerImpl extends UserDataHolderBase implements ComponentManagerEx, Disposable { private static final Logger LOG = Logger.getInstance("#com.intellij.components.ComponentManager"); @@ -272,32 +277,6 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements (!Boolean.parseBoolean(options.get("internal")) || ApplicationManager.getApplication().isInternal()); } - static boolean isComponentSuitableForOs(@Nullable String os) { - if (StringUtil.isEmpty(os)) { - return true; - } - - if (os.equals("mac")) { - return SystemInfoRt.isMac; - } - else if (os.equals("linux")) { - return SystemInfoRt.isLinux; - } - else if (os.equals("windows")) { - return SystemInfoRt.isWindows; - } - else if (os.equals("unix")) { - return SystemInfoRt.isUnix; - } - else if (os.equals("freebsd")) { - return SystemInfoRt.isFreeBSD; - } - else { - LOG.warn("Unknown OS " + os); - return true; - } - } - @Override public void dispose() { ApplicationManager.getApplication().assertIsDispatchThread(); diff --git a/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java b/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java index ad57d231c27f..5191813b88bb 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -18,6 +18,8 @@ package com.intellij.openapi.extensions; import com.intellij.openapi.Disposable; import com.intellij.openapi.extensions.impl.ExtensionsAreaImpl; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.SystemInfoRt; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -243,4 +245,30 @@ public class Extensions { t.printStackTrace(); } } + + public static boolean isComponentSuitableForOs(@Nullable String os) { + if (StringUtil.isEmpty(os)) { + return true; + } + + if (os.equals("mac")) { + return SystemInfoRt.isMac; + } + else if (os.equals("linux")) { + return SystemInfoRt.isLinux; + } + else if (os.equals("windows")) { + return SystemInfoRt.isWindows; + } + else if (os.equals("unix")) { + return SystemInfoRt.isUnix; + } + else if (os.equals("freebsd")) { + return SystemInfoRt.isFreeBSD; + } + else { + ourLogger.warn("Unknown OS " + os); + return true; + } + } } diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java index 7e7a8e7b019d..90c2d9d1f07a 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -32,6 +32,8 @@ import org.picocontainer.PicoContainer; import java.util.*; +import static com.intellij.openapi.extensions.Extensions.isComponentSuitableForOs; + @SuppressWarnings({"HardCodedStringLiteral"}) public class ExtensionsAreaImpl implements ExtensionsArea { private final LogProvider myLogger; @@ -137,6 +139,10 @@ public class ExtensionsAreaImpl implements ExtensionsArea { public void registerExtension(@NotNull final PluginDescriptor pluginDescriptor, @NotNull final Element extensionElement) { final PluginId pluginId = pluginDescriptor.getPluginId(); + if (!isComponentSuitableForOs(extensionElement.getAttributeValue("os"))) { + return; + } + String epName = extractEPName(extensionElement); ExtensionComponentAdapter adapter; diff --git a/platform/platform-impl/src/com/intellij/ide/passwordSafe/macOsKeychainLibrary.kt b/platform/platform-impl/src/com/intellij/ide/passwordSafe/macOsKeychainLibrary.kt index 33bc1b76f22b..c6d7a7047a91 100644 --- a/platform/platform-impl/src/com/intellij/ide/passwordSafe/macOsKeychainLibrary.kt +++ b/platform/platform-impl/src/com/intellij/ide/passwordSafe/macOsKeychainLibrary.kt @@ -17,13 +17,14 @@ package com.intellij.ide.passwordSafe.macOs import com.intellij.ide.passwordSafe.LOG import com.intellij.openapi.util.SystemInfo +import com.sun.jna.Native import com.sun.jna.Pointer val isMacOsCredentialStoreSupported: Boolean get() = SystemInfo.isMacIntel64 && SystemInfo.isMacOSLeopard private val LIBRARY by lazy { - com.sun.jna.Native.loadLibrary("Security", MacOsKeychainLibrary::class.java) as MacOsKeychainLibrary + Native.loadLibrary("Security", MacOsKeychainLibrary::class.java) as MacOsKeychainLibrary } fun saveGenericPassword(serviceName: ByteArray, accountName: String, password: String) { diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java index 49243b5870e7..ee5e0d11e7d3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java @@ -80,7 +80,7 @@ public class ServiceManagerImpl implements BaseComponent { } } - if (!ComponentManagerImpl.isComponentSuitableForOs(descriptor.os)) { + if (!Extensions.isComponentSuitableForOs(descriptor.os)) { return; } diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index e2cbc37766fd..46d115378e82 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -444,6 +444,6 @@ - +