From: Julien HENRY Date: Wed, 16 Jan 2013 14:49:32 +0000 (+0100) Subject: SONAR-4069 Don't register automatically Task executors X-Git-Tag: 3.5~392 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3182ee0ca57db767c614fa66deb4e82f6d4699be;p=sonarqube.git SONAR-4069 Don't register automatically Task executors but force users to declare them in extension list. --- diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java index 68562377449..37f6ad15a8f 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/AbstractTaskModule.java @@ -22,8 +22,10 @@ package org.sonar.batch.bootstrap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.batch.TaskDefinition; +import org.sonar.api.batch.TaskExecutor; import org.sonar.api.config.EmailSettings; import org.sonar.api.resources.ResourceTypes; +import org.sonar.api.utils.SonarException; import org.sonar.batch.DefaultResourceCreationLock; import org.sonar.batch.components.PastMeasuresLoader; import org.sonar.batch.components.PastSnapshotFinder; @@ -40,6 +42,7 @@ import org.sonar.batch.index.LinkPersister; import org.sonar.batch.index.MeasurePersister; import org.sonar.batch.index.MemoryOptimizer; import org.sonar.batch.index.SourcePersister; +import org.sonar.batch.tasks.ListTaskExecutor; import org.sonar.core.i18n.I18nManager; import org.sonar.core.i18n.RuleI18nManager; import org.sonar.core.metric.CacheMetricFinder; @@ -73,10 +76,10 @@ public abstract class AbstractTaskModule extends Module { @Override protected void configure() { logSettings(); - container.addSingleton(task.getExecutor()); registerCoreComponents(); registerDatabaseComponents(); registerTaskExtensions(); + registerCoreTasks(); } private void registerCoreComponents() { @@ -128,6 +131,10 @@ public abstract class AbstractTaskModule extends Module { container.addSingleton(BatchDatabaseSessionFactory.class); } + private void registerCoreTasks() { + container.addSingleton(ListTaskExecutor.class); + } + private void registerTaskExtensions() { ExtensionInstaller installer = container.getComponentByType(ExtensionInstaller.class); installer.installTaskExtensions(container, projectPresent); @@ -142,7 +149,13 @@ public abstract class AbstractTaskModule extends Module { */ @Override protected void doStart() { - container.getComponentByType(task.getExecutor()).execute(); + TaskExecutor taskExecutor = container.getComponentByType(task.getExecutor()); + if (taskExecutor != null) { + taskExecutor.execute(); + } + else { + throw new SonarException("Extension " + task.getExecutor() + " was not found in declared extensions."); + } } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectTaskModule.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectTaskModule.java index ab727f40fc8..3025491d452 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectTaskModule.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectTaskModule.java @@ -24,6 +24,7 @@ import org.sonar.batch.DefaultFileLinesContextFactory; import org.sonar.batch.ProjectConfigurator; import org.sonar.batch.ProjectTree; import org.sonar.batch.index.DefaultIndex; +import org.sonar.batch.tasks.InspectionTaskExecutor; public class ProjectTaskModule extends AbstractTaskModule { @@ -35,6 +36,7 @@ public class ProjectTaskModule extends AbstractTaskModule { protected void configure() { super.configure(); registerCoreComponentsRequiringProject(); + registerCoreTasksRequiringProject(); } private void registerCoreComponentsRequiringProject() { @@ -49,4 +51,8 @@ public class ProjectTaskModule extends AbstractTaskModule { container.addSingleton(DryRunDatabase.class); } + private void registerCoreTasksRequiringProject() { + container.addSingleton(InspectionTaskExecutor.class); + } + } diff --git a/sonar-batch/src/main/java/org/sonar/batch/tasks/InspectionTaskDefinition.java b/sonar-batch/src/main/java/org/sonar/batch/tasks/InspectionTaskDefinition.java index 0978565af9c..530a9d8c33c 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/tasks/InspectionTaskDefinition.java +++ b/sonar-batch/src/main/java/org/sonar/batch/tasks/InspectionTaskDefinition.java @@ -25,12 +25,12 @@ import org.sonar.api.batch.TaskExecutor; public class InspectionTaskDefinition implements TaskDefinition { - public static final String COMMAND = "analyse-project"; + public static final String COMMAND = "inspect"; public TaskDescriptor getTaskDescriptor() { return TaskDescriptor.create() - .setDescription("Start a Sonar analysis of a project") - .setName("Sonar project analysis") + .setDescription("Start a Sonar inspection of a project") + .setName("Sonar project inspection") .setCommand(COMMAND) .setRequiresProject(true); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/tasks/ListTaskExecutor.java b/sonar-batch/src/main/java/org/sonar/batch/tasks/ListTaskExecutor.java index 45226963b80..428c8ea8f2b 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/tasks/ListTaskExecutor.java +++ b/sonar-batch/src/main/java/org/sonar/batch/tasks/ListTaskExecutor.java @@ -34,7 +34,7 @@ public class ListTaskExecutor implements TaskExecutor { public void execute() { for (TaskDefinition task : taskManager.getTasks()) { TaskDescriptor desc = task.getTaskDescriptor(); - System.out.println(" " + desc.getCommand() + ": " + desc.getDecription()); + System.out.println(" " + desc.getCommand() + ": " + desc.getDescription()); } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/TaskDescriptor.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/TaskDescriptor.java index 78cda168eda..3933c6da735 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/TaskDescriptor.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/TaskDescriptor.java @@ -26,7 +26,7 @@ package org.sonar.api.batch; public class TaskDescriptor { private String name; - private String decription; + private String description; private String command; private boolean requiresProject = false; @@ -47,12 +47,12 @@ public class TaskDescriptor { return this; } - public String getDecription() { - return decription; + public String getDescription() { + return description; } - public TaskDescriptor setDescription(String decription) { - this.decription = decription; + public TaskDescriptor setDescription(String description) { + this.description = description; return this; }