diff --git a/plugins/gradle/src/META-INF/plugin.xml b/plugins/gradle/src/META-INF/plugin.xml index 1c6dffafb409..9b1875b03040 100644 --- a/plugins/gradle/src/META-INF/plugin.xml +++ b/plugins/gradle/src/META-INF/plugin.xml @@ -72,6 +72,14 @@ + + + + + + + + @@ -84,33 +92,6 @@ - - - org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesModel - - - org.jetbrains.plugins.gradle.sync.GradleProjectStructureHelper - - - org.jetbrains.plugins.gradle.model.id.GradleEntityIdMapper - - - org.jetbrains.plugins.gradle.util.GradleProjectStructureContext - - - org.jetbrains.plugins.gradle.manage.GradleLocalNodeManageHelper - - - org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesDetector - - - org.jetbrains.plugins.gradle.notification.GradleConfigNotificationManager - - - org.jetbrains.plugins.gradle.task.GradleTaskManager - - - diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleImportEntityAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleImportEntityAction.java index 5c63f913bd1d..2ed96927ff60 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleImportEntityAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleImportEntityAction.java @@ -1,5 +1,6 @@ package org.jetbrains.plugins.gradle.action; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.ui.treeStructure.Tree; import org.jetbrains.annotations.NotNull; @@ -38,7 +39,7 @@ public class GradleImportEntityAction extends AbstractGradleSyncTreeNodeAction { @Override protected void doActionPerformed(@NotNull Collection> nodes, @NotNull Project project, @NotNull Tree tree) { - final GradleLocalNodeManageHelper helper = project.getComponent(GradleLocalNodeManageHelper.class); + final GradleLocalNodeManageHelper helper = ServiceManager.getService(project, GradleLocalNodeManageHelper.class); helper.importNodes(nodes); } } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRefreshProjectAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRefreshProjectAction.java index 3838ce27c627..9d599e3ff2e7 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRefreshProjectAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRefreshProjectAction.java @@ -2,6 +2,7 @@ package org.jetbrains.plugins.gradle.action; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; @@ -40,12 +41,12 @@ public class GradleRefreshProjectAction extends AbstractGradleLinkedProjectActio if (model != null) { model.rebuild(); } - GradleConfigNotificationManager notificationManager = project.getComponent(GradleConfigNotificationManager.class); + GradleConfigNotificationManager notificationManager = ServiceManager.getService(project, GradleConfigNotificationManager.class); notificationManager.processRefreshError(message); myErrorMessage.set(null); } boolean enabled = false; - final GradleTaskManager taskManager = project.getComponent(GradleTaskManager.class); + final GradleTaskManager taskManager = ServiceManager.getService(project, GradleTaskManager.class); if (taskManager != null) { enabled = !taskManager.hasTaskOfTypeInProgress(GradleTaskType.RESOLVE_PROJECT); } @@ -57,7 +58,7 @@ public class GradleRefreshProjectAction extends AbstractGradleLinkedProjectActio // We save all documents because there is more than one target 'build.gradle' file in case of multi-module gradle project. FileDocumentManager.getInstance().saveAllDocuments(); - GradleConfigNotificationManager notificationManager = project.getComponent(GradleConfigNotificationManager.class); + GradleConfigNotificationManager notificationManager = ServiceManager.getService(project, GradleConfigNotificationManager.class); if (!GradleUtil.isGradleAvailable(project)) { notificationManager.processUnknownGradleHome(); return; diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRemoveIdeEntityAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRemoveIdeEntityAction.java index db7230ed6921..da61a6093d76 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRemoveIdeEntityAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleRemoveIdeEntityAction.java @@ -1,5 +1,6 @@ package org.jetbrains.plugins.gradle.action; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.ui.treeStructure.Tree; import org.jetbrains.annotations.NotNull; @@ -44,7 +45,7 @@ public class GradleRemoveIdeEntityAction extends AbstractGradleSyncTreeNodeActio @Override protected void doActionPerformed(@NotNull Collection> nodes, @NotNull Project project, @NotNull Tree tree) { - final GradleLocalNodeManageHelper helper = project.getComponent(GradleLocalNodeManageHelper.class); + final GradleLocalNodeManageHelper helper = ServiceManager.getService(project, GradleLocalNodeManageHelper.class); helper.removeNodes(nodes); } } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleShowConflictDetailsAction.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleShowConflictDetailsAction.java index 006e77449ddf..0a61d888ed65 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleShowConflictDetailsAction.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/action/GradleShowConflictDetailsAction.java @@ -55,7 +55,7 @@ public class GradleShowConflictDetailsAction extends AbstractGradleSyncTreeNodeA protected void doActionPerformed(@NotNull Collection> nodes, @NotNull Project project, @NotNull Tree tree) { assert nodes.size() == 1; final GradleProjectStructureNode node = nodes.iterator().next(); - final GradleProjectStructureContext context = project.getComponent(GradleProjectStructureContext.class); + final GradleProjectStructureContext context = ServiceManager.getService(project, GradleProjectStructureContext.class); final Object entity = node.getDescriptor().getElement().mapToEntity(context); if (entity == null) { return; diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleToolWindowPanel.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleToolWindowPanel.java index 87082a36c9db..97a293306629 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleToolWindowPanel.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleToolWindowPanel.java @@ -3,6 +3,7 @@ package org.jetbrains.plugins.gradle.config; import com.intellij.openapi.actionSystem.ActionGroup; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.ActionToolbar; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.SimpleToolWindowPanel; import com.intellij.ui.IdeBorderFactory; @@ -91,7 +92,8 @@ public abstract class GradleToolWindowPanel extends SimpleToolWindowPanel { GradleUtil.refreshProject(myProject, new Consumer() { @Override public void consume(String s) { - GradleConfigNotificationManager notificationManager = myProject.getComponent(GradleConfigNotificationManager.class); + GradleConfigNotificationManager notificationManager + = ServiceManager.getService(myProject, GradleConfigNotificationManager.class); notificationManager.processRefreshError(s); UIUtil.invokeLaterIfNeeded(new Runnable() { @Override diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleDependencyManager.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleDependencyManager.java index 77807200391e..9ca2e274f7bc 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleDependencyManager.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleDependencyManager.java @@ -1,5 +1,6 @@ package org.jetbrains.plugins.gradle.manage; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.libraries.Library; @@ -65,7 +66,8 @@ public class GradleDependencyManager { ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module); final ModifiableRootModel moduleRootModel = moduleRootManager.getModifiableModel(); try { - final GradleProjectStructureHelper projectStructureHelper = module.getProject().getComponent(GradleProjectStructureHelper.class); + final GradleProjectStructureHelper projectStructureHelper + = ServiceManager.getService(module.getProject(), GradleProjectStructureHelper.class); for (GradleModuleDependency dependency : dependencies) { final String moduleName = dependency.getName(); final Module intellijModule = projectStructureHelper.findIdeModule(moduleName); @@ -110,7 +112,7 @@ public class GradleDependencyManager { } for (GradleLibraryDependency dependency : dependencies) { - GradleProjectStructureHelper helper = module.getProject().getComponent(GradleProjectStructureHelper.class); + GradleProjectStructureHelper helper = ServiceManager.getService(module.getProject(), GradleProjectStructureHelper.class); ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module); final ModifiableRootModel moduleRootModel = moduleRootManager.getModifiableModel(); try { diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportBuilder.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportBuilder.java index aefb78dbd352..673811d32592 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportBuilder.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/manage/GradleProjectImportBuilder.java @@ -1,6 +1,7 @@ package org.jetbrains.plugins.gradle.manage; import com.intellij.ide.util.projectWizard.WizardContext; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.ConfigurationException; @@ -235,14 +236,14 @@ public class GradleProjectImportBuilder extends ProjectImportBuilder changes, @NotNull final Project project) { - final Collection toMerge = buildMergeData(changes, project.getComponent(GradleProjectStructureContext.class)); + final Collection toMerge = buildMergeData(changes, ServiceManager.getService(project, GradleProjectStructureContext.class)); if (toMerge == null) { return; } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureChangesPanel.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureChangesPanel.java index 9ffdd267d41f..056ae011c46c 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureChangesPanel.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/sync/GradleProjectStructureChangesPanel.java @@ -57,13 +57,15 @@ public class GradleProjectStructureChangesPanel extends GradleToolWindowPanel { private final GradleLocalSettings mySettings; - private Tree myTree; - private GradleProjectStructureTreeModel myTreeModel; - private GradleProjectStructureContext myContext; - private Object myNodeUnderMouse; - private boolean mySuppressCollapseTracking; + private Tree myTree; + private GradleProjectStructureTreeModel myTreeModel; + private GradleProjectStructureContext myContext; + private Object myNodeUnderMouse; + private boolean mySuppressCollapseTracking; - public GradleProjectStructureChangesPanel(@NotNull Project project, @NotNull GradleProjectStructureContext context) { + public GradleProjectStructureChangesPanel(@NotNull Project project, + @NotNull GradleProjectStructureContext context) + { super(project, GradleConstants.TOOL_WINDOW_TOOLBAR_PLACE); myContext = context; myToolbarControls.add(new GradleProjectStructureFiltersPanel()); @@ -144,7 +146,6 @@ public class GradleProjectStructureChangesPanel extends GradleToolWindowPanel { myTreeModel.rebuild(); } - @Nullable @Override public Object getData(@NonNls String dataId) { diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/task/GradleResolveProjectTask.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/task/GradleResolveProjectTask.java index d5e568099466..29c1720896dc 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/task/GradleResolveProjectTask.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/task/GradleResolveProjectTask.java @@ -39,7 +39,7 @@ public class GradleResolveProjectTask extends AbstractGradleTask { GradleProjectStructureChangesModel model = null; final Project intellijProject = getIntellijProject(); if (intellijProject != null && !intellijProject.isDisposed()) { - model = intellijProject.getComponent(GradleProjectStructureChangesModel.class); + model = ServiceManager.getService(intellijProject, GradleProjectStructureChangesModel.class); } final GradleProject project; try { diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/ui/GradleToolWindowFactory.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/ui/GradleToolWindowFactory.java index 9895a2152102..99bed994756c 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/ui/GradleToolWindowFactory.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/ui/GradleToolWindowFactory.java @@ -1,6 +1,7 @@ package org.jetbrains.plugins.gradle.ui; import com.intellij.ProjectTopics; +import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleRootAdapter; @@ -8,14 +9,17 @@ import com.intellij.openapi.roots.ModuleRootEvent; import com.intellij.openapi.wm.ToolWindow; import com.intellij.openapi.wm.ToolWindowFactory; import com.intellij.ui.content.impl.ContentImpl; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.gradle.config.PlatformFacade; import org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesPanel; import org.jetbrains.plugins.gradle.util.GradleBundle; import org.jetbrains.plugins.gradle.util.GradleProjectStructureContext; public class GradleToolWindowFactory implements ToolWindowFactory, DumbAware { + @Override public void createToolWindowContent(final Project project, final ToolWindow toolWindow) { - final GradleProjectStructureContext context = project.getComponent(GradleProjectStructureContext.class); + final GradleProjectStructureContext context = ServiceManager.getService(project, GradleProjectStructureContext.class); final GradleProjectStructureChangesPanel panel = new GradleProjectStructureChangesPanel(project, context); final String syncTitle = GradleBundle.message("gradle.sync.title.tab"); diff --git a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testutil/AbstractGradleTest.groovy b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testutil/AbstractGradleTest.groovy index e374dbcb2dcf..102e13c2e34a 100644 --- a/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testutil/AbstractGradleTest.groovy +++ b/plugins/gradle/testSources/org/jetbrains/plugins/gradle/testutil/AbstractGradleTest.groovy @@ -27,11 +27,7 @@ import org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesModel import org.jetbrains.plugins.gradle.sync.GradleProjectStructureHelper import org.jetbrains.plugins.gradle.sync.GradleProjectStructureTreeModel import org.jetbrains.plugins.gradle.ui.GradleProjectStructureNodeFilter -import org.jetbrains.plugins.gradle.util.GradleLibraryPathTypeMapper -import org.jetbrains.plugins.gradle.util.GradleProjectStructureContext -import org.jetbrains.plugins.gradle.util.GradleUtil -import org.jetbrains.plugins.gradle.util.TestGradleJarManager -import org.jetbrains.plugins.gradle.util.TestGradleMovedJarsPostProcessor +import org.jetbrains.plugins.gradle.util.* import org.junit.Before import org.picocontainer.MutablePicoContainer import org.picocontainer.defaults.DefaultPicoContainer @@ -59,7 +55,19 @@ public abstract class AbstractGradleTest { intellij = new IntellijProjectBuilder() changesBuilder = new ChangeBuilder() treeChecker = new ProjectStructureChecker() - container = new DefaultPicoContainer() + container = new DefaultPicoContainer() { + @Override + Object getComponentInstance(Object componentKey) { + def result = super.getComponentInstance(componentKey) + if (result == null && componentKey instanceof String) { + def clazz = Class.forName(componentKey) + if (clazz != null) { + result = super.getComponentInstance(clazz) + } + } + result + } + } container.registerComponentInstance(Project, intellij.project) container.registerComponentInstance(PlatformFacade, intellij.platformFacade as PlatformFacade) container.registerComponentImplementation(GradleProjectStructureChangesModel) @@ -79,6 +87,7 @@ public abstract class AbstractGradleTest { configureContainer(container) intellij.projectStub.getComponent = { clazz -> container.getComponentInstance(clazz) } + intellij.projectStub.getPicoContainer = { container } changesModel = container.getComponentInstance(GradleProjectStructureChangesModel) as GradleProjectStructureChangesModel