From 1485fe5620e48f1c7ba9e06c31398bd0bbcda949 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Vilain Date: Thu, 4 Apr 2013 18:53:59 +0200 Subject: [PATCH] (SONAR-3893) Improve the highlighter API to not depend on sonar-channel and allow to work on multi-line tokens - Fixed IoC issues in integration tests --- .../batch/scan/ProjectScanContainer.java | 17 +++---- .../component/GraphPerspectiveBuilder.java | 35 ++++--------- .../component/GraphPerspectiveLoader.java | 36 +++++++++++++ .../core/component/PerspectiveBuilder.java | 1 - .../sonar/core/component/ScanGraphStore.java | 7 ++- .../core/component/SnapshotPerspectives.java | 16 +++--- .../org/sonar/core/test/TestPlanBuilder.java | 12 +---- .../core/test/TestPlanPerspectiveLoader.java | 19 +++++++ .../org/sonar/core/test/TestableBuilder.java | 12 +---- .../core/test/TestablePerspectiveLoader.java | 19 +++++++ .../sonar/core/test/TestPlanBuilderTest.java | 13 +++-- .../sonar/core/test/TestableBuilderTest.java | 13 +++-- .../org/sonar/server/platform/Platform.java | 50 +++---------------- 13 files changed, 132 insertions(+), 118 deletions(-) create mode 100644 sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveLoader.java create mode 100644 sonar-core/src/main/java/org/sonar/core/test/TestPlanPerspectiveLoader.java create mode 100644 sonar-core/src/main/java/org/sonar/core/test/TestablePerspectiveLoader.java diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectScanContainer.java b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectScanContainer.java index 200043afffe..b721918f0a6 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectScanContainer.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectScanContainer.java @@ -19,8 +19,6 @@ */ package org.sonar.batch.scan; -import org.sonar.batch.bootstrap.ExtensionMatcher; - import org.sonar.api.BatchExtension; import org.sonar.api.batch.InstantiationStrategy; import org.sonar.api.platform.ComponentContainer; @@ -30,17 +28,10 @@ import org.sonar.batch.DefaultResourceCreationLock; import org.sonar.batch.ProjectConfigurator; import org.sonar.batch.ProjectTree; import org.sonar.batch.bootstrap.ExtensionInstaller; +import org.sonar.batch.bootstrap.ExtensionMatcher; import org.sonar.batch.bootstrap.ExtensionUtils; import org.sonar.batch.bootstrap.MetricProvider; -import org.sonar.batch.index.DefaultIndex; -import org.sonar.batch.index.DefaultPersistenceManager; -import org.sonar.batch.index.DefaultResourcePersister; -import org.sonar.batch.index.DependencyPersister; -import org.sonar.batch.index.EventPersister; -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.index.*; import org.sonar.batch.scan.maven.FakeMavenPluginExecutor; import org.sonar.batch.scan.maven.MavenPluginExecutor; import org.sonar.core.component.ScanGraph; @@ -49,7 +40,9 @@ import org.sonar.core.component.ScanPerspectives; import org.sonar.core.notification.DefaultNotificationManager; import org.sonar.core.source.HighlightableBuilder; import org.sonar.core.test.TestPlanBuilder; +import org.sonar.core.test.TestPlanPerspectiveLoader; import org.sonar.core.test.TestableBuilder; +import org.sonar.core.test.TestablePerspectiveLoader; public class ProjectScanContainer extends ComponentContainer { public ProjectScanContainer(ComponentContainer taskContainer) { @@ -82,6 +75,8 @@ public class ProjectScanContainer extends ComponentContainer { ProjectLock.class, LastSnapshots.class, ScanGraph.create(), + TestPlanPerspectiveLoader.class, + TestablePerspectiveLoader.class, TestPlanBuilder.class, TestableBuilder.class, HighlightableBuilder.class, diff --git a/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveBuilder.java b/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveBuilder.java index 30f9fe07197..4be41e74187 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveBuilder.java +++ b/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveBuilder.java @@ -19,43 +19,37 @@ */ package org.sonar.core.component; -import com.tinkerpop.blueprints.Direction; -import com.tinkerpop.blueprints.Vertex; import org.sonar.api.component.Component; import org.sonar.api.component.Perspective; -import org.sonar.core.graph.BeanVertex; import org.sonar.core.graph.EdgePath; -import org.sonar.core.graph.GraphUtil; public abstract class GraphPerspectiveBuilder extends PerspectiveBuilder { protected final ScanGraph graph; protected final EdgePath path; - protected final String perspectiveKey; + protected final GraphPerspectiveLoader perspectiveLoader; - protected GraphPerspectiveBuilder(ScanGraph graph, String perspectiveKey, Class perspectiveClass, EdgePath path) { + protected GraphPerspectiveBuilder(ScanGraph graph, Class perspectiveClass, EdgePath path, + GraphPerspectiveLoader perspectiveLoader) { super(perspectiveClass); this.graph = graph; this.path = path; - this.perspectiveKey = perspectiveKey; - } - - public T load(ComponentVertex component) { - Vertex perspectiveVertex = GraphUtil.singleAdjacent(component.element(), Direction.OUT, getPerspectiveKey()); - if (perspectiveVertex != null) { - return (T) component.beanGraph().wrap(perspectiveVertex, getBeanClass()); - } - return null; + this.perspectiveLoader = perspectiveLoader; } public T create(ComponentVertex component) { - return (T) component.beanGraph().createAdjacentVertex(component, getBeanClass(), getPerspectiveKey()); + return (T) component.beanGraph().createAdjacentVertex(component, perspectiveLoader.getBeanClass(), + perspectiveLoader.getPerspectiveKey()); } public EdgePath path() { return path; } + public GraphPerspectiveLoader getPerspectiveLoader() { + return perspectiveLoader; + } + @Override protected T loadPerspective(Class perspectiveClass, Component component) { ComponentVertex vertex; @@ -66,7 +60,7 @@ public abstract class GraphPerspectiveBuilder extends Per } if (vertex != null) { - T perspective = load(vertex); + T perspective = perspectiveLoader.load(vertex); if (perspective == null) { perspective = create(vertex); } @@ -74,11 +68,4 @@ public abstract class GraphPerspectiveBuilder extends Per } return null; } - - - protected String getPerspectiveKey() { - return perspectiveKey; - } - - protected abstract Class getBeanClass(); } diff --git a/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveLoader.java b/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveLoader.java new file mode 100644 index 00000000000..38325ad4f58 --- /dev/null +++ b/sonar-core/src/main/java/org/sonar/core/component/GraphPerspectiveLoader.java @@ -0,0 +1,36 @@ +package org.sonar.core.component; + +import com.tinkerpop.blueprints.Direction; +import com.tinkerpop.blueprints.Vertex; +import org.sonar.api.component.Perspective; +import org.sonar.core.graph.BeanVertex; +import org.sonar.core.graph.GraphUtil; + +public abstract class GraphPerspectiveLoader { + + protected final String perspectiveKey; + protected final Class perspectiveClass; + + protected GraphPerspectiveLoader(String perspectiveKey, Class perspectiveClass) { + this.perspectiveKey = perspectiveKey; + this.perspectiveClass = perspectiveClass; + } + + public T load(ComponentVertex component) { + Vertex perspectiveVertex = GraphUtil.singleAdjacent(component.element(), Direction.OUT, getPerspectiveKey()); + if (perspectiveVertex != null) { + return (T) component.beanGraph().wrap(perspectiveVertex, getBeanClass()); + } + return null; + } + + protected String getPerspectiveKey() { + return perspectiveKey; + } + + protected Class getPerspectiveClass() { + return perspectiveClass; + } + + protected abstract Class getBeanClass(); +} diff --git a/sonar-core/src/main/java/org/sonar/core/component/PerspectiveBuilder.java b/sonar-core/src/main/java/org/sonar/core/component/PerspectiveBuilder.java index a605ed40170..1577ce5dec0 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/PerspectiveBuilder.java +++ b/sonar-core/src/main/java/org/sonar/core/component/PerspectiveBuilder.java @@ -37,5 +37,4 @@ public abstract class PerspectiveBuilder implements Batch } protected abstract T loadPerspective(Class perspectiveClass, Component component); - } diff --git a/sonar-core/src/main/java/org/sonar/core/component/ScanGraphStore.java b/sonar-core/src/main/java/org/sonar/core/component/ScanGraphStore.java index f527cf00e22..bb811f09fe4 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/ScanGraphStore.java +++ b/sonar-core/src/main/java/org/sonar/core/component/ScanGraphStore.java @@ -64,10 +64,13 @@ public class ScanGraphStore { for (PerspectiveBuilder builder : builders) { if(builder instanceof GraphPerspectiveBuilder) { GraphPerspectiveBuilder graphPerspectiveBuilder = (GraphPerspectiveBuilder)builder; - Perspective perspective = graphPerspectiveBuilder.load(component); + Perspective perspective = graphPerspectiveBuilder.getPerspectiveLoader().load(component); if (perspective != null) { serializePerspectiveData(mapper, component, snapshotId, graphPerspectiveBuilder); } + } else { + LoggerFactory.getLogger(ScanGraphStore.class).info("Received persistence request for perspective " + + builder.getPerspectiveClass().toString()); } } } @@ -80,7 +83,7 @@ public class ScanGraphStore { mapper.insert(new GraphDto() .setData(data) .setFormat("graphson") - .setPerspective(builder.getPerspectiveKey()) + .setPerspective(builder.getPerspectiveLoader().getPerspectiveKey()) .setVersion(1) .setResourceId((Long) component.element().getProperty("rid")) .setSnapshotId(snapshotId) diff --git a/sonar-core/src/main/java/org/sonar/core/component/SnapshotPerspectives.java b/sonar-core/src/main/java/org/sonar/core/component/SnapshotPerspectives.java index d64ee818d93..e40f8bfd197 100644 --- a/sonar-core/src/main/java/org/sonar/core/component/SnapshotPerspectives.java +++ b/sonar-core/src/main/java/org/sonar/core/component/SnapshotPerspectives.java @@ -35,19 +35,19 @@ import java.util.Map; public class SnapshotPerspectives implements ServerComponent { private final GraphDao dao; - private final Map, PerspectiveBuilder> builders = Maps.newHashMap(); + private final Map, GraphPerspectiveLoader> loaders = Maps.newHashMap(); - public SnapshotPerspectives(GraphDao dao, PerspectiveBuilder[] builders) { + public SnapshotPerspectives(GraphDao dao, GraphPerspectiveLoader[] loaders) { this.dao = dao; - for (PerspectiveBuilder builder : builders) { + for (GraphPerspectiveLoader loader : loaders) { // TODO check duplications - this.builders.put(builder.getPerspectiveClass(), builder); + this.loaders.put(loader.getPerspectiveClass(), loader); } } @CheckForNull public T as(Class perspectiveClass, String componentKey) { - GraphPerspectiveBuilder builder = (GraphPerspectiveBuilder) builders.get(perspectiveClass); + GraphPerspectiveLoader builder = (GraphPerspectiveLoader) loaders.get(perspectiveClass); if (builder == null) { throw new IllegalStateException(); } @@ -57,7 +57,7 @@ public class SnapshotPerspectives implements ServerComponent { @CheckForNull public T as(Class perspectiveClass, long snapshotId) { - GraphPerspectiveBuilder builder = (GraphPerspectiveBuilder) builders.get(perspectiveClass); + GraphPerspectiveLoader builder = (GraphPerspectiveLoader) loaders.get(perspectiveClass); if (builder == null) { throw new IllegalStateException(); } @@ -65,11 +65,11 @@ public class SnapshotPerspectives implements ServerComponent { return doAs(builder, graphDto); } - private T doAs(PerspectiveBuilder builder, GraphDto graphDto) { + private T doAs(GraphPerspectiveLoader loader, GraphDto graphDto) { T result = null; if (graphDto != null) { SnapshotGraph graph = read(graphDto.getData(), graphDto.getRootVertexId()); - result = ((GraphPerspectiveBuilder)builder).load(graph.wrap(graph.getComponentRoot(), ComponentVertex.class)); + result = loader.load(graph.wrap(graph.getComponentRoot(), ComponentVertex.class)); } return result; } diff --git a/sonar-core/src/main/java/org/sonar/core/test/TestPlanBuilder.java b/sonar-core/src/main/java/org/sonar/core/test/TestPlanBuilder.java index 8d4df5eb4a1..d1f6e27fc26 100644 --- a/sonar-core/src/main/java/org/sonar/core/test/TestPlanBuilder.java +++ b/sonar-core/src/main/java/org/sonar/core/test/TestPlanBuilder.java @@ -23,13 +23,10 @@ import com.tinkerpop.blueprints.Direction; import org.sonar.api.test.MutableTestPlan; import org.sonar.core.component.GraphPerspectiveBuilder; import org.sonar.core.component.ScanGraph; -import org.sonar.core.graph.BeanVertex; import org.sonar.core.graph.EdgePath; public class TestPlanBuilder extends GraphPerspectiveBuilder { - static final String PERSPECTIVE_KEY = "testplan"; - private static final EdgePath PATH = EdgePath.create( Direction.OUT, "testplan", Direction.OUT, "testcase", @@ -37,12 +34,7 @@ public class TestPlanBuilder extends GraphPerspectiveBuilder { Direction.IN, "testable" ); - public TestPlanBuilder(ScanGraph graph) { - super(graph, PERSPECTIVE_KEY, MutableTestPlan.class, PATH); - } - - @Override - protected Class getBeanClass() { - return DefaultTestPlan.class; + public TestPlanBuilder(ScanGraph graph, TestPlanPerspectiveLoader perspectiveLoader) { + super(graph, MutableTestPlan.class, PATH, perspectiveLoader); } } diff --git a/sonar-core/src/main/java/org/sonar/core/test/TestPlanPerspectiveLoader.java b/sonar-core/src/main/java/org/sonar/core/test/TestPlanPerspectiveLoader.java new file mode 100644 index 00000000000..2e98d7eb86d --- /dev/null +++ b/sonar-core/src/main/java/org/sonar/core/test/TestPlanPerspectiveLoader.java @@ -0,0 +1,19 @@ +package org.sonar.core.test; + +import org.sonar.api.test.MutableTestPlan; +import org.sonar.core.component.GraphPerspectiveLoader; +import org.sonar.core.graph.BeanVertex; + +public class TestPlanPerspectiveLoader extends GraphPerspectiveLoader { + + static final String PERSPECTIVE_KEY = "testplan"; + + public TestPlanPerspectiveLoader() { + super(PERSPECTIVE_KEY, MutableTestPlan.class); + } + + @Override + protected Class getBeanClass() { + return DefaultTestPlan.class; + } +} diff --git a/sonar-core/src/main/java/org/sonar/core/test/TestableBuilder.java b/sonar-core/src/main/java/org/sonar/core/test/TestableBuilder.java index 5b1b5aec4c4..15c2948a740 100644 --- a/sonar-core/src/main/java/org/sonar/core/test/TestableBuilder.java +++ b/sonar-core/src/main/java/org/sonar/core/test/TestableBuilder.java @@ -23,13 +23,10 @@ import com.tinkerpop.blueprints.Direction; import org.sonar.api.test.MutableTestable; import org.sonar.core.component.GraphPerspectiveBuilder; import org.sonar.core.component.ScanGraph; -import org.sonar.core.graph.BeanVertex; import org.sonar.core.graph.EdgePath; public class TestableBuilder extends GraphPerspectiveBuilder { - static final String PERSPECTIVE_KEY = "testable"; - private static final EdgePath PATH = EdgePath.create( Direction.OUT, "testable", Direction.IN,"covers", @@ -37,12 +34,7 @@ public class TestableBuilder extends GraphPerspectiveBuilder { Direction.IN,"testplan" ); - public TestableBuilder(ScanGraph graph) { - super(graph, PERSPECTIVE_KEY, MutableTestable.class, PATH); - } - - @Override - protected Class getBeanClass() { - return DefaultTestable.class; + public TestableBuilder(ScanGraph graph, TestablePerspectiveLoader perspectiveLoader) { + super(graph, MutableTestable.class, PATH, perspectiveLoader); } } diff --git a/sonar-core/src/main/java/org/sonar/core/test/TestablePerspectiveLoader.java b/sonar-core/src/main/java/org/sonar/core/test/TestablePerspectiveLoader.java new file mode 100644 index 00000000000..6ea3c49e150 --- /dev/null +++ b/sonar-core/src/main/java/org/sonar/core/test/TestablePerspectiveLoader.java @@ -0,0 +1,19 @@ +package org.sonar.core.test; + +import org.sonar.api.test.MutableTestable; +import org.sonar.core.component.GraphPerspectiveLoader; +import org.sonar.core.graph.BeanVertex; + +public class TestablePerspectiveLoader extends GraphPerspectiveLoader { + + static final String PERSPECTIVE_KEY = "testable"; + + public TestablePerspectiveLoader() { + super(PERSPECTIVE_KEY, MutableTestable.class); + } + + @Override + protected Class getBeanClass() { + return DefaultTestable.class; + } +} diff --git a/sonar-core/src/test/java/org/sonar/core/test/TestPlanBuilderTest.java b/sonar-core/src/test/java/org/sonar/core/test/TestPlanBuilderTest.java index 4c03a6f457e..e286ad7ee57 100644 --- a/sonar-core/src/test/java/org/sonar/core/test/TestPlanBuilderTest.java +++ b/sonar-core/src/test/java/org/sonar/core/test/TestPlanBuilderTest.java @@ -32,7 +32,8 @@ public class TestPlanBuilderTest { public void test_path() { ScanGraph graph = ScanGraph.create(); - TestPlanBuilder builder = new TestPlanBuilder(graph); + TestPlanPerspectiveLoader loader = new TestPlanPerspectiveLoader(); + TestPlanBuilder builder = new TestPlanBuilder(graph, loader); assertThat(builder.path().getElements()).isNotEmpty(); } @@ -40,21 +41,23 @@ public class TestPlanBuilderTest { @Test public void should_not_load_missing_perspective() { ScanGraph graph = ScanGraph.create(); - TestPlanBuilder builder = new TestPlanBuilder(graph); + TestPlanPerspectiveLoader loader = new TestPlanPerspectiveLoader(); + TestPlanBuilder builder = new TestPlanBuilder(graph, loader); ComponentVertex file = graph.addComponent(MockSourceFile.createMain("org.foo.Bar")); - assertThat(builder.load(file)).isNull(); + assertThat(builder.getPerspectiveLoader().load(file)).isNull(); } @Test public void should_create_perspective() { ScanGraph graph = ScanGraph.create(); - TestPlanBuilder builder = new TestPlanBuilder(graph); + TestPlanPerspectiveLoader loader = new TestPlanPerspectiveLoader(); + TestPlanBuilder builder = new TestPlanBuilder(graph, loader); ComponentVertex file = graph.addComponent(MockSourceFile.createMain("org.foo.Bar")); MutableTestPlan plan = builder.create(file); assertThat(plan).isNotNull(); assertThat(plan.component()).isSameAs(file); - assertThat(builder.load(file)).isSameAs(plan); + assertThat(builder.getPerspectiveLoader().load(file)).isSameAs(plan); } } diff --git a/sonar-core/src/test/java/org/sonar/core/test/TestableBuilderTest.java b/sonar-core/src/test/java/org/sonar/core/test/TestableBuilderTest.java index a21be60aad7..56e294fd56f 100644 --- a/sonar-core/src/test/java/org/sonar/core/test/TestableBuilderTest.java +++ b/sonar-core/src/test/java/org/sonar/core/test/TestableBuilderTest.java @@ -31,7 +31,8 @@ public class TestableBuilderTest { @Test public void test_path() { ScanGraph graph = ScanGraph.create(); - TestableBuilder builder = new TestableBuilder(graph); + TestablePerspectiveLoader loader = new TestablePerspectiveLoader(); + TestableBuilder builder = new TestableBuilder(graph, loader); assertThat(builder.path().getElements()).isNotEmpty(); } @@ -39,21 +40,23 @@ public class TestableBuilderTest { @Test public void should_not_load_missing_perspective() { ScanGraph graph = ScanGraph.create(); - TestableBuilder builder = new TestableBuilder(graph); + TestablePerspectiveLoader loader = new TestablePerspectiveLoader(); + TestableBuilder builder = new TestableBuilder(graph, loader); ComponentVertex file = graph.addComponent(MockSourceFile.createMain("org.foo.Bar")); - assertThat(builder.load(file)).isNull(); + assertThat(builder.getPerspectiveLoader().load(file)).isNull(); } @Test public void should_create_perspective() { ScanGraph graph = ScanGraph.create(); - TestableBuilder builder = new TestableBuilder(graph); + TestablePerspectiveLoader loader = new TestablePerspectiveLoader(); + TestableBuilder builder = new TestableBuilder(graph, loader); ComponentVertex file = graph.addComponent(MockSourceFile.createMain("org.foo.Bar")); MutableTestable testable = builder.create(file); assertThat(testable).isNotNull(); assertThat(testable.component()).isSameAs(file); - assertThat(builder.load(file)).isSameAs(testable); + assertThat(builder.getPerspectiveLoader().load(file)).isSameAs(testable); } } diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 1d4986dec0c..fd46071d9d0 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -45,20 +45,12 @@ import org.sonar.core.measure.MeasureFilterExecutor; import org.sonar.core.measure.MeasureFilterFactory; import org.sonar.core.metric.DefaultMetricFinder; import org.sonar.core.notification.DefaultNotificationManager; -import org.sonar.core.persistence.DaoUtils; -import org.sonar.core.persistence.DatabaseMigrator; -import org.sonar.core.persistence.DatabaseVersion; -import org.sonar.core.persistence.DefaultDatabase; -import org.sonar.core.persistence.DryRunDatabaseFactory; -import org.sonar.core.persistence.MyBatis; -import org.sonar.core.persistence.SemaphoreUpdater; -import org.sonar.core.persistence.SemaphoresImpl; +import org.sonar.core.persistence.*; import org.sonar.core.qualitymodel.DefaultModelFinder; import org.sonar.core.resource.DefaultResourcePermissions; import org.sonar.core.rule.DefaultRuleFinder; -import org.sonar.core.source.HighlightableBuilder; -import org.sonar.core.test.TestPlanBuilder; -import org.sonar.core.test.TestableBuilder; +import org.sonar.core.test.TestPlanPerspectiveLoader; +import org.sonar.core.test.TestablePerspectiveLoader; import org.sonar.core.timemachine.Periods; import org.sonar.core.user.DefaultUserFinder; import org.sonar.core.workflow.ReviewDatabaseStore; @@ -78,37 +70,12 @@ import org.sonar.server.macro.MacroInterpreter; import org.sonar.server.notifications.NotificationCenter; import org.sonar.server.notifications.NotificationService; import org.sonar.server.notifications.reviews.ReviewsNotificationManager; -import org.sonar.server.plugins.ApplicationDeployer; -import org.sonar.server.plugins.DefaultServerPluginRepository; -import org.sonar.server.plugins.InstalledPluginReferentialFactory; -import org.sonar.server.plugins.PluginDeployer; -import org.sonar.server.plugins.PluginDownloader; -import org.sonar.server.plugins.ServerExtensionInstaller; -import org.sonar.server.plugins.UpdateCenterClient; -import org.sonar.server.plugins.UpdateCenterMatrixFactory; +import org.sonar.server.plugins.*; import org.sonar.server.qualitymodel.DefaultModelManager; import org.sonar.server.rules.ProfilesConsole; import org.sonar.server.rules.RulesConsole; -import org.sonar.server.startup.DeleteDeprecatedMeasures; -import org.sonar.server.startup.GenerateBootstrapIndex; -import org.sonar.server.startup.GeneratePluginIndex; -import org.sonar.server.startup.GwtPublisher; -import org.sonar.server.startup.JdbcDriverDeployer; -import org.sonar.server.startup.LogServerId; -import org.sonar.server.startup.RegisterMetrics; -import org.sonar.server.startup.RegisterNewDashboards; -import org.sonar.server.startup.RegisterNewMeasureFilters; -import org.sonar.server.startup.RegisterNewProfiles; -import org.sonar.server.startup.RegisterQualityModels; -import org.sonar.server.startup.RegisterRules; -import org.sonar.server.startup.RegisterServletFilters; -import org.sonar.server.startup.RenameDeprecatedPropertyKeys; -import org.sonar.server.startup.ServerMetadataPersister; -import org.sonar.server.ui.CodeColorizers; -import org.sonar.server.ui.JRubyI18n; -import org.sonar.server.ui.PageDecorations; -import org.sonar.server.ui.SecurityRealmFactory; -import org.sonar.server.ui.Views; +import org.sonar.server.startup.*; +import org.sonar.server.ui.*; import javax.servlet.ServletContext; @@ -271,9 +238,8 @@ public final class Platform { servicesContainer.addSingleton(ReviewsNotificationManager.class); // graphs and perspective related classes - servicesContainer.addSingleton(TestPlanBuilder.class); - servicesContainer.addSingleton(TestableBuilder.class); - servicesContainer.addSingleton(HighlightableBuilder.class); + servicesContainer.addSingleton(TestablePerspectiveLoader.class); + servicesContainer.addSingleton(TestPlanPerspectiveLoader.class); servicesContainer.addSingleton(SnapshotPerspectives.class); ServerExtensionInstaller extensionRegistrar = servicesContainer.getComponentByType(ServerExtensionInstaller.class); -- 2.39.5