diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy index 637b645cbf87..c872a19db05e 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy @@ -7,12 +7,12 @@ import com.intellij.codeInsight.generation.OverrideImplementUtil import com.intellij.codeInsight.generation.OverrideImplementsAnnotationsHandler import com.intellij.idea.ActionsBundle import com.intellij.openapi.actionSystem.Presentation +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.CommandProcessor -import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.project.Project import com.intellij.psi.PsiClass import com.intellij.psi.util.PsiTreeUtil -import com.intellij.testFramework.PlatformTestUtil +import com.intellij.testFramework.ServiceContainerUtil import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase /** @@ -273,7 +273,7 @@ class Test implements A { void testCustomOverrideImplementsHandler() throws Exception { myFixture.addClass """package a; public @interface A { String value();}""" - PlatformTestUtil.registerExtension(Extensions.getRootArea(), OverrideImplementsAnnotationsHandler.EP_NAME, new OverrideImplementsAnnotationsHandler() { + ServiceContainerUtil.registerExtension(ApplicationManager.application, OverrideImplementsAnnotationsHandler.EP_NAME, new OverrideImplementsAnnotationsHandler() { @Override String[] getAnnotations(Project project) { return ["a.A"] diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/UseBulkOperationInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/UseBulkOperationInspectionTest.java index 5ed1a05fd6ce..a233a35bf03a 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/UseBulkOperationInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/UseBulkOperationInspectionTest.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-2019 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.java.codeInsight.daemon.quickFix; import com.intellij.codeInsight.daemon.quickFix.LightQuickFixParameterizedTestCase; @@ -20,8 +6,8 @@ import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.bulkOperation.BulkMethodInfo; import com.intellij.codeInspection.bulkOperation.BulkMethodInfoProvider; import com.intellij.codeInspection.bulkOperation.UseBulkOperationInspection; -import com.intellij.openapi.extensions.Extensions; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.testFramework.ServiceContainerUtil; import org.jetbrains.annotations.NotNull; import java.util.stream.Stream; @@ -50,7 +36,7 @@ public class UseBulkOperationInspectionTest extends LightQuickFixParameterizedTe @Override protected void setUp() throws Exception { super.setUp(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), BulkMethodInfoProvider.KEY, TEST_PROVIDER, getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), BulkMethodInfoProvider.KEY, TEST_PROVIDER, getTestRootDisposable()); } @Override diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/NotNullFieldNotInitializedInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/NotNullFieldNotInitializedInspectionTest.java index 65b48a201825..dac5be79537b 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/NotNullFieldNotInitializedInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/NotNullFieldNotInitializedInspectionTest.java @@ -5,11 +5,11 @@ package com.intellij.java.codeInspection; import com.intellij.JavaTestUtil; import com.intellij.codeInsight.daemon.ImplicitUsageProvider; import com.intellij.codeInspection.nullable.NotNullFieldNotInitializedInspection; -import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiField; import com.intellij.testFramework.LightProjectDescriptor; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import org.jetbrains.annotations.NotNull; @@ -26,7 +26,7 @@ public class NotNullFieldNotInitializedInspectionTest extends LightJavaCodeInsig doTest(); } public void testImplicit() { - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() { @Override public boolean isImplicitUsage(@NotNull PsiElement element) { return false; diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedReturnValueQuickFixTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedReturnValueQuickFixTest.java index 59914d46b124..c3ee9cc5d51d 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedReturnValueQuickFixTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedReturnValueQuickFixTest.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-2019 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.java.codeInspection; import com.intellij.JavaTestUtil; @@ -22,13 +8,13 @@ import com.intellij.codeInspection.InspectionsBundle; import com.intellij.codeInspection.reference.EntryPoint; import com.intellij.codeInspection.reference.RefElement; import com.intellij.codeInspection.unusedReturnValue.UnusedReturnValue; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.extensions.ExtensionPointName; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -41,7 +27,7 @@ public class UnusedReturnValueQuickFixTest extends LightJavaCodeInsightFixtureTe @Override protected void setUp() throws Exception { super.setUp(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() { @Override public boolean isImplicitUsage(@NotNull PsiElement element) { return false; @@ -57,7 +43,7 @@ public class UnusedReturnValueQuickFixTest extends LightJavaCodeInsightFixtureTe return false; } }, getTestRootDisposable()); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPoint() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPoint() { @Override public void readExternal(Element element) throws InvalidDataException { } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/VisibilityInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/VisibilityInspectionTest.java index 7451f922c35e..4dcb265e4cd4 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/VisibilityInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/VisibilityInspectionTest.java @@ -6,8 +6,8 @@ import com.intellij.ToolExtensionPoints; import com.intellij.codeInspection.reference.RefElement; import com.intellij.codeInspection.visibility.EntryPointWithVisibilityLevel; import com.intellij.codeInspection.visibility.VisibilityInspection; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.extensions.ExtensionPointName; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.PsiClass; @@ -16,7 +16,7 @@ import com.intellij.psi.PsiMember; import com.intellij.psi.PsiMethod; import com.intellij.psi.util.PsiUtil; import com.intellij.testFramework.JavaInspectionTestCase; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -169,7 +169,7 @@ public class VisibilityInspectionTest extends JavaInspectionTestCase { } public void testEntryPointWithPredefinedVisibility() { - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() { @Override public void readExternal(Element element) throws InvalidDataException {} diff --git a/java/java-tests/testSrc/com/intellij/java/ide/fileTemplates/impl/FileTemplatesTest.groovy b/java/java-tests/testSrc/com/intellij/java/ide/fileTemplates/impl/FileTemplatesTest.groovy index 01e73c43cbba..cec7521ac87f 100644 --- a/java/java-tests/testSrc/com/intellij/java/ide/fileTemplates/impl/FileTemplatesTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/ide/fileTemplates/impl/FileTemplatesTest.groovy @@ -5,8 +5,8 @@ import com.intellij.ide.fileTemplates.* import com.intellij.ide.fileTemplates.impl.CustomFileTemplate import com.intellij.ide.fileTemplates.impl.FTManager import com.intellij.openapi.Disposable +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ex.PathManagerEx -import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.text.StringUtil @@ -17,8 +17,8 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiDirectory import com.intellij.psi.PsiManager import com.intellij.testFramework.JavaProjectTestCase -import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.PsiTestUtil +import com.intellij.testFramework.ServiceContainerUtil import com.intellij.util.io.PathKt import com.intellij.util.properties.EncodingAwareProperties @@ -159,7 +159,7 @@ class FileTemplatesTest extends JavaProjectTestCase { void testFileNameTrimming() { CreateFromTemplateHandler handler = new DefaultCreateFromTemplateHandler() - PlatformTestUtil.registerExtension(Extensions.getRootArea(), CreateFromTemplateHandler.EP_NAME, handler, getTestRootDisposable()) + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), CreateFromTemplateHandler.EP_NAME, handler, getTestRootDisposable()) FileTemplate template = FileTemplateManager.getInstance(getProject()).addTemplate(name, "txt") disposeOnTearDown({ FileTemplateManager.getInstance(getProject()).removeTemplate(template) } as Disposable) template.setText('${FILE_NAME}') diff --git a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java index 9a7c2f038834..f627803968ef 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/impl/ConsoleViewImplTest.java @@ -25,7 +25,6 @@ import com.intellij.openapi.editor.impl.DocumentMarkupModel; import com.intellij.openapi.editor.markup.MarkupModel; import com.intellij.openapi.editor.markup.RangeHighlighter; import com.intellij.openapi.extensions.ExtensionPoint; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pair; @@ -540,7 +539,7 @@ public class ConsoleViewImplTest extends LightPlatformTestCase { } public void testSubsequentFoldsAreCombined() { - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ConsoleFolding.EP_NAME, new ConsoleFolding() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ConsoleFolding.EP_NAME, new ConsoleFolding() { @Override public boolean shouldFoldLine(@NotNull Project project, @NotNull String line) { return line.contains("FOO"); diff --git a/platform/platform-tests/testSrc/com/intellij/featureStatistics/ProductivityFeaturesTest.java b/platform/platform-tests/testSrc/com/intellij/featureStatistics/ProductivityFeaturesTest.java index ffd42a6ae872..5b4792bccff8 100644 --- a/platform/platform-tests/testSrc/com/intellij/featureStatistics/ProductivityFeaturesTest.java +++ b/platform/platform-tests/testSrc/com/intellij/featureStatistics/ProductivityFeaturesTest.java @@ -5,11 +5,10 @@ import com.intellij.ide.plugins.PluginManagerCore; import com.intellij.ide.util.TipAndTrickBean; import com.intellij.ide.util.TipUIUtil; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.util.registry.Registry; import com.intellij.testFramework.LightPlatformTestCase; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import org.jdom.Element; public class ProductivityFeaturesTest extends LightPlatformTestCase { @@ -23,12 +22,12 @@ public class ProductivityFeaturesTest extends LightPlatformTestCase { ((ProductivityFeaturesRegistryImpl)myRegistry).prepareForTest(); myTracker = FeatureUsageTracker.getInstance(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ProductivityFeaturesProvider.EP_NAME, new TestProductivityFeatureProvider(), getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ProductivityFeaturesProvider.EP_NAME, new TestProductivityFeatureProvider(), getTestRootDisposable()); TipAndTrickBean tip = new TipAndTrickBean(); tip.fileName = "TestTip.html"; tip.setPluginDescriptor(PluginManagerCore.getPlugin(PluginId.getId(PluginManagerCore.CORE_PLUGIN_ID))); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), TipAndTrickBean.EP_NAME, tip, getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), TipAndTrickBean.EP_NAME, tip, getTestRootDisposable()); } @Override diff --git a/platform/platform-tests/testSrc/com/intellij/internal/statistics/validator/ProductivityValidatorTest.kt b/platform/platform-tests/testSrc/com/intellij/internal/statistics/validator/ProductivityValidatorTest.kt index 39b83bff6f99..120160fca9c7 100644 --- a/platform/platform-tests/testSrc/com/intellij/internal/statistics/validator/ProductivityValidatorTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/internal/statistics/validator/ProductivityValidatorTest.kt @@ -6,8 +6,8 @@ import com.intellij.internal.statistic.eventLog.FeatureUsageData import com.intellij.internal.statistic.eventLog.validator.ValidationResultType import com.intellij.internal.statistic.eventLog.validator.rules.EventContext import com.intellij.internal.statistic.eventLog.validator.rules.impl.CustomWhiteListRule -import com.intellij.openapi.extensions.Extensions -import com.intellij.testFramework.PlatformTestUtil +import com.intellij.openapi.application.ApplicationManager +import com.intellij.testFramework.registerExtension import junit.framework.TestCase import org.junit.Test @@ -21,8 +21,7 @@ class ProductivityValidatorTest : ProductivityFeaturesTest() { override fun setUp() { super.setUp() - PlatformTestUtil.registerExtension( - Extensions.getRootArea(), + ApplicationManager.getApplication().registerExtension( ProductivityFeaturesProvider.EP_NAME, TestProductivityFeatureProvider(), testRootDisposable ) diff --git a/platform/platform-tests/testSrc/com/intellij/lang/LanguageExtensionOrderTest.groovy b/platform/platform-tests/testSrc/com/intellij/lang/LanguageExtensionOrderTest.groovy index a6e599afc56c..bdecf16b0e8e 100644 --- a/platform/platform-tests/testSrc/com/intellij/lang/LanguageExtensionOrderTest.groovy +++ b/platform/platform-tests/testSrc/com/intellij/lang/LanguageExtensionOrderTest.groovy @@ -9,7 +9,7 @@ import com.intellij.openapi.extensions.impl.ExtensionsAreaImpl import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.JDOMUtil import com.intellij.testFramework.LightPlatformTestCase -import com.intellij.testFramework.PlatformTestUtil +import com.intellij.testFramework.ServiceContainerUtil import groovy.transform.CompileStatic @CompileStatic @@ -27,7 +27,7 @@ class LanguageExtensionOrderTest extends LightPlatformTestCase { } private void registerMetaLanguage() { - PlatformTestUtil.registerExtension myArea, MetaLanguage.EP_NAME, MyMetaLanguage.INSTANCE, testRootDisposable + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), MetaLanguage.EP_NAME, MyMetaLanguage.INSTANCE, testRootDisposable) } private void registerLanguageEP() { diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/NonProjectFileAccessTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/NonProjectFileAccessTest.java index 8c9e525b9478..2a7abcdf9dd3 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/NonProjectFileAccessTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/fileEditor/NonProjectFileAccessTest.java @@ -28,6 +28,7 @@ import com.intellij.openapi.vfs.WritingAccessProvider; import com.intellij.testFramework.EditorTestUtil; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.testFramework.PsiTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.ui.EditorNotifications; import com.intellij.ui.EditorNotificationsImpl; import com.intellij.util.NullableFunction; @@ -317,7 +318,7 @@ public class NonProjectFileAccessTest extends HeavyFileEditorManagerTestCase { private Set registerWriteAccessProvider(final VirtualFile... filesToDeny) { final Set requested = new LinkedHashSet<>(); - PlatformTestUtil.registerExtension(getProject().getExtensionArea(), WritingAccessProvider.EP_NAME, new WritingAccessProvider() { + ServiceContainerUtil.registerExtension(getProject(), WritingAccessProvider.EP_NAME, new WritingAccessProvider() { @NotNull @Override public Collection requestWriting(@NotNull Collection files) { @@ -331,7 +332,7 @@ public class NonProjectFileAccessTest extends HeavyFileEditorManagerTestCase { } private void registerAccessCheckExtension(Collection filesToAllow, Collection filesToDeny) { - PlatformTestUtil.registerExtension(getProject().getExtensionArea(), NonProjectFileWritingAccessExtension.EP_NAME, + ServiceContainerUtil.registerExtension(getProject(), NonProjectFileWritingAccessExtension.EP_NAME, new NonProjectFileWritingAccessExtension() { @Override public boolean isWritable(@NotNull VirtualFile file) { diff --git a/platform/service-container/overview.md b/platform/service-container/overview.md index bcaadd5b9eef..037362b1edf3 100644 --- a/platform/service-container/overview.md +++ b/platform/service-container/overview.md @@ -1,16 +1,21 @@ -This document is a more like a draft, that will be finally moved to [IntelliJ Platform SDK](https://www.jetbrains.org/intellij/sdk/docs/welcome.html) +This document is a more like a draft, that will be finally moved to [IntelliJ Platform SDK](https://www.jetbrains.org/intellij/sdk/docs/welcome.html) -## Light Service +## Service -[Service](http://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_services.html) that is not going to be overridden. No need to register it in a `plugin.xml`. +Please see [Service](https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_services.html). + +To replace (mock) service in tests, use [ServiceContainerUtil](https://github.com/JetBrains/intellij-community/blob/master/platform/testFramework/src/com/intellij/testFramework/ServiceContainerUtil.kt). + +### Light Service + +Service that is not going to be overridden. No need to register it in a `plugin.xml`. To register: annotate class using [@Service](https://github.com/JetBrains/intellij-community/blob/master/platform/core-api/src/com/intellij/openapi/components/Service.java) annotation. If service is written in Java and not Kotlin, mark class as `final`. Restrictions: -* not available for constructor injection (but in any case constructor injection is deprecated, because service should be requested only on demand). * constructor injection is not supported (since it is deprecated), but project level service can define constructor that accepts `Project`, and module level `Module`. -* if service it is a [PersistentStateComponent](http://www.jetbrains.org/intellij/sdk/docs/basics/persisting_state_of_components.html), roaming must be disabled (`roamingType` is set to `RoamingType.DISABLED`). +* if service it is a [PersistentStateComponent](https://www.jetbrains.org/intellij/sdk/docs/basics/persisting_state_of_components.html), roaming must be disabled (`roamingType` is set to `RoamingType.DISABLED`). * service class must be `final`. ## Preloading Activity diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java b/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java index 987eea4e6c83..ccbcc264a18f 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformLiteFixture.java @@ -57,7 +57,7 @@ public abstract class PlatformLiteFixture extends UsefulTestCase { public void registerExtension(@NotNull ExtensionsArea area, @NotNull ExtensionPointName name, @NotNull T extension) { //noinspection unchecked registerExtensionPoint(area, name, (Class)extension.getClass()); - PlatformTestUtil.registerExtension(area, name, extension, getTestRootDisposable()); + area.getExtensionPoint(name.getName()).registerExtension(extension, getTestRootDisposable()); } protected void registerExtensionPoint(@NotNull ExtensionPointName extensionPointName, @NotNull Class aClass) { diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java b/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java index 2fa142dd0b0a..95d472f5003e 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java @@ -25,7 +25,7 @@ import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.impl.ApplicationImpl; import com.intellij.openapi.application.impl.LaterInvocator; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.extensions.*; +import com.intellij.openapi.extensions.ProjectExtensionPointName; import com.intellij.openapi.extensions.impl.ExtensionPointImpl; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.impl.LoadTextUtil; @@ -141,21 +141,6 @@ public class PlatformTestUtil { ((ExtensionPointImpl)pointName.getPoint(project)).maskAll(newExtensions, parentDisposable, true); } - /** - * @deprecated Use {@link ExtensionPointName#getPoint(AreaInstance)} and {@link ExtensionPoint#registerExtension(Object, Disposable)}. - */ - @Deprecated - public static void registerExtension(@NotNull ExtensionPointName name, @NotNull T t, @NotNull Disposable parentDisposable) { - registerExtension(Extensions.getRootArea(), name, t, parentDisposable); - } - - public static void registerExtension(@NotNull ExtensionsArea area, - @NotNull BaseExtensionPointName name, - @NotNull T t, - @NotNull Disposable parentDisposable) { - area.getExtensionPoint(name.getName()).registerExtension(t, parentDisposable); - } - @Nullable public static String toString(@Nullable Object node, @Nullable Queryable.PrintInfo printInfo) { if (node instanceof AbstractTreeNode) { diff --git a/platform/testFramework/src/com/intellij/testFramework/ServiceContainerUtil.kt b/platform/testFramework/src/com/intellij/testFramework/ServiceContainerUtil.kt index 2d64bdab22d2..cd49764c2968 100644 --- a/platform/testFramework/src/com/intellij/testFramework/ServiceContainerUtil.kt +++ b/platform/testFramework/src/com/intellij/testFramework/ServiceContainerUtil.kt @@ -4,13 +4,22 @@ package com.intellij.testFramework import com.intellij.openapi.Disposable import com.intellij.openapi.components.ComponentManager +import com.intellij.openapi.extensions.BaseExtensionPointName import com.intellij.openapi.extensions.DefaultPluginDescriptor import com.intellij.serviceContainer.PlatformComponentManagerImpl +import org.jetbrains.annotations.TestOnly +@TestOnly fun ComponentManager.registerServiceInstance(serviceInterface: Class, instance: T) { (this as PlatformComponentManagerImpl).registerServiceInstance(serviceInterface, instance, DefaultPluginDescriptor("test")) } +@TestOnly fun ComponentManager.replaceService(serviceInterface: Class, instance: T, parentDisposable: Disposable) { (this as PlatformComponentManagerImpl).replaceServiceInstance(serviceInterface, instance, parentDisposable) +} + +@TestOnly +fun ComponentManager.registerExtension(name: BaseExtensionPointName, instance: T, parentDisposable: Disposable) { + extensionArea.getExtensionPoint(name.name).registerExtension(instance, parentDisposable) } \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java index fca09a215f4d..6d0ac77a015d 100644 --- a/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java @@ -1,31 +1,17 @@ -/* - * 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. - * 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-2019 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.codeInspection.visibility; import com.intellij.ToolExtensionPoints; import com.intellij.codeInsight.daemon.ImplicitUsageProvider; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.reference.RefElement; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.extensions.ExtensionPointName; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.siyeh.ig.LightJavaInspectionTestCase; import org.intellij.lang.annotations.Language; import org.jdom.Element; @@ -161,7 +147,7 @@ public class AccessCanBeTightenedInspectionTest extends LightJavaInspectionTestC myFixture.configureByFiles("y/C.java","x/Sub.java"); myFixture.checkHighlighting(); } - + public void testQualifiedAccessFromSubclassSamePackage() { myFixture.allowTreeAccessForAllFiles(); addJavaFile("x/Sub.java", "package x; " + @@ -336,7 +322,7 @@ public class AccessCanBeTightenedInspectionTest extends LightJavaInspectionTestC "public class MyTest {\n" + " public void foo() {}\n" + "}"); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() { @Override public void readExternal(Element element) throws InvalidDataException {} @@ -392,7 +378,7 @@ public class AccessCanBeTightenedInspectionTest extends LightJavaInspectionTestC " public void foo() {}\n" + " {foo();}\n" + "}"); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ExtensionPointName.create(ToolExtensionPoints.DEAD_CODE_TOOL), new EntryPointWithVisibilityLevel() { @Override public void readExternal(Element element) throws InvalidDataException {} @@ -445,10 +431,10 @@ public class AccessCanBeTightenedInspectionTest extends LightJavaInspectionTestC public void testSuggestPackagePrivateForImplicitWrittenFields() { addJavaFile("x/MyTest.java", "package x;\n" + "public class MyTest {\n" + - " String foo;\n" + - " {System.out.println(foo);}" + + " String foo;\n" + + " {System.out.println(foo);}" + "}"); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() { + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() { @Override public boolean isImplicitUsage(@NotNull PsiElement element) { return false; diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/MismatchedCollectionQueryUpdateInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/MismatchedCollectionQueryUpdateInspectionTest.java index 2ec92bb3e187..9a78886b12cb 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/MismatchedCollectionQueryUpdateInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/MismatchedCollectionQueryUpdateInspectionTest.java @@ -4,11 +4,12 @@ package com.siyeh.ig.bugs; import com.intellij.ToolExtensionPoints; import com.intellij.codeInsight.daemon.ImplicitUsageProvider; import com.intellij.codeInspection.InspectionProfileEntry; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.extensions.Extensions; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiField; import com.intellij.testFramework.LightProjectDescriptor; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.siyeh.ig.LightJavaInspectionTestCase; import org.jetbrains.annotations.NotNull; @@ -34,7 +35,7 @@ public class MismatchedCollectionQueryUpdateInspectionTest extends LightJavaInsp @Override protected void setUp() throws Exception { super.setUp(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ImplicitUsageProvider.EP_NAME, TEST_PROVIDER, myFixture.getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ImplicitUsageProvider.EP_NAME, TEST_PROVIDER, myFixture.getTestRootDisposable()); Extensions.getRootArea().getExtensionPoint(ToolExtensionPoints.DEAD_CODE_TOOL).getExtensions(); } diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/ImplicitCloserTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/ImplicitCloserTest.java index ef9abfeb5e35..3fcf491ed7de 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/ImplicitCloserTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/resources/ImplicitCloserTest.java @@ -1,13 +1,11 @@ -/* - * Copyright 2000-2017 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. - */ +// Copyright 2000-2019 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.siyeh.ig.resources; -import com.intellij.codeInspection.resources.ImplicitResourceCloser; import com.intellij.codeInspection.LocalInspectionTool; -import com.intellij.openapi.extensions.Extensions; +import com.intellij.codeInspection.resources.ImplicitResourceCloser; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.psi.PsiVariable; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.siyeh.ig.LightJavaInspectionTestCase; import org.jetbrains.annotations.NotNull; @@ -33,13 +31,11 @@ public class ImplicitCloserTest extends LightJavaInspectionTestCase { @Override protected void setUp() throws Exception { super.setUp(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), ImplicitResourceCloser.EP_NAME, NAME_RESOURCE_CLOSER, getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), ImplicitResourceCloser.EP_NAME, NAME_RESOURCE_CLOSER, getTestRootDisposable()); } @Override protected LocalInspectionTool getInspection() { return new AutoCloseableResourceInspection(); } - - } diff --git a/python/testSrc/com/jetbrains/python/quickFixes/PyRenameElementQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/PyRenameElementQuickFixTest.java index 939e10ede562..d6e6d4b69336 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/PyRenameElementQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/PyRenameElementQuickFixTest.java @@ -1,26 +1,12 @@ -/* - * 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. - * 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-2019 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.jetbrains.python.quickFixes; import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.lang.injection.MultiHostInjector; import com.intellij.lang.injection.MultiHostRegistrar; import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.TextRange; @@ -29,7 +15,7 @@ import com.intellij.psi.PsiLanguageInjectionHost; import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.refactoring.rename.NameSuggestionProvider; import com.intellij.refactoring.rename.PreferrableNameSuggestionProvider; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.testFramework.TestDataPath; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.PyBundle; @@ -65,8 +51,7 @@ public class PyRenameElementQuickFixTest extends PyQuickFixTestCase { * @see PyRenameElementQuickFixTest.RENAME_RESULT_BY_RENAME_HANDLER */ public static void registerTestNameSuggestionProvider(Disposable disposable) { - PlatformTestUtil.registerExtension( - Extensions.getRootArea(), NameSuggestionProvider.EP_NAME, createTestNameSuggestionProvider(), disposable); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), NameSuggestionProvider.EP_NAME, createTestNameSuggestionProvider(), disposable); } /** diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java index 6238187003bb..41b1a9dbe81c 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java @@ -1,28 +1,13 @@ -/* - * 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. - * 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-2019 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.util.xml; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.testFramework.Timings; import com.intellij.util.ConcurrencyUtil; import com.intellij.util.containers.ContainerUtil; @@ -41,12 +26,11 @@ import java.util.concurrent.CountDownLatch; * @author peter */ public class DomConcurrencyStressTest extends DomTestCase { - private void registerExtender(final Class elementClass, final Class extenderClass) { final DomExtenderEP extenderEP = new DomExtenderEP(); extenderEP.domClassName = elementClass.getName(); extenderEP.extenderClassName = extenderClass.getName(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), DomExtenderEP.EP_NAME, extenderEP, getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), DomExtenderEP.EP_NAME, extenderEP, getTestRootDisposable()); } private static void runThreads(int threadCount, final Runnable runnable) throws Throwable { diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DomExtensionsTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DomExtensionsTest.java index b8a577b06820..b6f7715c149c 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/DomExtensionsTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/DomExtensionsTest.java @@ -1,23 +1,9 @@ -/* - * 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. - * 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-2019 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.util.xml; -import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.Key; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.util.ParameterizedTypeImpl; import com.intellij.util.ReflectionUtil; import com.intellij.util.xml.impl.DomTestCase; @@ -190,7 +176,7 @@ public class DomExtensionsTest extends DomTestCase { final DomExtenderEP extenderEP = new DomExtenderEP(); extenderEP.domClassName = domClass.getName(); extenderEP.extenderClassName = extenderClass.getName(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), DomExtenderEP.EP_NAME, extenderEP, getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), DomExtenderEP.EP_NAME, extenderEP, getTestRootDisposable()); } diff --git a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java index e0714e523f55..50e24835fac4 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/stubs/DomStubBuilderTest.java @@ -1,21 +1,7 @@ -/* - * 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. - * 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-2019 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.util.xml.stubs; -import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.PsiManagerEx; @@ -25,7 +11,7 @@ import com.intellij.psi.stubs.Stub; import com.intellij.psi.stubs.StubTreeLoader; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; -import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.ServiceContainerUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ref.GCWatcher; import com.intellij.util.xml.DomFileElement; @@ -86,7 +72,7 @@ public class DomStubBuilderTest extends DomStubTest { DomExtenderEP ep = new DomExtenderEP(); ep.domClassName = Bar.class.getName(); ep.extenderClassName = TestExtender.class.getName(); - PlatformTestUtil.registerExtension(Extensions.getRootArea(), DomExtenderEP.EP_NAME, ep, myFixture.getTestRootDisposable()); + ServiceContainerUtil.registerExtension(ApplicationManager.getApplication(), DomExtenderEP.EP_NAME, ep, myFixture.getTestRootDisposable()); doBuilderTest("extender.xml", "File:foo\n" + " Element:foo\n" +