From: Sébastien Lesaint Date: Fri, 20 Jul 2018 14:39:39 +0000 (+0200) Subject: remove useless abstract class BaseUserSession X-Git-Tag: 7.5~746 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2f441edda5ef3bd807bfd04d1e7d7f663d38f812;p=sonarqube.git remove useless abstract class BaseUserSession --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/AbstractUserSession.java b/server/sonar-server/src/main/java/org/sonar/server/user/AbstractUserSession.java index ee54c942351..b73253e059b 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/AbstractUserSession.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/AbstractUserSession.java @@ -19,6 +19,12 @@ */ package org.sonar.server.user; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import org.sonar.core.permission.ProjectPermissions; +import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.component.ComponentDto; import org.sonar.db.organization.OrganizationDto; import org.sonar.db.permission.OrganizationPermission; @@ -26,11 +32,72 @@ import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.UnauthorizedException; import static java.lang.String.format; +import static org.apache.commons.lang.StringUtils.defaultString; -public abstract class AbstractUserSession extends BaseUserSession { +public abstract class AbstractUserSession implements UserSession { private static final String INSUFFICIENT_PRIVILEGES_MESSAGE = "Insufficient privileges"; private static final ForbiddenException INSUFFICIENT_PRIVILEGES_EXCEPTION = new ForbiddenException(INSUFFICIENT_PRIVILEGES_MESSAGE); private static final String AUTHENTICATION_IS_REQUIRED_MESSAGE = "Authentication is required"; + @Override + public final boolean hasPermission(OrganizationPermission permission, OrganizationDto organization) { + return hasPermission(permission, organization.getUuid()); + } + + @Override + public final boolean hasPermission(OrganizationPermission permission, String organizationUuid) { + return isRoot() || hasPermissionImpl(permission, organizationUuid); + } + + protected abstract boolean hasPermissionImpl(OrganizationPermission permission, String organizationUuid); + + @Override + public final boolean hasComponentPermission(String permission, ComponentDto component) { + if (isRoot()) { + return true; + } + String projectUuid = defaultString(component.getMainBranchProjectUuid(), component.projectUuid()); + return hasProjectUuidPermission(permission, projectUuid); + } + + @Override + public final boolean hasComponentUuidPermission(String permission, String componentUuid) { + if (isRoot()) { + return true; + } + Optional projectUuid = componentUuidToProjectUuid(componentUuid); + return projectUuid + .map(s -> hasProjectUuidPermission(permission, s)) + .orElse(false); + } + + protected abstract Optional componentUuidToProjectUuid(String componentUuid); + + protected abstract boolean hasProjectUuidPermission(String permission, String projectUuid); + + @Override + public final boolean hasMembership(OrganizationDto organization) { + return isRoot() || hasMembershipImpl(organization); + } + + protected abstract boolean hasMembershipImpl(OrganizationDto organization); + + @Override + public final List keepAuthorizedComponents(String permission, Collection components) { + if (isRoot()) { + return new ArrayList<>(components); + } + return doKeepAuthorizedComponents(permission, components); + } + + /** + * Naive implementation, to be overridden if needed + */ + protected List doKeepAuthorizedComponents(String permission, Collection components) { + boolean allowPublicComponent = ProjectPermissions.PUBLIC_PERMISSIONS.contains(permission); + return components.stream() + .filter(c -> (allowPublicComponent && !c.isPrivate()) || hasComponentPermission(permission, c)) + .collect(MoreCollectors.toList()); + } @Override public UserSession checkIsRoot() { diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/BaseUserSession.java b/server/sonar-server/src/main/java/org/sonar/server/user/BaseUserSession.java deleted file mode 100644 index 51c591cd62f..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/user/BaseUserSession.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2018 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.user; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; -import org.sonar.core.permission.ProjectPermissions; -import org.sonar.core.util.stream.MoreCollectors; -import org.sonar.db.component.ComponentDto; -import org.sonar.db.organization.OrganizationDto; -import org.sonar.db.permission.OrganizationPermission; - -import static org.apache.commons.lang.StringUtils.defaultString; - -public abstract class BaseUserSession implements UserSession { - @Override - public final boolean hasPermission(OrganizationPermission permission, OrganizationDto organization) { - return hasPermission(permission, organization.getUuid()); - } - - @Override - public final boolean hasPermission(OrganizationPermission permission, String organizationUuid) { - return isRoot() || hasPermissionImpl(permission, organizationUuid); - } - - protected abstract boolean hasPermissionImpl(OrganizationPermission permission, String organizationUuid); - - @Override - public final boolean hasComponentPermission(String permission, ComponentDto component) { - if (isRoot()) { - return true; - } - String projectUuid = defaultString(component.getMainBranchProjectUuid(), component.projectUuid()); - return hasProjectUuidPermission(permission, projectUuid); - } - - @Override - public final boolean hasComponentUuidPermission(String permission, String componentUuid) { - if (isRoot()) { - return true; - } - Optional projectUuid = componentUuidToProjectUuid(componentUuid); - return projectUuid - .map(s -> hasProjectUuidPermission(permission, s)) - .orElse(false); - } - - protected abstract Optional componentUuidToProjectUuid(String componentUuid); - - protected abstract boolean hasProjectUuidPermission(String permission, String projectUuid); - - @Override - public final boolean hasMembership(OrganizationDto organization) { - return isRoot() || hasMembershipImpl(organization); - } - - protected abstract boolean hasMembershipImpl(OrganizationDto organization); - - @Override - public final List keepAuthorizedComponents(String permission, Collection components) { - if (isRoot()) { - return new ArrayList<>(components); - } - return doKeepAuthorizedComponents(permission, components); - } - - /** - * Naive implementation, to be overridden if needed - */ - protected List doKeepAuthorizedComponents(String permission, Collection components) { - boolean allowPublicComponent = ProjectPermissions.PUBLIC_PERMISSIONS.contains(permission); - return components.stream() - .filter(c -> (allowPublicComponent && !c.isPrivate()) || hasComponentPermission(permission, c)) - .collect(MoreCollectors.toList()); - } -}