From 4770d7ad2a4b88f08fe68be907b1a0f75c964912 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 20 Oct 2016 19:19:58 +0200 Subject: [PATCH] SONAR-8134 rename PermissionService It's only about templates, so class is renamed PermissionTemplateService. --- .../container/ComputeEngineContainerImpl.java | 4 ++-- .../component/DefaultRubyComponentService.java | 10 +++++----- .../computation/queue/ReportSubmitter.java | 6 +++--- ...ice.java => PermissionTemplateService.java} | 18 ++++++++++++++---- .../ws/template/ApplyTemplateAction.java | 10 +++++----- .../ws/template/BulkApplyTemplateAction.java | 10 +++++----- .../platform/platformlevel/PlatformLevel4.java | 4 ++-- .../DefaultRubyComponentServiceTest.java | 8 ++++---- .../computation/queue/ReportSubmitterTest.java | 14 +++++++------- .../ws/template/ApplyTemplateActionTest.java | 7 +++---- .../template/BulkApplyTemplateActionTest.java | 6 +++--- 11 files changed, 53 insertions(+), 44 deletions(-) rename server/sonar-server/src/main/java/org/sonar/server/permission/{PermissionService.java => PermissionTemplateService.java} (86%) diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java index 547008af676..b4a72714b08 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java @@ -97,7 +97,7 @@ import org.sonar.server.notification.email.AlertsEmailTemplate; import org.sonar.server.notification.email.EmailNotificationChannel; import org.sonar.server.organization.DefaultOrganizationProviderImpl; import org.sonar.server.permission.GroupPermissionChanger; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.permission.PermissionUpdater; import org.sonar.server.permission.UserPermissionChanger; import org.sonar.server.permission.index.PermissionIndexer; @@ -320,7 +320,7 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer { // permissions PermissionRepository.class, - PermissionService.class, + PermissionTemplateService.class, PermissionUpdater.class, UserPermissionChanger.class, GroupPermissionChanger.class, diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java b/server/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java index 26aceab58c6..9c4343aff3d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/DefaultRubyComponentService.java @@ -31,7 +31,7 @@ import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.ResourceDao; import org.sonar.db.component.ResourceDto; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.util.RubyUtils; public class DefaultRubyComponentService implements RubyComponentService { @@ -39,13 +39,13 @@ public class DefaultRubyComponentService implements RubyComponentService { private final DbClient dbClient; private final ResourceDao resourceDao; private final ComponentService componentService; - private final PermissionService permissionService; + private final PermissionTemplateService permissionTemplateService; - public DefaultRubyComponentService(DbClient dbClient, ResourceDao resourceDao, ComponentService componentService, PermissionService permissionService) { + public DefaultRubyComponentService(DbClient dbClient, ResourceDao resourceDao, ComponentService componentService, PermissionTemplateService permissionTemplateService) { this.dbClient = dbClient; this.resourceDao = resourceDao; this.componentService = componentService; - this.permissionService = permissionService; + this.permissionTemplateService = permissionTemplateService; } @Override @@ -80,7 +80,7 @@ public class DefaultRubyComponentService implements RubyComponentService { public long createComponent(DbSession dbSession, String key, @Nullable String branch, String name, @Nullable String qualifier) { ComponentDto provisionedComponent = componentService.create(dbSession, NewComponent.create(key, name).setQualifier(qualifier).setBranch(branch)); - permissionService.applyDefaultPermissionTemplate(dbSession, provisionedComponent.getKey()); + permissionTemplateService.applyDefaultPermissionTemplate(dbSession, provisionedComponent.getKey()); return provisionedComponent.getId(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/queue/ReportSubmitter.java b/server/sonar-server/src/main/java/org/sonar/server/computation/queue/ReportSubmitter.java index 778913995f4..b8f448b3cac 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/queue/ReportSubmitter.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/queue/ReportSubmitter.java @@ -36,7 +36,7 @@ import org.sonar.db.ce.CeTaskTypes; import org.sonar.db.component.ComponentDto; import org.sonar.server.component.ComponentService; import org.sonar.server.component.NewComponent; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.user.UserSession; import static org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION; @@ -48,11 +48,11 @@ public class ReportSubmitter { private final CeQueue queue; private final UserSession userSession; private final ComponentService componentService; - private final PermissionService permissionTemplateService; + private final PermissionTemplateService permissionTemplateService; private final DbClient dbClient; public ReportSubmitter(CeQueue queue, UserSession userSession, - ComponentService componentService, PermissionService permissionTemplateService, DbClient dbClient) { + ComponentService componentService, PermissionTemplateService permissionTemplateService, DbClient dbClient) { this.queue = queue; this.userSession = userSession; this.componentService = componentService; diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionService.java b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java similarity index 86% rename from server/sonar-server/src/main/java/org/sonar/server/permission/PermissionService.java rename to server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java index 7778a8acd58..bcfbeea2a04 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java @@ -41,20 +41,25 @@ import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjec import static org.sonar.server.ws.WsUtils.checkFoundWithOptional; @ServerSide -public class PermissionService { +public class PermissionTemplateService { private final DbClient dbClient; private final PermissionRepository permissionRepository; private final PermissionIndexer permissionIndexer; private final UserSession userSession; - public PermissionService(DbClient dbClient, PermissionRepository permissionRepository, PermissionIndexer permissionIndexer, UserSession userSession) { + public PermissionTemplateService(DbClient dbClient, PermissionRepository permissionRepository, PermissionIndexer permissionIndexer, UserSession userSession) { this.dbClient = dbClient; this.permissionRepository = permissionRepository; this.permissionIndexer = permissionIndexer; this.userSession = userSession; } + /** + * @deprecated replaced by {@link #applyDefault(DbSession, ComponentDto, Long)}, which does not + * verify that user is authorized to administrate the component. + */ + @Deprecated public void applyDefaultPermissionTemplate(String componentKey) { DbSession session = dbClient.openSession(false); try { @@ -96,6 +101,11 @@ public class PermissionService { return permissionRepository.wouldUserHavePermissionWithDefaultTemplate(dbSession, userId, permission, effectiveKey, qualifier); } + /** + * Apply a permission template to a set of projects. Authorization to administrate these projects + * is not verified. The projects must exist, so the "project creator" permissions defined in the + * template are ignored. + */ public void apply(DbSession dbSession, PermissionTemplateDto template, Collection projects) { if (projects.isEmpty()) { return; @@ -109,8 +119,8 @@ public class PermissionService { } /** - * Apply the default permission template to component, whatever it already exists (and has permissions) or if it's - * provisioned (and has no permissions yet). + * Apply the default permission template to project. The project can already exist (so it has permissions) or + * can be provisioned (so has no permissions yet). * * @param dbSession * @param component diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/ApplyTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/ApplyTemplateAction.java index ac2215fe45b..9018b0f6f69 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/ApplyTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/ApplyTemplateAction.java @@ -28,7 +28,7 @@ import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.db.permission.template.PermissionTemplateDto; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.permission.ProjectId; import org.sonar.server.permission.ws.PermissionWsSupport; import org.sonar.server.permission.ws.PermissionsWsAction; @@ -48,14 +48,14 @@ import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_T public class ApplyTemplateAction implements PermissionsWsAction { private final DbClient dbClient; private final UserSession userSession; - private final PermissionService permissionService; + private final PermissionTemplateService permissionTemplateService; private final PermissionWsSupport wsSupport; - public ApplyTemplateAction(DbClient dbClient, UserSession userSession, PermissionService permissionService, + public ApplyTemplateAction(DbClient dbClient, UserSession userSession, PermissionTemplateService permissionTemplateService, PermissionWsSupport wsSupport) { this.dbClient = dbClient; this.userSession = userSession; - this.permissionService = permissionService; + this.permissionTemplateService = permissionTemplateService; this.wsSupport = wsSupport; } @@ -89,7 +89,7 @@ public class ApplyTemplateAction implements PermissionsWsAction { ProjectId projectId = new ProjectId(project); checkProjectAdmin(userSession, template.getOrganizationUuid(), Optional.of(projectId)); - permissionService.apply(dbSession, template, Collections.singletonList(project)); + permissionTemplateService.apply(dbSession, template, Collections.singletonList(project)); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java index ac1777a8a9b..8d384577535 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/permission/ws/template/BulkApplyTemplateAction.java @@ -35,7 +35,7 @@ import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; import org.sonar.db.component.ComponentQuery; import org.sonar.db.permission.template.PermissionTemplateDto; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.permission.ProjectId; import org.sonar.server.permission.ws.PermissionWsSupport; import org.sonar.server.permission.ws.PermissionsWsAction; @@ -57,16 +57,16 @@ public class BulkApplyTemplateAction implements PermissionsWsAction { private final DbClient dbClient; private final UserSession userSession; - private final PermissionService permissionService; + private final PermissionTemplateService permissionTemplateService; private final PermissionWsSupport wsSupport; private final I18n i18n; private final ResourceTypes resourceTypes; - public BulkApplyTemplateAction(DbClient dbClient, UserSession userSession, PermissionService permissionService, PermissionWsSupport wsSupport, I18n i18n, + public BulkApplyTemplateAction(DbClient dbClient, UserSession userSession, PermissionTemplateService permissionTemplateService, PermissionWsSupport wsSupport, I18n i18n, ResourceTypes resourceTypes) { this.dbClient = dbClient; this.userSession = userSession; - this.permissionService = permissionService; + this.permissionTemplateService = permissionTemplateService; this.wsSupport = wsSupport; this.i18n = i18n; this.resourceTypes = resourceTypes; @@ -112,7 +112,7 @@ public class BulkApplyTemplateAction implements PermissionsWsAction { ProjectId projectId = new ProjectId(project); checkProjectAdmin(userSession, template.getOrganizationUuid(), Optional.of(projectId)); } - permissionService.apply(dbSession, template, projects); + permissionTemplateService.apply(dbSession, template, projects); } } 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 7ce7034056e..0de4247ce5f 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 @@ -137,7 +137,7 @@ import org.sonar.server.notification.email.AlertsEmailTemplate; import org.sonar.server.notification.email.EmailNotificationChannel; import org.sonar.server.organization.ws.OrganizationsWsModule; import org.sonar.server.permission.GroupPermissionChanger; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.permission.PermissionUpdater; import org.sonar.server.permission.UserPermissionChanger; import org.sonar.server.permission.index.PermissionIndexer; @@ -432,7 +432,7 @@ public class PlatformLevel4 extends PlatformLevel { // permissions PermissionsWsModule.class, PermissionRepository.class, - PermissionService.class, + PermissionTemplateService.class, PermissionUpdater.class, UserPermissionChanger.class, GroupPermissionChanger.class, diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/DefaultRubyComponentServiceTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/DefaultRubyComponentServiceTest.java index edfd797db25..f75f6814fa0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/DefaultRubyComponentServiceTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/DefaultRubyComponentServiceTest.java @@ -38,7 +38,7 @@ import org.sonar.server.component.es.ProjectMeasuresIndexer; import org.sonar.server.es.EsTester; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.i18n.I18nRule; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.tester.UserSessionRule; import static com.google.common.collect.Lists.newArrayList; @@ -69,11 +69,11 @@ public class DefaultRubyComponentServiceTest { ResourceDao resourceDao = dbClient.resourceDao(); ComponentService componentService = new ComponentService(dbClient, i18n, userSession, System2.INSTANCE, new ComponentFinder(dbClient), new ProjectMeasuresIndexer(dbClient, es.client())); - PermissionService permissionService = mock(PermissionService.class); + PermissionTemplateService permissionTemplateService = mock(PermissionTemplateService.class); ComponentDbTester componentDb = new ComponentDbTester(db); - DefaultRubyComponentService service = new DefaultRubyComponentService(dbClient, resourceDao, componentService, permissionService); + DefaultRubyComponentService service = new DefaultRubyComponentService(dbClient, resourceDao, componentService, permissionTemplateService); @Test public void find_by_key() { @@ -110,7 +110,7 @@ public class DefaultRubyComponentServiceTest { assertThat(project.name()).isEqualTo(componentName); assertThat(project.qualifier()).isEqualTo(qualifier); assertThat(project.getId()).isEqualTo(result); - verify(permissionService).applyDefaultPermissionTemplate(any(DbSession.class), eq(componentKey)); + verify(permissionTemplateService).applyDefaultPermissionTemplate(any(DbSession.class), eq(componentKey)); } @Test(expected = BadRequestException.class) diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java index 5544076684e..645e8928c50 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java @@ -38,7 +38,7 @@ import org.sonar.db.component.ComponentDto; import org.sonar.server.component.ComponentService; import org.sonar.server.component.NewComponent; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.tester.UserSessionRule; import static org.assertj.core.api.Assertions.assertThat; @@ -72,8 +72,8 @@ public class ReportSubmitterTest { private CeQueue queue = mock(CeQueueImpl.class); private ComponentService componentService = mock(ComponentService.class); - private PermissionService permissionService = mock(PermissionService.class); - private ReportSubmitter underTest = new ReportSubmitter(queue, userSession, componentService, permissionService, db.getDbClient()); + private PermissionTemplateService permissionTemplateService = mock(PermissionTemplateService.class); + private ReportSubmitter underTest = new ReportSubmitter(queue, userSession, componentService, permissionTemplateService, db.getDbClient()); @Test public void submit_a_report_on_existing_project() { @@ -85,7 +85,7 @@ public class ReportSubmitterTest { underTest.submit(project.getKey(), null, project.name(), IOUtils.toInputStream("{binary}")); verifyReportIsPersisted(TASK_UUID); - verifyZeroInteractions(permissionService); + verifyZeroInteractions(permissionTemplateService); verify(queue).submit(argThat(new TypeSafeMatcher() { @Override protected boolean matchesSafely(CeTaskSubmit submit) { @@ -107,13 +107,13 @@ public class ReportSubmitterTest { when(queue.prepareSubmit()).thenReturn(new CeTaskSubmit.Builder(TASK_UUID)); ComponentDto createdProject = new ComponentDto().setUuid(PROJECT_UUID).setKey(PROJECT_KEY); when(componentService.create(any(DbSession.class), any(NewComponent.class))).thenReturn(createdProject); - when(permissionService.wouldCurrentUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT))) + when(permissionTemplateService.wouldCurrentUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT))) .thenReturn(true); underTest.submit(PROJECT_KEY, null, PROJECT_NAME, IOUtils.toInputStream("{binary}")); verifyReportIsPersisted(TASK_UUID); - verify(permissionService).applyDefault(any(DbSession.class), eq(createdProject), anyLong()); + verify(permissionTemplateService).applyDefault(any(DbSession.class), eq(createdProject), anyLong()); verify(queue).submit(argThat(new TypeSafeMatcher() { @Override protected boolean matchesSafely(CeTaskSubmit submit) { @@ -134,7 +134,7 @@ public class ReportSubmitterTest { when(queue.prepareSubmit()).thenReturn(new CeTaskSubmit.Builder(TASK_UUID)); when(componentService.create(any(DbSession.class), any(NewComponent.class))).thenReturn(new ComponentDto().setUuid(PROJECT_UUID).setKey(PROJECT_KEY)); - when(permissionService.wouldCurrentUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT))) + when(permissionTemplateService.wouldCurrentUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT))) .thenReturn(true); underTest.submit(PROJECT_KEY, null, PROJECT_NAME, IOUtils.toInputStream("{binary}")); diff --git a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java index 20cb9cf0cd2..8a7fff304a3 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java @@ -35,14 +35,13 @@ import org.sonar.db.permission.PermissionRepository; import org.sonar.db.permission.template.PermissionTemplateDto; import org.sonar.db.user.GroupDto; import org.sonar.db.user.UserDto; -import org.sonar.server.component.ComponentFinder; import org.sonar.server.component.es.ProjectMeasuresIndexDefinition; import org.sonar.server.es.EsTester; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.issue.index.IssueIndexDefinition; -import org.sonar.server.permission.PermissionService; +import org.sonar.server.permission.PermissionTemplateService; import org.sonar.server.permission.index.PermissionIndexer; import org.sonar.server.permission.index.PermissionIndexerTester; import org.sonar.server.permission.ws.BasePermissionWsTest; @@ -78,8 +77,8 @@ public class ApplyTemplateActionTest extends BasePermissionWsTest