diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-06-09 22:37:56 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-06-09 22:37:56 +0200 |
commit | 9fc136fdb409a7e8e3a5669bffc424229d663cad (patch) | |
tree | 85c9eae39ce1e98791b0ba2c76040ec29a5fef1c /sonar-server | |
parent | 71adc6f55bf33b2d345e264301d7a68010a3737a (diff) | |
download | sonarqube-9fc136fdb409a7e8e3a5669bffc424229d663cad.tar.gz sonarqube-9fc136fdb409a7e8e3a5669bffc424229d663cad.zip |
SONAR-5007 refactor restore of built-in profiles
Diffstat (limited to 'sonar-server')
12 files changed, 53 insertions, 52 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java b/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java index b01688f698c..935eabdebc5 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java @@ -195,7 +195,7 @@ import org.sonar.server.qualityprofile.index.ActiveRuleIndex; import org.sonar.server.qualityprofile.index.ActiveRuleNormalizer; import org.sonar.server.qualityprofile.ws.BulkRuleActivationActions; import org.sonar.server.qualityprofile.ws.ProfilesWs; -import org.sonar.server.qualityprofile.ws.QProfileRecreateBuiltInAction; +import org.sonar.server.qualityprofile.ws.QProfileRestoreBuiltInAction; import org.sonar.server.qualityprofile.ws.QProfilesWs; import org.sonar.server.qualityprofile.ws.RuleActivationActions; import org.sonar.server.rule.DeprecatedRulesDefinition; @@ -429,7 +429,7 @@ class ServerComponents { pico.addSingleton(QProfileProjectLookup.class); pico.addSingleton(QProfileRepositoryExporter.class); pico.addSingleton(BuiltInProfiles.class); - pico.addSingleton(QProfileRecreateBuiltInAction.class); + pico.addSingleton(QProfileRestoreBuiltInAction.class); pico.addSingleton(QProfilesWs.class); pico.addSingleton(ProfilesWs.class); pico.addSingleton(RuleActivationActions.class); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileReset.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileReset.java index c609da55f2e..b7302c30311 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileReset.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileReset.java @@ -68,6 +68,10 @@ public class QProfileReset implements ServerComponent { return builtInProfiles.byLanguage(language); } + /** + * Reset built-in profiles for the given language. Missing profiles are created and + * existing ones are updated + */ void resetLanguage(String language) { ListMultimap<String, RulesProfile> profilesByName = loadDefinitionsGroupedByName(language); for (Map.Entry<String, Collection<RulesProfile>> entry : profilesByName.asMap().entrySet()) { diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java index 41b98160a97..c118eb7332b 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java @@ -145,7 +145,7 @@ public class QProfileService implements ServerComponent { restore(new StringReader(backup)); } - public void resetBuiltInProfilesForLanguage(String lang) { + public void restoreBuiltInProfilesForLanguage(String lang) { verifyAdminPermission(); reset.resetLanguage(lang); } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfileRecreateBuiltInAction.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfileRestoreBuiltInAction.java index dc62cac0392..b3e849494d2 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfileRecreateBuiltInAction.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfileRestoreBuiltInAction.java @@ -28,30 +28,31 @@ import org.sonar.api.utils.text.JsonWriter; import org.sonar.server.qualityprofile.QProfileResult; import org.sonar.server.qualityprofile.QProfileService; -public class QProfileRecreateBuiltInAction implements RequestHandler { +public class QProfileRestoreBuiltInAction implements RequestHandler { private final QProfileService service; - public QProfileRecreateBuiltInAction(QProfileService service) { + public QProfileRestoreBuiltInAction(QProfileService service) { this.service = service; } void define(WebService.NewController controller) { - WebService.NewAction restoreDefault = controller.createAction("recreate_built_in") - .setDescription("Recreate Built-in Profiles") + WebService.NewAction restoreDefault = controller.createAction("restore_built_in") + .setDescription("Restore built-in profiles from the definitions declared by plugins. " + + "Missing profiles are created, existing ones are updated.") .setSince("4.4") .setPost(true) .setHandler(this); restoreDefault.createParam("language") - .setDescription("Recreate built-in profiles for this language") + .setDescription("Restore the built-in profiles defined for this language") .setExampleValue("java") .setRequired(true); } @Override public void handle(Request request, Response response) { - final String language = request.mandatoryParam("language"); - service.resetBuiltInProfilesForLanguage(language); + String language = request.mandatoryParam("language"); + service.restoreBuiltInProfilesForLanguage(language); // TODO QProfileResult result = new QProfileResult(); diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java index e450b6525e5..132f84c9144 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java @@ -25,14 +25,14 @@ public class QProfilesWs implements WebService { public static final String API_ENDPOINT = "api/qualityprofiles"; - private final QProfileRecreateBuiltInAction recreateBuiltInAction; + private final QProfileRestoreBuiltInAction resetAction; private final RuleActivationActions ruleActivationActions; private final BulkRuleActivationActions bulkRuleActivationActions; - public QProfilesWs(QProfileRecreateBuiltInAction recreateBuiltInAction, + public QProfilesWs(QProfileRestoreBuiltInAction resetAction, RuleActivationActions ruleActivationActions, BulkRuleActivationActions bulkRuleActivationActions) { - this.recreateBuiltInAction = recreateBuiltInAction; + this.resetAction = resetAction; this.ruleActivationActions = ruleActivationActions; this.bulkRuleActivationActions = bulkRuleActivationActions; } @@ -43,7 +43,7 @@ public class QProfilesWs implements WebService { .setDescription("Quality Profiles") .setSince("4.4"); - recreateBuiltInAction.define(controller); + resetAction.define(controller); ruleActivationActions.define(controller); bulkRuleActivationActions.define(controller); diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb index 58d2e10e31a..f7bbec8d0ca 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/profiles_controller.rb @@ -59,24 +59,24 @@ class ProfilesController < ApplicationController redirect_to :action => 'index' end - # Modal window to recreate built-in profiles - # GET /profiles/recreate_built_in_form/<profile id> - def recreate_built_in_form + # Modal window to restore built-in profiles + # GET /profiles/restore_built_in_form/<profile id> + def restore_built_in_form verify_ajax_request require_parameters 'language' @language = java_facade.getLanguages().find { |l| l.getKey()==params[:language].to_s } call_backend do @builtin_profile_names = Internal.component(Java::OrgSonarServerQualityprofile::QProfileService.java_class).builtInProfileNamesForLanguage(params[:language].to_s) end - render :partial => 'profiles/recreate_built_in_form' + render :partial => 'profiles/restore_built_in_form' end - # POST /profiles/recreate_built_in_form?language=<language> - def recreate_built_in + # POST /profiles/restore_built_in?language=<language> + def restore_built_in verify_post_request require_parameters 'language' call_backend do - Internal.component(Java::OrgSonarServerQualityprofile::QProfileService.java_class).resetBuiltInProfilesForLanguage(params[:language].to_s) + Internal.component(Java::OrgSonarServerQualityprofile::QProfileService.java_class).restoreBuiltInProfilesForLanguage(params[:language].to_s) #flash_result(@result) end redirect_to :action => 'index' diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_recreate_built_in_form.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_recreate_built_in_form.html.erb deleted file mode 100644 index d35429a6e84..00000000000 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_recreate_built_in_form.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -<form id="recreate-built-in-profiles-form" action="profiles/recreate_built_in" method="POST"> - <fieldset> - <input type="hidden" name="language" value="<%= @language.getKey() -%>"/> - - <div class="modal-head"> - <h2><%= h message('quality_profiles.recreate_built_in_profiles') -%></h2> - </div> - - <div class="modal-body"> - <%= h message('quality_profiles.recreate_built_in_profiles_confirmation', :params => [@builtin_profile_names.join('\', \''), @language.getName()]) -%> - </div> - - <div class="modal-foot"> - <input type="submit" value="<%= h message('restore') -%>" id="recreate-built-in-profiles-submit"/> - <a href="#" onclick="return closeModalWindow()" id="recreate-built-in-profiles-cancel"><%= h message('cancel') -%></a> - </div> - </fieldset> -</form> diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_restore_built_in_form.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_restore_built_in_form.html.erb new file mode 100644 index 00000000000..53fe42c13a7 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/_restore_built_in_form.html.erb @@ -0,0 +1,18 @@ +<form id="restore-built-in-profiles-form" action="profiles/restore_built_in" method="POST"> + <fieldset> + <input type="hidden" name="language" value="<%= @language.getKey() -%>"/> + + <div class="modal-head"> + <h2><%= h message('quality_profiles.restore_built_in_profiles') -%></h2> + </div> + + <div class="modal-body"> + <%= h message('quality_profiles.restore_built_in_profiles_confirmation', :params => [@builtin_profile_names.join('\', \''), @language.getName()]) -%> + </div> + + <div class="modal-foot"> + <input type="submit" value="<%= h message('restore') -%>" id="restore-built-in-profiles-submit"/> + <a href="#" onclick="return closeModalWindow()" id="restore-built-in-profiles-cancel"><%= h message('cancel') -%></a> + </div> + </fieldset> +</form> diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb index 89657c272c7..962e3cb3af5 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/profiles/index.html.erb @@ -29,8 +29,8 @@ </ul> <ul style="float: right" class="horizontal"> <li class="marginleft10"> - <a id="create-link-<%= language.getKey() -%>" href="<%= ApplicationController.root_context -%>/profiles/recreate_built_in_form?language=<%= u language.getKey() -%>" - class="open-modal link-action"><%= message('quality_profiles.recreate_built_in_profiles') -%></a> + <a id="create-link-<%= language.getKey() -%>" href="<%= ApplicationController.root_context -%>/profiles/restore_built_in_form?language=<%= u language.getKey() -%>" + class="open-modal link-action"><%= message('quality_profiles.restore_built_in_profiles') -%></a> </li> </ul> <% end %> diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfileRecreateBuiltInActionTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfileRestoreBuiltInActionTest.java index ec899c39c65..b6756eddd4a 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfileRecreateBuiltInActionTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfileRestoreBuiltInActionTest.java @@ -25,17 +25,14 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.sonar.server.qualityprofile.QProfileResult; import org.sonar.server.qualityprofile.QProfileService; import org.sonar.server.rule.RuleService; import org.sonar.server.ws.WsTester; -import static com.google.common.collect.Lists.newArrayList; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) -public class QProfileRecreateBuiltInActionTest { +public class QProfileRestoreBuiltInActionTest { @Mock QProfileService profileService; @@ -47,7 +44,7 @@ public class QProfileRecreateBuiltInActionTest { QProfileService profileService = mock(QProfileService.class); RuleService ruleService = mock(RuleService.class); tester = new WsTester(new QProfilesWs( - new QProfileRecreateBuiltInAction(this.profileService), + new QProfileRestoreBuiltInAction(this.profileService), new RuleActivationActions(profileService), new BulkRuleActivationActions(profileService, ruleService))); } @@ -56,7 +53,7 @@ public class QProfileRecreateBuiltInActionTest { public void return_empty_result_when_no_infos_or_warnings() throws Exception { //when(profileService.resetBuiltInProfilesForLanguage("java")).thenReturn(new QProfileResult()); - WsTester.TestRequest request = tester.newPostRequest("api/qualityprofiles", "recreate_built_in").setParam("language", "java"); + WsTester.TestRequest request = tester.newPostRequest("api/qualityprofiles", "restore_built_in").setParam("language", "java"); request.execute().assertNoContent(); } diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java index dc3b6c5d26b..057f2081bba 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java @@ -52,11 +52,10 @@ import static org.fest.assertions.Fail.fail; public class QProfilesWsMediumTest { - @ClassRule public static ServerTester tester = new ServerTester(); - private static final String API_BUILT_IN_METHOD = "recreate_built_in"; + private static final String API_BUILT_IN_METHOD = "restore_built_in"; QProfilesWs ws; DbClient db; diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java index 4412d463803..a26a4f92cd8 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java @@ -38,7 +38,7 @@ public class QProfilesWsTest { public void setUp() { QProfileService profileService = mock(QProfileService.class); RuleService ruleService = mock(RuleService.class); - controller = new WsTester(new QProfilesWs(new QProfileRecreateBuiltInAction( + controller = new WsTester(new QProfilesWs(new QProfileRestoreBuiltInAction( mock(QProfileService.class)), new RuleActivationActions(profileService), new BulkRuleActivationActions(profileService, ruleService) @@ -54,8 +54,8 @@ public class QProfilesWsTest { } @Test - public void define_recreate_built_action() throws Exception { - WebService.Action restoreProfiles = controller.action("recreate_built_in"); + public void define_restore_built_action() throws Exception { + WebService.Action restoreProfiles = controller.action("restore_built_in"); assertThat(restoreProfiles).isNotNull(); assertThat(restoreProfiles.isPost()).isTrue(); assertThat(restoreProfiles.params()).hasSize(1); |