diff options
author | simonbrandhof <simon.brandhof@gmail.com> | 2010-10-08 14:38:32 +0000 |
---|---|---|
committer | simonbrandhof <simon.brandhof@gmail.com> | 2010-10-08 14:38:32 +0000 |
commit | 7ca495d67492c6b3dbb653102e345f8fc43f09ae (patch) | |
tree | 2dd4d54faaad9c4c74f172fba50bdfb5f3b734c8 /sonar-server | |
parent | 9185222d18826c0648a8bf3cf8e2e491537b472e (diff) | |
download | sonarqube-7ca495d67492c6b3dbb653102e345f8fc43f09ae.tar.gz sonarqube-7ca495d67492c6b3dbb653102e345f8fc43f09ae.zip |
API: improve the pattern to define quality profiles. The extension point is org.sonar.api.profiles.ProfileDefinition, whereas XMLProfileParser and AnnotationProfileParser are components that can be used but not extended.
Diffstat (limited to 'sonar-server')
6 files changed, 20 insertions, 12 deletions
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 145ba28e3f4..48c321c0c02 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 @@ -28,6 +28,9 @@ import org.sonar.api.Plugins; import org.sonar.api.database.configuration.DatabaseConfiguration; import org.sonar.api.platform.Environment; import org.sonar.api.platform.Server; +import org.sonar.api.profiles.AnnotationProfileParser; +import org.sonar.api.profiles.XMLProfileParser; +import org.sonar.api.profiles.XMLProfileSerializer; import org.sonar.api.resources.Languages; import org.sonar.api.rules.DefaultRulesManager; import org.sonar.api.utils.HttpDownloader; @@ -169,6 +172,9 @@ public final class Platform { servicesContainer.as(Characteristics.NO_CACHE).addComponent(Backup.class); servicesContainer.as(Characteristics.CACHE).addComponent(AuthenticatorFactory.class); servicesContainer.as(Characteristics.CACHE).addComponent(ServerLifecycleNotifier.class); + servicesContainer.as(Characteristics.CACHE).addComponent(AnnotationProfileParser.class); + servicesContainer.as(Characteristics.CACHE).addComponent(XMLProfileParser.class); + servicesContainer.as(Characteristics.CACHE).addComponent(XMLProfileSerializer.class); servicesContainer.as(Characteristics.CACHE).addComponent(DefaultRuleFinder.class); servicesContainer.as(Characteristics.CACHE).addComponent(DeprecatedRuleRepositories.class); servicesContainer.as(Characteristics.CACHE).addComponent(DeprecatedProfiles.class); diff --git a/sonar-server/src/main/java/org/sonar/server/qualitymodel/DefaultModelManager.java b/sonar-server/src/main/java/org/sonar/server/qualitymodel/DefaultModelManager.java index 84ccb3999bb..0e5290a0012 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualitymodel/DefaultModelManager.java +++ b/sonar-server/src/main/java/org/sonar/server/qualitymodel/DefaultModelManager.java @@ -57,7 +57,7 @@ public final class DefaultModelManager implements ServerComponent, ModelManager for (ModelDefinition definition : definitions) { if (StringUtils.isNotBlank(definition.getName()) && !exists(session, definition.getName())) { Logs.INFO.info("Register quality model: " + definition.getName()); - Model model = definition.create(); + Model model = definition.createModel(); if (StringUtils.isBlank(model.getName())) { model.setName(definition.getName()); } @@ -75,7 +75,7 @@ public final class DefaultModelManager implements ServerComponent, ModelManager } LoggerFactory.getLogger(getClass()).info("Reset quality model: " + name); - Model model = definition.create(); + Model model = definition.createModel(); return reset(model); } diff --git a/sonar-server/src/main/java/org/sonar/server/rules/ProfilesConsole.java b/sonar-server/src/main/java/org/sonar/server/rules/ProfilesConsole.java index 64d525939bc..20b9605c863 100644 --- a/sonar-server/src/main/java/org/sonar/server/rules/ProfilesConsole.java +++ b/sonar-server/src/main/java/org/sonar/server/rules/ProfilesConsole.java @@ -40,14 +40,16 @@ import java.util.List; public final class ProfilesConsole implements ServerComponent { private DatabaseSessionFactory sessionFactory; - private RuleFinder ruleFinder; + private XMLProfileParser xmlProfileParser; + private XMLProfileSerializer xmlProfileSerializer; private List<ProfileExporter> exporters = new ArrayList<ProfileExporter>(); private List<ProfileImporter> importers = new ArrayList<ProfileImporter>(); - public ProfilesConsole(DatabaseSessionFactory sessionFactory, RuleFinder ruleFinder, + public ProfilesConsole(DatabaseSessionFactory sessionFactory, XMLProfileParser xmlProfileParser, XMLProfileSerializer xmlProfileSerializer, ProfileExporter[] exporters, DeprecatedProfileExporters deprecatedExporters, ProfileImporter[] importers, DeprecatedProfileImporters deprecatedImporters) { - this.ruleFinder = ruleFinder; + this.xmlProfileParser = xmlProfileParser; + this.xmlProfileSerializer = xmlProfileSerializer; this.sessionFactory = sessionFactory; initProfileExporters(exporters, deprecatedExporters); initProfileImporters(importers, deprecatedImporters); @@ -72,7 +74,7 @@ public final class ProfilesConsole implements ServerComponent { RulesProfile profile = loadProfile(session, profileId); if (profile != null) { Writer writer = new StringWriter(); - XMLProfileExporter.create().exportProfile(profile, writer); + xmlProfileSerializer.write(profile, writer); return writer.toString(); } return null; @@ -80,7 +82,7 @@ public final class ProfilesConsole implements ServerComponent { public ValidationMessages restoreProfile(String xmlBackup) { ValidationMessages messages = ValidationMessages.create(); - RulesProfile profile = XMLProfileImporter.create(ruleFinder).importProfile(new StringReader(xmlBackup), messages); + RulesProfile profile = xmlProfileParser.parse(new StringReader(xmlBackup), messages); if (profile != null) { DatabaseSession session = sessionFactory.getSession(); RulesProfile existingProfile = session.getSingleResult(RulesProfile.class, "name", profile.getName(), "language", profile.getLanguage()); diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java index ad5ee2559d2..82f0c94de88 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterProvidedProfiles.java @@ -19,6 +19,7 @@ */ package org.sonar.server.startup; +import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +41,7 @@ public final class RegisterProvidedProfiles { private static final Logger LOGGER = LoggerFactory.getLogger(RegisterProvidedProfiles.class); private DatabaseSessionFactory sessionFactory; - private List<ProfileDefinition> definitions = new ArrayList<ProfileDefinition>(); + private List<ProfileDefinition> definitions = Lists.newArrayList(); private DeprecatedProfiles deprecatedProfiles = null; private RuleFinder ruleFinder; @@ -71,7 +72,7 @@ public final class RegisterProvidedProfiles { } List<RulesProfile> createProfiles() { - List<RulesProfile> result = new ArrayList<RulesProfile>(); + List<RulesProfile> result = Lists.newArrayList(); // this must not be moved in the constructor, because rules are still not saved definitions.addAll(deprecatedProfiles.getProfiles()); diff --git a/sonar-server/src/test/java/org/sonar/server/qualitymodel/DefaultModelManagerTest.java b/sonar-server/src/test/java/org/sonar/server/qualitymodel/DefaultModelManagerTest.java index 058e649d5bc..73d2e9b8938 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualitymodel/DefaultModelManagerTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualitymodel/DefaultModelManagerTest.java @@ -114,7 +114,7 @@ class FakeDefinition extends ModelDefinition { } @Override - public Model create() { + public Model createModel() { return model; } diff --git a/sonar-server/src/test/java/org/sonar/server/rules/DeprecatedProfilesTest.java b/sonar-server/src/test/java/org/sonar/server/rules/DeprecatedProfilesTest.java index cd5b40f38ab..187a3ed8e1f 100644 --- a/sonar-server/src/test/java/org/sonar/server/rules/DeprecatedProfilesTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rules/DeprecatedProfilesTest.java @@ -23,7 +23,6 @@ import org.junit.Test; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RulePriority; import org.sonar.api.utils.ValidationMessages; -import org.sonar.server.rules.DeprecatedProfiles; import static org.hamcrest.Matchers.is; import static org.hamcrest.core.IsNull.nullValue; @@ -31,7 +30,7 @@ import static org.junit.Assert.assertThat; public class DeprecatedProfilesTest { @Test - public void testCreate() { + public void shouldCreateProfile() { DeprecatedProfiles.DefaultProfileDefinition def = DeprecatedProfiles.DefaultProfileDefinition.create("sonar way", "java"); assertThat(def.createProfile(ValidationMessages.create()).getName(), is("sonar way")); assertThat(def.createProfile(ValidationMessages.create()).getLanguage(), is("java")); |