diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java index c3ff7eecd929..575eb2b2634e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java @@ -149,7 +149,6 @@ import org.sonar.server.qualityprofile.QProfileFactory; import org.sonar.server.qualityprofile.QProfileLookup; import org.sonar.server.qualityprofile.QProfileResetImpl; -import org.sonar.server.qualityprofile.QProfileService; import org.sonar.server.qualityprofile.RuleActivator; import org.sonar.server.qualityprofile.RuleActivatorContextFactory; import org.sonar.server.qualityprofile.index.ActiveRuleIndexer; @@ -270,7 +269,6 @@ protected void configureLevel() { OldRestoreAction.class, RuleActivator.class, QProfileExporters.class, - QProfileService.class, RuleActivatorContextFactory.class, QProfileFactory.class, QProfileCopier.class, diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java deleted file mode 100644 index 4bd22cc921c9..000000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileService.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2017 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.server.qualityprofile; - -import javax.annotation.Nullable; -import org.sonar.api.server.ServerSide; -import org.sonar.server.organization.DefaultOrganizationProvider; -import org.sonar.server.rule.index.RuleQuery; -import org.sonar.server.user.UserSession; - -import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES; - -@ServerSide -public class QProfileService { - - private final RuleActivator ruleActivator; - private final UserSession userSession; - private final DefaultOrganizationProvider defaultOrganizationProvider; - - public QProfileService(RuleActivator ruleActivator, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider) { - this.ruleActivator = ruleActivator; - this.userSession = userSession; - this.defaultOrganizationProvider = defaultOrganizationProvider; - } - - public BulkChangeResult bulkActivate(RuleQuery ruleQuery, String profile, @Nullable String severity) { - verifyAdminPermission(); - return ruleActivator.bulkActivate(ruleQuery, profile, severity); - } - - public BulkChangeResult bulkDeactivate(RuleQuery ruleQuery, String profile) { - verifyAdminPermission(); - return ruleActivator.bulkDeactivate(ruleQuery, profile); - } - - private void verifyAdminPermission() { - // FIXME check for the permission of the appropriate organization, not the default one - userSession - .checkLoggedIn() - .checkPermission(ADMINISTER_QUALITY_PROFILES, defaultOrganizationProvider.get().getUuid()); - } -} diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java index 991b793d3a23..fd6433c8dc6c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/RuleActivator.java @@ -398,7 +398,7 @@ private String validateParam(RuleParamDto ruleParam, @Nullable String value) { return value; } - BulkChangeResult bulkActivate(RuleQuery ruleQuery, String profileKey, @Nullable String severity) { + public BulkChangeResult bulkActivate(RuleQuery ruleQuery, String profileKey, @Nullable String severity) { DbSession dbSession = db.openSession(false); BulkChangeResult result = new BulkChangeResult(); try { @@ -428,7 +428,7 @@ BulkChangeResult bulkActivate(RuleQuery ruleQuery, String profileKey, @Nullable return result; } - BulkChangeResult bulkDeactivate(RuleQuery ruleQuery, String profile) { + public BulkChangeResult bulkDeactivate(RuleQuery ruleQuery, String profile) { DbSession dbSession = db.openSession(false); BulkChangeResult result = new BulkChangeResult(); try { diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java index 77b79a3b91ef..28f2f0a1982d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java @@ -24,10 +24,13 @@ import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; +import org.sonar.server.organization.DefaultOrganizationProvider; import org.sonar.server.qualityprofile.BulkChangeResult; -import org.sonar.server.qualityprofile.QProfileService; +import org.sonar.server.qualityprofile.RuleActivator; import org.sonar.server.rule.ws.RuleQueryFactory; +import org.sonar.server.user.UserSession; +import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES; import static org.sonar.server.rule.ws.SearchAction.defineRuleSearchParameters; @ServerSide @@ -38,12 +41,17 @@ public class ActivateRulesAction implements QProfileWsAction { public static final String BULK_ACTIVATE_ACTION = "activate_rules"; - private final QProfileService profileService; private final RuleQueryFactory ruleQueryFactory; + private final UserSession userSession; + private final DefaultOrganizationProvider defaultOrganizationProvider; + private final RuleActivator ruleActivator; - public ActivateRulesAction(QProfileService profileService, RuleQueryFactory ruleQueryFactory) { - this.profileService = profileService; + public ActivateRulesAction(RuleQueryFactory ruleQueryFactory, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider, + RuleActivator ruleActivator) { this.ruleQueryFactory = ruleQueryFactory; + this.userSession = userSession; + this.defaultOrganizationProvider = defaultOrganizationProvider; + this.ruleActivator = ruleActivator; } public void define(WebService.NewController controller) { @@ -68,10 +76,15 @@ public void define(WebService.NewController controller) { @Override public void handle(Request request, Response response) throws Exception { - BulkChangeResult result = profileService.bulkActivate( - ruleQueryFactory.createRuleQuery(request), - request.mandatoryParam(PROFILE_KEY), - request.param(SEVERITY)); + verifyAdminPermission(); + BulkChangeResult result = ruleActivator.bulkActivate(ruleQueryFactory.createRuleQuery(request), request.mandatoryParam(PROFILE_KEY), request.param(SEVERITY)); BulkChangeWsResponse.writeResponse(result, response); } + + private void verifyAdminPermission() { + // FIXME check for the permission of the appropriate organization, not the default one + userSession + .checkLoggedIn() + .checkPermission(ADMINISTER_QUALITY_PROFILES, defaultOrganizationProvider.get().getUuid()); + } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java index e69773d43811..be93acf8306e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java @@ -23,10 +23,13 @@ import org.sonar.api.server.ws.Request; import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; +import org.sonar.server.organization.DefaultOrganizationProvider; import org.sonar.server.qualityprofile.BulkChangeResult; -import org.sonar.server.qualityprofile.QProfileService; +import org.sonar.server.qualityprofile.RuleActivator; import org.sonar.server.rule.ws.RuleQueryFactory; +import org.sonar.server.user.UserSession; +import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES; import static org.sonar.server.rule.ws.SearchAction.defineRuleSearchParameters; @ServerSide @@ -37,12 +40,17 @@ public class DeactivateRulesAction implements QProfileWsAction { public static final String BULK_DEACTIVATE_ACTION = "deactivate_rules"; - private final QProfileService profileService; private final RuleQueryFactory ruleQueryFactory; + private final UserSession userSession; + private final DefaultOrganizationProvider defaultOrganizationProvider; + private final RuleActivator ruleActivator; - public DeactivateRulesAction(QProfileService profileService, RuleQueryFactory ruleQueryFactory) { - this.profileService = profileService; + public DeactivateRulesAction(RuleQueryFactory ruleQueryFactory, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider, + RuleActivator ruleActivator) { this.ruleQueryFactory = ruleQueryFactory; + this.userSession = userSession; + this.defaultOrganizationProvider = defaultOrganizationProvider; + this.ruleActivator = ruleActivator; } public void define(WebService.NewController controller) { @@ -63,9 +71,15 @@ public void define(WebService.NewController controller) { @Override public void handle(Request request, Response response) throws Exception { - BulkChangeResult result = profileService.bulkDeactivate( - ruleQueryFactory.createRuleQuery(request), - request.mandatoryParam(PROFILE_KEY)); + verifyAdminPermission(); + BulkChangeResult result = ruleActivator.bulkDeactivate(ruleQueryFactory.createRuleQuery(request), request.mandatoryParam(PROFILE_KEY)); BulkChangeWsResponse.writeResponse(result, response); } + + private void verifyAdminPermission() { + // FIXME check for the permission of the appropriate organization, not the default one + userSession + .checkLoggedIn() + .checkPermission(ADMINISTER_QUALITY_PROFILES, defaultOrganizationProvider.get().getUuid()); + } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java index ac5139210877..f9ef186ac91b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java @@ -27,7 +27,6 @@ import org.sonar.db.DbTester; import org.sonar.server.organization.TestDefaultOrganizationProvider; import org.sonar.server.qualityprofile.RuleActivator; -import org.sonar.server.qualityprofile.index.ActiveRuleIndexer; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsActionTester; @@ -45,9 +44,7 @@ public class ActivateRulesActionTest { private DbClient dbClient = dbTester.getDbClient(); private RuleActivator ruleActivator = mock(RuleActivator.class); - private QProfileWsSupport wsSupport = new QProfileWsSupport(dbClient, userSession, TestDefaultOrganizationProvider.from(dbTester)); - private ActiveRuleIndexer activeRuleIndexer = mock(ActiveRuleIndexer.class); - private ActivateRulesAction underTest = new ActivateRulesAction(null, null); + private ActivateRulesAction underTest = new ActivateRulesAction(null, null, TestDefaultOrganizationProvider.from(dbTester), ruleActivator); private WsActionTester wsActionTester = new WsActionTester(underTest); @Test diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java index c7196df1ab1a..777a71ba454c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java @@ -27,7 +27,6 @@ import org.sonar.db.DbTester; import org.sonar.server.organization.TestDefaultOrganizationProvider; import org.sonar.server.qualityprofile.RuleActivator; -import org.sonar.server.qualityprofile.index.ActiveRuleIndexer; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsActionTester; @@ -45,9 +44,7 @@ public class DeactivateRulesActionTest { private DbClient dbClient = dbTester.getDbClient(); private RuleActivator ruleActivator = mock(RuleActivator.class); - private QProfileWsSupport wsSupport = new QProfileWsSupport(dbClient, userSession, TestDefaultOrganizationProvider.from(dbTester)); - private ActiveRuleIndexer activeRuleIndexer = mock(ActiveRuleIndexer.class); - private DeactivateRulesAction underTest = new DeactivateRulesAction(null, null); + private DeactivateRulesAction underTest = new DeactivateRulesAction(null, null, TestDefaultOrganizationProvider.from(dbTester), ruleActivator); private WsActionTester wsActionTester = new WsActionTester(underTest); @Test diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/InheritanceActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/InheritanceActionTest.java index 6a4167001ecf..c7b486efafe2 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/InheritanceActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/InheritanceActionTest.java @@ -45,7 +45,6 @@ import org.sonar.server.organization.TestDefaultOrganizationProvider; import org.sonar.server.qualityprofile.QProfileLookup; import org.sonar.server.qualityprofile.QProfileName; -import org.sonar.server.qualityprofile.QProfileService; import org.sonar.server.qualityprofile.QProfileTesting; import org.sonar.server.qualityprofile.RuleActivation; import org.sonar.server.qualityprofile.RuleActivator; @@ -76,7 +75,6 @@ public class InheritanceActionTest { private InheritanceAction underTest; private WsActionTester wsActionTester; private RuleActivator ruleActivator; - private QProfileService service; private OrganizationDto organization; @Before @@ -101,10 +99,6 @@ public void setUp() { new TypeValidations(new ArrayList<>()), activeRuleIndexer, userSession); - service = new QProfileService( - ruleActivator, - userSession, - defaultOrganizationProvider); organization = dbTester.organizations().insert(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java index 3dd78f48c1ac..5a65f3af2634 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java @@ -33,7 +33,6 @@ import org.sonar.server.language.LanguageTesting; import org.sonar.server.organization.DefaultOrganizationProvider; import org.sonar.server.organization.TestDefaultOrganizationProvider; -import org.sonar.server.qualityprofile.QProfileService; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsTester; @@ -52,7 +51,6 @@ public class QProfilesWsTest { @Before public void setUp() { - QProfileService profileService = mock(QProfileService.class); DbClient dbClient = mock(DbClient.class); Languages languages = LanguageTesting.newLanguages(xoo1Key, xoo2Key);