IDEA-83532 Gradle: Change gradle plugin configuration from ProjectComponent to ProjectService

This commit is contained in:
Denis.Zhdanov
2013-01-22 12:01:38 +04:00
parent c0ec56fd9e
commit 3f31bfe467
13 changed files with 58 additions and 54 deletions
+8 -27
View File
@@ -72,6 +72,14 @@
<projectService serviceImplementation="org.jetbrains.plugins.gradle.config.GradleSettings"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.config.GradleLocalSettings"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesModel"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.sync.GradleProjectStructureHelper"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.model.id.GradleEntityIdMapper"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.util.GradleProjectStructureContext"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.manage.GradleLocalNodeManageHelper"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesDetector"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.notification.GradleConfigNotificationManager"/>
<projectService serviceImplementation="org.jetbrains.plugins.gradle.task.GradleTaskManager"/>
<toolWindow id="JetGradle" anchor="right" icon="GradleIcons.ToolWindowGradle"
factoryClass="org.jetbrains.plugins.gradle.ui.GradleToolWindowFactory"/>
@@ -84,33 +92,6 @@
<groovyFrameworkConfigNotification implementation="org.jetbrains.plugins.gradle.config.GradleGroovyConfigNotification"/>
</extensions>
<project-components>
<component>
<implementation-class>org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesModel</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.sync.GradleProjectStructureHelper</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.model.id.GradleEntityIdMapper</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.util.GradleProjectStructureContext</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.manage.GradleLocalNodeManageHelper</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.sync.GradleProjectStructureChangesDetector</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.notification.GradleConfigNotificationManager</implementation-class>
</component>
<component>
<implementation-class>org.jetbrains.plugins.gradle.task.GradleTaskManager</implementation-class>
</component>
</project-components>
<actions>
<!-- Tool window toolbar actions -->
@@ -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<GradleProjectStructureNode<?>> 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);
}
}
@@ -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;
@@ -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<GradleProjectStructureNode<?>> 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);
}
}
@@ -55,7 +55,7 @@ public class GradleShowConflictDetailsAction extends AbstractGradleSyncTreeNodeA
protected void doActionPerformed(@NotNull Collection<GradleProjectStructureNode<?>> 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;
@@ -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<String>() {
@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
@@ -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 {
@@ -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<GradleProje
// Register libraries.
myLibraryManager.importLibraries(projectWithResolvedLibraries.getLibraries(), project);
GradleProjectStructureHelper helper = project.getComponent(GradleProjectStructureHelper.class);
GradleProjectStructureHelper helper = ServiceManager.getService(project, GradleProjectStructureHelper.class);
for (GradleModule module : projectWithResolvedLibraries.getModules()) {
Module intellijModule = helper.findIdeModule(module);
assert intellijModule != null;
myDependencyManager.importDependencies(module.getDependencies(), intellijModule);
}
GradleProjectStructureChangesModel changesModel = project.getComponent(GradleProjectStructureChangesModel.class);
GradleProjectStructureChangesModel changesModel = ServiceManager.getService(project, GradleProjectStructureChangesModel.class);
changesModel.update(projectWithResolvedLibraries);
}
});
@@ -15,6 +15,7 @@
*/
package org.jetbrains.plugins.gradle.sync;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
import com.intellij.util.containers.ContainerUtilRt;
@@ -69,7 +70,7 @@ public class GradleMovedJarsPostProcessor implements GradleProjectStructureChang
@Override
public void processChanges(@NotNull final Collection<GradleProjectStructureChange> changes, @NotNull final Project project) {
final Collection<MergeInfo> toMerge = buildMergeData(changes, project.getComponent(GradleProjectStructureContext.class));
final Collection<MergeInfo> toMerge = buildMergeData(changes, ServiceManager.getService(project, GradleProjectStructureContext.class));
if (toMerge == null) {
return;
}
@@ -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) {
@@ -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 {
@@ -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");
@@ -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