From 102fcaa285b796f70f1c422267360118dec3dd05 Mon Sep 17 00:00:00 2001 From: Julien HENRY Date: Thu, 1 Aug 2013 09:16:06 +0200 Subject: [PATCH] SONAR-4515 Fix IoC dependency on Languages --- .../java/org/sonar/batch/DefaultProfileLoader.java | 6 ++---- .../src/main/java/org/sonar/batch/ProfileLoader.java | 4 +++- .../src/main/java/org/sonar/batch/ProfileProvider.java | 5 +++-- .../java/org/sonar/batch/DefaultProfileLoaderTest.java | 6 +++--- .../test/java/org/sonar/batch/ProfileProviderTest.java | 10 ++++++---- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java b/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java index 2e6e064c4be..6554b60c029 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java +++ b/sonar-batch/src/main/java/org/sonar/batch/DefaultProfileLoader.java @@ -31,14 +31,12 @@ import org.sonar.jpa.dao.ProfilesDao; public class DefaultProfileLoader implements ProfileLoader { private ProfilesDao dao; - private Languages languages; - public DefaultProfileLoader(ProfilesDao dao, Languages languages) { + public DefaultProfileLoader(ProfilesDao dao) { this.dao = dao; - this.languages = languages; } - public RulesProfile load(Project project, Settings settings) { + public RulesProfile load(Project project, Settings settings, Languages languages) { if (!languages.allKey().contains(project.getLanguageKey())) { String languageList = Joiner.on(", ").join(languages.allKey()); throw new SonarException("You must install a plugin that supports the language '" + project.getLanguageKey() + diff --git a/sonar-batch/src/main/java/org/sonar/batch/ProfileLoader.java b/sonar-batch/src/main/java/org/sonar/batch/ProfileLoader.java index c844cef918f..10479d7d21c 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/ProfileLoader.java +++ b/sonar-batch/src/main/java/org/sonar/batch/ProfileLoader.java @@ -21,13 +21,15 @@ package org.sonar.batch; import org.sonar.api.config.Settings; import org.sonar.api.profiles.RulesProfile; +import org.sonar.api.resources.Languages; import org.sonar.api.resources.Project; public interface ProfileLoader { /** * Loads quality profile for specified project. + * @param languages remove this parameter when Languages is no more in scope ModuleScanContainer */ - RulesProfile load(Project project, Settings settings); + RulesProfile load(Project project, Settings settings, Languages languages); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/ProfileProvider.java b/sonar-batch/src/main/java/org/sonar/batch/ProfileProvider.java index cc34e85c299..e93a61b100c 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/ProfileProvider.java +++ b/sonar-batch/src/main/java/org/sonar/batch/ProfileProvider.java @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.config.Settings; import org.sonar.api.profiles.RulesProfile; +import org.sonar.api.resources.Languages; import org.sonar.api.resources.Project; public class ProfileProvider extends ProviderAdapter { @@ -32,9 +33,9 @@ public class ProfileProvider extends ProviderAdapter { private RulesProfile profile; - public RulesProfile provide(Project project, ProfileLoader profileLoader, Settings settings) { + public RulesProfile provide(Project project, ProfileLoader profileLoader, Settings settings, Languages languages) { if (profile == null) { - profile = profileLoader.load(project, settings); + profile = profileLoader.load(project, settings, languages); LOG.info("Quality profile : {}", profile); } return profile; diff --git a/sonar-batch/src/test/java/org/sonar/batch/DefaultProfileLoaderTest.java b/sonar-batch/src/test/java/org/sonar/batch/DefaultProfileLoaderTest.java index 80e8bb1aff3..836effb1b03 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/DefaultProfileLoaderTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/DefaultProfileLoaderTest.java @@ -69,7 +69,7 @@ public class DefaultProfileLoaderTest { settings.setProperty("sonar.profile.java", "legacy profile"); when(dao.getProfile(Java.KEY, "legacy profile")).thenReturn(RulesProfile.create("legacy profile", "java")); - RulesProfile profile = new DefaultProfileLoader(dao, languages).load(javaProject, settings); + RulesProfile profile = new DefaultProfileLoader(dao).load(javaProject, settings, languages); assertThat(profile.getName()).isEqualTo("legacy profile"); } @@ -81,7 +81,7 @@ public class DefaultProfileLoaderTest { thrown.expect(SonarException.class); thrown.expectMessage("Quality profile not found : unknown, language java"); - new DefaultProfileLoader(dao, languages).load(javaProject, settings); + new DefaultProfileLoader(dao).load(javaProject, settings, languages); } /** @@ -93,7 +93,7 @@ public class DefaultProfileLoaderTest { thrown.expect(SonarException.class); thrown.expectMessage("You must install a plugin that supports the language 'cobol'. Supported language keys are: java, js"); - new DefaultProfileLoader(dao, languages).load(cobolProject, new Settings()); + new DefaultProfileLoader(dao).load(cobolProject, new Settings(), languages); } private Project newProject(String language) { diff --git a/sonar-batch/src/test/java/org/sonar/batch/ProfileProviderTest.java b/sonar-batch/src/test/java/org/sonar/batch/ProfileProviderTest.java index 0a3f17cc0c8..7cc8ecddf80 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/ProfileProviderTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/ProfileProviderTest.java @@ -22,6 +22,7 @@ package org.sonar.batch; import org.junit.Test; import org.sonar.api.config.Settings; import org.sonar.api.profiles.RulesProfile; +import org.sonar.api.resources.Languages; import org.sonar.api.resources.Project; import static org.hamcrest.Matchers.is; @@ -40,11 +41,12 @@ public class ProfileProviderTest { ProfileLoader loader = mock(ProfileLoader.class); Project project = new Project("project"); RulesProfile profile = RulesProfile.create(); - when(loader.load(eq(project), any(Settings.class))).thenReturn(profile); + Languages languages = mock(Languages.class); + when(loader.load(eq(project), any(Settings.class), eq(languages))).thenReturn(profile); - assertThat(provider.provide(project, loader, new Settings()), is(profile)); - assertThat(provider.provide(project, loader, new Settings()), is(profile)); - verify(loader).load(eq(project), any(Settings.class)); + assertThat(provider.provide(project, loader, new Settings(), languages), is(profile)); + assertThat(provider.provide(project, loader, new Settings(), languages), is(profile)); + verify(loader).load(eq(project), any(Settings.class), eq(languages)); verifyNoMoreInteractions(loader); } } -- 2.39.5