import org.sonar.server.qualitygate.ws.GetByProjectAction;
import org.sonar.server.qualitygate.ws.ListAction;
import org.sonar.server.qualitygate.ws.ProjectStatusAction;
-import org.sonar.server.qualitygate.ws.QGateWsSupport;
import org.sonar.server.qualitygate.ws.QualityGatesWs;
import org.sonar.server.qualitygate.ws.QualityGatesWsSupport;
import org.sonar.server.qualitygate.ws.RenameAction;
QgateProjectFinder.class,
QualityGateFinder.class,
// WS
- QGateWsSupport.class,
QualityGatesWsSupport.class,
QualityGatesWs.class,
ListAction.class,
public class ListAction implements QualityGatesWsAction {
private final DbClient dbClient;
- private final QGateWsSupport wsSupport;
+ private final QualityGatesWsSupport wsSupport;
- public ListAction(DbClient dbClient, QGateWsSupport wsSupport) {
+ public ListAction(DbClient dbClient, QualityGatesWsSupport wsSupport) {
this.dbClient = dbClient;
this.wsSupport = wsSupport;
}
+++ /dev/null
-/*
- * 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.qualitygate.ws;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.server.ServerSide;
-import org.sonar.db.DbClient;
-import org.sonar.db.DbSession;
-import org.sonar.db.property.PropertyDto;
-import org.sonar.db.qualitygate.QualityGateDto;
-import org.sonar.server.organization.DefaultOrganizationProvider;
-import org.sonar.server.user.UserSession;
-import org.sonarqube.ws.Qualitygates;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES;
-import static org.sonar.server.qualitygate.QualityGates.SONAR_QUALITYGATE_PROPERTY;
-
-@ServerSide
-public class QGateWsSupport {
-
- private final DbClient dbClient;
- private final UserSession userSession;
- private final DefaultOrganizationProvider defaultOrganizationProvider;
-
- public QGateWsSupport(DbClient dbClient, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider) {
- this.dbClient = dbClient;
- this.userSession = userSession;
- this.defaultOrganizationProvider = defaultOrganizationProvider;
- }
-
- boolean isQualityGateAdmin() {
- return userSession.hasPermission(ADMINISTER_QUALITY_GATES, defaultOrganizationProvider.get().getUuid());
- }
-
- Qualitygates.Actions getActions(QualityGateDto qualityGate, @Nullable QualityGateDto defaultQualityGate) {
- Long defaultId = defaultQualityGate == null ? null : defaultQualityGate.getId();
- boolean isDefault = qualityGate.getId().equals(defaultId);
- boolean isBuiltIn = qualityGate.isBuiltIn();
- boolean isQualityGateAdmin = isQualityGateAdmin();
- return Qualitygates.Actions.newBuilder()
- .setCopy(isQualityGateAdmin)
- .setEdit(!isBuiltIn && isQualityGateAdmin)
- .setSetAsDefault(!isDefault && isQualityGateAdmin)
- .setAssociateProjects(!isDefault && isQualityGateAdmin)
- .build();
- }
-
- @CheckForNull
- QualityGateDto getDefault(DbSession dbSession) {
- Long defaultId = getDefaultId(dbSession);
- if (defaultId == null) {
- return null;
- }
- return dbClient.qualityGateDao().selectById(dbSession, defaultId);
- }
-
- @CheckForNull
- private Long getDefaultId(DbSession dbSession) {
- PropertyDto defaultQgate = dbClient.propertiesDao().selectGlobalProperty(dbSession, SONAR_QUALITYGATE_PROPERTY);
- if (defaultQgate == null || StringUtils.isBlank(defaultQgate.getValue())) {
- return null;
- }
- return Long.valueOf(defaultQgate.getValue());
- }
-
- void checkCanEdit(QualityGateDto qualityGate) {
- checkNotBuiltInt(qualityGate);
- userSession.checkPermission(ADMINISTER_QUALITY_GATES, defaultOrganizationProvider.get().getUuid());
- }
-
- private static void checkNotBuiltInt(QualityGateDto qualityGate) {
- checkArgument(!qualityGate.isBuiltIn(), "Operation forbidden for built-in Quality Gate '%s'", qualityGate.getName());
- }
-
-}
package org.sonar.server.qualitygate.ws;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
+import org.apache.commons.lang.StringUtils;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.property.PropertyDto;
import org.sonar.db.qualitygate.QualityGateConditionDto;
+import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.server.user.UserSession;
+import org.sonarqube.ws.Qualitygates;
+import static com.google.common.base.Preconditions.checkArgument;
import static java.lang.String.format;
+import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_GATES;
+import static org.sonar.server.qualitygate.QualityGates.SONAR_QUALITYGATE_PROPERTY;
import static org.sonar.server.ws.WsUtils.checkFound;
public class QualityGatesWsSupport {
+
private final DbClient dbClient;
- private final DefaultOrganizationProvider organizationProvider;
+ private final UserSession userSession;
+ private final DefaultOrganizationProvider defaultOrganizationProvider;
- public QualityGatesWsSupport(DbClient dbClient, DefaultOrganizationProvider organizationProvider) {
+ public QualityGatesWsSupport(DbClient dbClient, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider) {
this.dbClient = dbClient;
- this.organizationProvider = organizationProvider;
+ this.userSession = userSession;
+ this.defaultOrganizationProvider = defaultOrganizationProvider;
}
QualityGateConditionDto getCondition(DbSession dbSession, long id) {
}
OrganizationDto getOrganization(DbSession dbSession) {
- String organizationKey = organizationProvider.get().getKey();
+ String organizationKey = defaultOrganizationProvider.get().getKey();
return dbClient.organizationDao().selectByKey(dbSession, organizationKey)
.orElseThrow(() -> new NotFoundException(format("No organization with key '%s'", organizationKey)));
}
+
+ boolean isQualityGateAdmin() {
+ return userSession.hasPermission(ADMINISTER_QUALITY_GATES, defaultOrganizationProvider.get().getUuid());
+ }
+
+ Qualitygates.Actions getActions(QualityGateDto qualityGate, @Nullable QualityGateDto defaultQualityGate) {
+ Long defaultId = defaultQualityGate == null ? null : defaultQualityGate.getId();
+ boolean isDefault = qualityGate.getId().equals(defaultId);
+ boolean isBuiltIn = qualityGate.isBuiltIn();
+ boolean isQualityGateAdmin = isQualityGateAdmin();
+ return Qualitygates.Actions.newBuilder()
+ .setCopy(isQualityGateAdmin)
+ .setEdit(!isBuiltIn && isQualityGateAdmin)
+ .setSetAsDefault(!isDefault && isQualityGateAdmin)
+ .setAssociateProjects(!isDefault && isQualityGateAdmin)
+ .build();
+ }
+
+ @CheckForNull
+ QualityGateDto getDefault(DbSession dbSession) {
+ Long defaultId = getDefaultId(dbSession);
+ if (defaultId == null) {
+ return null;
+ }
+ return dbClient.qualityGateDao().selectById(dbSession, defaultId);
+ }
+
+ @CheckForNull
+ private Long getDefaultId(DbSession dbSession) {
+ PropertyDto defaultQgate = dbClient.propertiesDao().selectGlobalProperty(dbSession, SONAR_QUALITYGATE_PROPERTY);
+ if (defaultQgate == null || StringUtils.isBlank(defaultQgate.getValue())) {
+ return null;
+ }
+ return Long.valueOf(defaultQgate.getValue());
+ }
+
+ void checkCanEdit(QualityGateDto qualityGate) {
+ checkNotBuiltInt(qualityGate);
+ userSession.checkPermission(ADMINISTER_QUALITY_GATES, defaultOrganizationProvider.get().getUuid());
+ }
+
+ private static void checkNotBuiltInt(QualityGateDto qualityGate) {
+ checkArgument(!qualityGate.isBuiltIn(), "Operation forbidden for built-in Quality Gate '%s'", qualityGate.getName());
+ }
}
private final DbClient dbClient;
private final QualityGateFinder qualityGateFinder;
- private final QGateWsSupport wsSupport;
+ private final QualityGatesWsSupport wsSupport;
- public RenameAction(DbClient dbClient, QualityGateFinder qualityGateFinder, QGateWsSupport wsSupport) {
+ public RenameAction(DbClient dbClient, QualityGateFinder qualityGateFinder, QualityGatesWsSupport wsSupport) {
this.dbClient = dbClient;
this.qualityGateFinder = qualityGateFinder;
this.wsSupport = wsSupport;
private final DbClient dbClient;
private final QualityGateFinder qualityGateFinder;
- private final QGateWsSupport wsSupport;
+ private final QualityGatesWsSupport wsSupport;
- public ShowAction(DbClient dbClient, QualityGateFinder qualityGateFinder, QGateWsSupport wsSupport) {
+ public ShowAction(DbClient dbClient, QualityGateFinder qualityGateFinder, QualityGatesWsSupport wsSupport) {
this.dbClient = dbClient;
this.qualityGateFinder = qualityGateFinder;
this.wsSupport = wsSupport;
public void verify_count_of_added_components() {
ComponentContainer container = new ComponentContainer();
new QualityGateModule().configure(container);
- assertThat(container.size()).isEqualTo(25 + 2);
+ assertThat(container.size()).isEqualTo(24 + 2);
}
}
private TestDefaultOrganizationProvider organizationProvider = TestDefaultOrganizationProvider.from(db);
- private WsActionTester ws = new WsActionTester(new DeleteConditionAction(userSession, db.getDbClient(), new QualityGatesWsSupport(db.getDbClient(), organizationProvider)));
+ private WsActionTester ws = new WsActionTester(
+ new DeleteConditionAction(userSession, db.getDbClient(), new QualityGatesWsSupport(db.getDbClient(), userSession, organizationProvider)));
@Test
public void definition() {
public DbTester db = DbTester.create();
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
- private WsActionTester ws = new WsActionTester(new ListAction(db.getDbClient(), new QGateWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
+ private WsActionTester ws = new WsActionTester(new ListAction(db.getDbClient(), new QualityGatesWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
@Test
public void verify_definition() {
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private WsActionTester ws = new WsActionTester(
- new RenameAction(db.getDbClient(), new QualityGateFinder(db.getDbClient()), new QGateWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
+ new RenameAction(db.getDbClient(), new QualityGateFinder(db.getDbClient()), new QualityGatesWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
@Test
public void verify_definition() {
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private WsActionTester ws = new WsActionTester(
- new ShowAction(db.getDbClient(), new QualityGateFinder(db.getDbClient()), new QGateWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
+ new ShowAction(db.getDbClient(), new QualityGateFinder(db.getDbClient()), new QualityGatesWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider)));
@Test
public void verify_definition() {