Browse Source

SONAR-17705 Remove usage of 'id' and 'gateId' parameters in quality gates endpoints

tags/10.0.0.68432
Léo Geoffroy 1 year ago
parent
commit
7e8256685e
29 changed files with 176 additions and 361 deletions
  1. 4
    19
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CopyAction.java
  2. 1
    1
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateAction.java
  3. 6
    20
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java
  4. 4
    16
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DestroyAction.java
  5. 0
    1
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java
  6. 6
    18
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/RenameAction.java
  7. 5
    18
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SearchAction.java
  8. 4
    18
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SelectAction.java
  9. 5
    18
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SetAsDefaultAction.java
  10. 4
    25
      server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
  11. 13
    14
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java
  12. 0
    1
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateActionTest.java
  13. 11
    12
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java
  14. 13
    16
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/DestroyActionTest.java
  15. 22
    21
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/RenameActionTest.java
  16. 17
    18
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SearchActionTest.java
  17. 13
    13
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java
  18. 3
    3
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SetAsDefaultActionTest.java
  19. 4
    28
      server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java
  20. 7
    10
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CopyRequest.java
  21. 5
    5
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CreateConditionRequest.java
  22. 6
    10
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/DestroyRequest.java
  23. 0
    1
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualityGatesServiceCreateResponseJsonParser.java
  24. 6
    8
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualitygatesService.java
  25. 5
    5
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/SearchRequest.java
  26. 5
    18
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/SelectRequest.java
  27. 6
    10
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/SetAsDefaultRequest.java
  28. 0
    13
      sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/ShowRequest.java
  29. 1
    1
      sonar-ws/src/main/protobuf/ws-qualitygates.proto

+ 4
- 19
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CopyAction.java View File

@@ -29,11 +29,8 @@ import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.qualitygate.QualityGateUpdater;
import org.sonar.server.user.UserSession;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_SOURCE_NAME;
import static org.sonar.server.ws.WsUtils.writeProtobuf;
@@ -61,20 +58,15 @@ public class CopyAction implements QualityGatesWsAction {
"Either 'sourceName' or 'id' must be provided. Requires the 'Administer Quality Gates' permission.")
.setPost(true)
.setChangelog(
new Change("10.0", "Parameter 'id' is removed. Use 'sourceName' instead."),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'sourceName' instead."),
new Change("8.4", "Parameter 'sourceName' added"))
.setSince("4.3")
.setHandler(this);

action.createParam(PARAM_ID)
.setDescription("The ID of the source quality gate. This parameter is deprecated. Use 'sourceName' instead.")
.setRequired(false)
.setDeprecatedSince("8.4")
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(PARAM_SOURCE_NAME)
.setDescription("The name of the quality gate to copy")
.setRequired(false)
.setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("My Quality Gate");
@@ -87,21 +79,14 @@ public class CopyAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
String uuid = request.param(PARAM_ID);
String sourceName = request.param(PARAM_SOURCE_NAME);
checkArgument(sourceName != null ^ uuid != null, "Either 'id' or 'sourceName' must be provided, and not both");
String sourceName = request.mandatoryParam(PARAM_SOURCE_NAME);

String destinationName = request.mandatoryParam(PARAM_NAME);

try (DbSession dbSession = dbClient.openSession(false)) {

userSession.checkPermission(ADMINISTER_QUALITY_GATES);
QualityGateDto qualityGate;
if (uuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, uuid);
} else {
qualityGate = wsSupport.getByName(dbSession, sourceName);
}
QualityGateDto qualityGate = wsSupport.getByName(dbSession, sourceName);
QualityGateDto copy = qualityGateUpdater.copy(dbSession, qualityGate, destinationName);
dbSession.commit();


+ 1
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateAction.java View File

@@ -81,6 +81,7 @@ public class CreateAction implements QualityGatesWsAction {
"Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setChangelog(
new Change("10.0", "Field 'id' in the response is removed."),
new Change("8.4", "Field 'id' in the response is deprecated. Format changes from integer to string."))
.setResponseExample(getClass().getResource("create-example.json"))
.setHandler(this);
@@ -103,7 +104,6 @@ public class CreateAction implements QualityGatesWsAction {
addCaycConditions(dbSession, newQualityGate);

CreateResponse.Builder createResponse = CreateResponse.newBuilder()
.setId(newQualityGate.getUuid())
.setName(newQualityGate.getName());
dbSession.commit();
writeProtobuf(createResponse.build(), request, response);

+ 6
- 20
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java View File

@@ -30,11 +30,9 @@ import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.qualitygate.QualityGateConditionsUpdater;
import org.sonarqube.ws.Qualitygates.CreateConditionResponse;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.server.qualitygate.ws.QualityGatesWs.addConditionParams;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.ACTION_CREATE_CONDITION;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;
@@ -65,19 +63,13 @@ public class CreateConditionAction implements QualityGatesWsAction {
new Change("7.6", "Made 'error' parameter mandatory"),
new Change("7.6", "Reduced the possible values of 'op' parameter to LT and GT"),
new Change("8.4", "Parameter 'gateName' added"),
new Change("8.4", "Parameter 'gateId' is deprecated. Use 'gateName' instead."))
new Change("8.4", "Parameter 'gateId' is deprecated. Use 'gateName' instead."),
new Change("10.0", "Parameter 'gateId' is removed. Use 'gateName' instead."))
.setHandler(this);

createCondition
.createParam(PARAM_GATE_ID)
.setDeprecatedSince("8.4")
.setRequired(false)
.setDescription("ID of the quality gate. This parameter is deprecated. Use 'gateName' instead.")
.setExampleValue("1");

createCondition
.createParam(PARAM_GATE_NAME)
.setRequired(false)
.setRequired(true)
.setDescription("Name of the quality gate")
.setExampleValue("SonarSource way");

@@ -86,20 +78,14 @@ public class CreateConditionAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
String gateUuid = request.param(PARAM_GATE_ID);
String gateName = request.param(PARAM_GATE_NAME);
String gateName = request.mandatoryParam(PARAM_GATE_NAME);
String metric = request.mandatoryParam(PARAM_METRIC);
String operator = request.mandatoryParam(PARAM_OPERATOR);
String error = request.mandatoryParam(PARAM_ERROR);
checkArgument(gateName != null ^ gateUuid != null, "One of 'gateId' or 'gateName' must be provided, and not both");

try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate;
if (gateUuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, gateUuid);
} else {
qualityGate = wsSupport.getByName(dbSession, gateName);
}
QualityGateDto qualityGate = wsSupport.getByName(dbSession, gateName);

wsSupport.checkCanLimitedEdit(dbSession, qualityGate);
QualityGateConditionDto condition = qualityGateConditionsUpdater.createCondition(dbSession, qualityGate, metric, operator, error);
CreateConditionResponse.Builder createConditionResponse = CreateConditionResponse.newBuilder()

+ 4
- 16
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DestroyAction.java View File

@@ -29,7 +29,6 @@ import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.qualitygate.QualityGateFinder;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;

public class DestroyAction implements QualityGatesWsAction {
@@ -52,19 +51,14 @@ public class DestroyAction implements QualityGatesWsAction {
.setSince("4.3")
.setPost(true)
.setChangelog(
new Change("10.0", "Parameter 'name' is removed. Use 'name' instead."),
new Change("8.4", "Parameter 'name' added"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."))
.setHandler(this);

action.createParam(QualityGatesWsParameters.PARAM_ID)
.setDescription("ID of the quality gate to delete. This parameter is deprecated. Use 'name' instead.")
.setRequired(false)
.setDeprecatedSince("8.4")
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(QualityGatesWsParameters.PARAM_NAME)
.setDescription("Name of the quality gate to delete")
.setRequired(false)
.setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("SonarSource Way");
@@ -72,19 +66,13 @@ public class DestroyAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
String uuid = request.param(QualityGatesWsParameters.PARAM_ID);
String name = request.param(QualityGatesWsParameters.PARAM_NAME);
String name = request.mandatoryParam(QualityGatesWsParameters.PARAM_NAME);

checkArgument(name != null ^ uuid != null, "One of 'id' or 'name' must be provided, and not both");

try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate;

if (uuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, uuid);
} else {
qualityGate = wsSupport.getByName(dbSession, name);
}
qualityGate = wsSupport.getByName(dbSession, name);

QualityGateDto defaultQualityGate = finder.getDefault(dbSession);
checkArgument(!defaultQualityGate.getUuid().equals(qualityGate.getUuid()), "The default quality gate cannot be removed");

+ 0
- 1
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java View File

@@ -49,7 +49,6 @@ public class QualityGatesWsParameters {
public static final String PARAM_ERROR = "error";
public static final String PARAM_OPERATOR = "op";
public static final String PARAM_METRIC = "metric";
public static final String PARAM_GATE_ID = "gateId";
public static final String PARAM_GATE_NAME = "gateName";
public static final String PARAM_ID = "id";
public static final String PARAM_SOURCE_NAME = "sourceName";

+ 6
- 18
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/RenameAction.java View File

@@ -29,10 +29,8 @@ import org.sonar.db.qualitygate.QualityGateDto;
import org.sonarqube.ws.Qualitygates.QualityGate;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_CURRENT_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.ws.WsUtils.writeProtobuf;

@@ -54,18 +52,13 @@ public class RenameAction implements QualityGatesWsAction {
"Either 'id' or 'currentName' must be specified. Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setChangelog(
new Change("10.0", "Parameter 'id' is removed. Use 'currentName' instead."),
new Change("8.4", "Parameter 'currentName' added"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'currentName' instead."))
.setHandler(this);

action.createParam(PARAM_ID)
.setRequired(false)
.setDeprecatedSince("8.4")
.setDescription("ID of the quality gate to rename. This parameter is deprecated. Use 'currentName' instead.")
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(PARAM_CURRENT_NAME)
.setRequired(false)
.setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setDescription("Current name of the quality gate")
@@ -80,19 +73,14 @@ public class RenameAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
String uuid = request.param(PARAM_ID);
String currentName = request.param(PARAM_CURRENT_NAME);

checkArgument(uuid != null ^ currentName != null, "One of 'id' or 'currentName' must be provided, and not both");
String currentName = request.mandatoryParam(PARAM_CURRENT_NAME);

try (DbSession dbSession = dbClient.openSession(false)) {

QualityGateDto qualityGate;
if (uuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, uuid);
} else {
qualityGate = wsSupport.getByName(dbSession, currentName);
}

qualityGate = wsSupport.getByName(dbSession, currentName);

QualityGateDto renamedQualityGate = rename(dbSession, qualityGate, request.mandatoryParam(PARAM_NAME));
writeProtobuf(QualityGate.newBuilder()
.setId(renamedQualityGate.getUuid())

+ 5
- 18
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SearchAction.java View File

@@ -37,13 +37,10 @@ import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.Qualitygates;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.api.server.ws.WebService.Param.SELECTED;
import static org.sonar.api.utils.Paging.forPageIndex;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.qualitygate.ProjectQgateAssociationQuery.ANY;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE_SIZE;
@@ -70,6 +67,7 @@ public class SearchAction implements QualityGatesWsAction {
.setSince("4.3")
.setResponseExample(Resources.getResource(this.getClass(), "search-example.json"))
.setChangelog(
new Change("10.0", "Parameter 'gateId' is removed. Use 'gateName' instead."),
new Change("8.4", "Parameter 'gateName' added"),
new Change("8.4", "Parameter 'gateId' is deprecated. Format changes from integer to string. Use 'gateName' instead."),
new Change("7.9", "New field 'paging' in response"),
@@ -77,15 +75,9 @@ public class SearchAction implements QualityGatesWsAction {
new Change("7.9", "Field 'more' is deprecated in the response"))
.setHandler(this);

action.createParam(PARAM_GATE_ID)
.setDescription("Quality Gate ID. This parameter is deprecated. Use 'gateName' instead.")
.setRequired(false)
.setDeprecatedSince("8.4")
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(PARAM_GATE_NAME)
.setDescription("Quality Gate name")
.setRequired(false)
.setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("SonarSource Way");
@@ -110,17 +102,12 @@ public class SearchAction implements QualityGatesWsAction {
public void handle(Request request, Response response) {
try (DbSession dbSession = dbClient.openSession(false)) {

String gateUuid = request.param(PARAM_GATE_ID);
String gateName = request.param(PARAM_GATE_NAME);
String gateName = request.mandatoryParam(PARAM_GATE_NAME);

checkArgument(gateName != null ^ gateUuid != null, "One of 'gateId' or 'gateName' must be provided, and not both");

QualityGateDto qualityGate;
if (gateUuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, gateUuid);
} else {
qualityGate = wsSupport.getByName(dbSession, gateName);
}

qualityGate = wsSupport.getByName(dbSession, gateName);

ProjectQgateAssociationQuery projectQgateAssociationQuery = ProjectQgateAssociationQuery.builder()
.qualityGate(qualityGate)

+ 4
- 18
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SelectAction.java View File

@@ -28,11 +28,8 @@ import org.sonar.db.DbSession;
import org.sonar.db.project.ProjectDto;
import org.sonar.db.qualitygate.QualityGateDto;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.ACTION_SELECT;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PROJECT_KEY;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
@@ -59,18 +56,13 @@ public class SelectAction implements QualityGatesWsAction {
.setSince("4.3")
.setHandler(this)
.setChangelog(
new Change("10.0", "Parameter 'gateId' is removed. Use 'gateName' instead."),
new Change("8.4", "Parameter 'gateName' added"),
new Change("8.4", "Parameter 'gateId' is deprecated. Format changes from integer to string. Use 'gateName' instead."),
new Change("8.3", "The parameter 'projectId' was removed"));

action.createParam(PARAM_GATE_ID)
.setDescription("Quality gate ID. This parameter is deprecated. Use 'gateName' instead.")
.setRequired(false)
.setDeprecatedSince("8.4")
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(PARAM_GATE_NAME)
.setRequired(false)
.setRequired(true)
.setDescription("Name of the quality gate")
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
@@ -85,19 +77,13 @@ public class SelectAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
String gateUuid = request.param(PARAM_GATE_ID);
String gateName = request.param(PARAM_GATE_NAME);
String gateName = request.mandatoryParam(PARAM_GATE_NAME);
String projectKey = request.mandatoryParam(PARAM_PROJECT_KEY);

checkArgument(gateName != null ^ gateUuid != null, "Either 'gateId' or 'gateName' must be provided, and not both");

try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate;
if (gateUuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, gateUuid);
} else {
qualityGate = wsSupport.getByName(dbSession, gateName);
}
qualityGate = wsSupport.getByName(dbSession, gateName);
ProjectDto project = wsSupport.getProject(dbSession, projectKey);
wsSupport.checkCanAdminProject(project);


+ 5
- 18
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SetAsDefaultAction.java View File

@@ -29,11 +29,8 @@ import org.sonar.db.property.PropertyDto;
import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.user.UserSession;

import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;

public class SetAsDefaultAction implements QualityGatesWsAction {
@@ -56,20 +53,15 @@ public class SetAsDefaultAction implements QualityGatesWsAction {
"Either 'id' or 'name' must be specified. Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
.setChangelog(
new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
new Change("8.4", "Parameter 'name' added"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."))
.setPost(true)
.setHandler(this);

action.createParam(PARAM_ID)
.setDescription("ID of the quality gate to set as default. This parameter is deprecated. Use 'name' instead.")
.setDeprecatedSince("8.4")
.setRequired(false)
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(PARAM_NAME)
.setDescription("Name of the quality gate to set as default")
.setRequired(false)
.setRequired(true)
.setMaximumLength(NAME_MAXIMUM_LENGTH)
.setSince("8.4")
.setExampleValue("SonarSource Way");
@@ -77,19 +69,14 @@ public class SetAsDefaultAction implements QualityGatesWsAction {

@Override
public void handle(Request request, Response response) {
String uuid = request.param(PARAM_ID);
String name = request.param(PARAM_NAME);
checkArgument(name != null ^ uuid != null, "One of 'id' or 'name' must be provided, and not both");
String name = request.mandatoryParam(PARAM_NAME);

try (DbSession dbSession = dbClient.openSession(false)) {
userSession.checkPermission(ADMINISTER_QUALITY_GATES);
QualityGateDto qualityGate;

if (uuid != null) {
qualityGate = wsSupport.getByUuid(dbSession, uuid);
} else {
qualityGate = wsSupport.getByName(dbSession, name);
}
qualityGate = wsSupport.getByName(dbSession, name);

dbClient.propertiesDao().saveProperty(new PropertyDto().setKey(DEFAULT_QUALITY_GATE_PROPERTY_NAME).setValue(qualityGate.getUuid()));
dbSession.commit();
}

+ 4
- 25
server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java View File

@@ -24,7 +24,6 @@ import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import javax.annotation.Nullable;
import org.sonar.api.server.ws.Change;
import org.sonar.api.server.ws.Request;
import org.sonar.api.server.ws.Response;
@@ -39,14 +38,11 @@ import org.sonar.server.qualitygate.QualityGateCaycStatus;
import org.sonar.server.qualitygate.QualityGateFinder;
import org.sonarqube.ws.Qualitygates.ShowWsResponse;

import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Optional.ofNullable;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.core.util.stream.MoreCollectors.toList;
import static org.sonar.core.util.stream.MoreCollectors.toSet;
import static org.sonar.core.util.stream.MoreCollectors.uniqueIndex;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.ws.WsUtils.writeProtobuf;

@@ -72,6 +68,7 @@ public class ShowAction implements QualityGatesWsAction {
.setSince("4.3")
.setResponseExample(Resources.getResource(this.getClass(), "show-example.json"))
.setChangelog(
new Change("10.0", "Parameter 'id' is removed. Use 'name' instead."),
new Change("9.9", "'caycStatus' field is added to the response"),
new Change("8.4", "Parameter 'id' is deprecated. Format changes from integer to string. Use 'name' instead."),
new Change("8.4", "Field 'id' in the response is deprecated."),
@@ -80,23 +77,18 @@ public class ShowAction implements QualityGatesWsAction {
new Change("7.0", "'actions' field is added in the response"))
.setHandler(this);

action.createParam(PARAM_ID)
.setDescription("ID of the quality gate. Either id or name must be set")
.setExampleValue(UUID_EXAMPLE_01);

action.createParam(PARAM_NAME)
.setRequired(true)
.setDescription("Name of the quality gate. Either id or name must be set")
.setExampleValue("My Quality Gate");
}

@Override
public void handle(Request request, Response response) {
String id = request.param(PARAM_ID);
String name = request.param(PARAM_NAME);
checkOneOfIdOrNamePresent(id, name);
String name = request.mandatoryParam(PARAM_NAME);

try (DbSession dbSession = dbClient.openSession(false)) {
QualityGateDto qualityGate = getByNameOrUuid(dbSession, name, id);
QualityGateDto qualityGate = wsSupport.getByName(dbSession, name);
Collection<QualityGateConditionDto> conditions = getConditions(dbSession, qualityGate);
Map<String, MetricDto> metricsByUuid = getMetricsByUuid(dbSession, conditions);
QualityGateDto defaultQualityGate = qualityGateFinder.getDefault(dbSession);
@@ -105,16 +97,6 @@ public class ShowAction implements QualityGatesWsAction {
}
}

private QualityGateDto getByNameOrUuid(DbSession dbSession, @Nullable String name, @Nullable String uuid) {
if (name != null) {
return wsSupport.getByName(dbSession, name);
}
if (uuid != null) {
return wsSupport.getByUuid(dbSession, uuid);
}
throw new IllegalArgumentException("No parameter has been set to identify a quality gate");
}

public Collection<QualityGateConditionDto> getConditions(DbSession dbSession, QualityGateDto qualityGate) {
return dbClient.gateConditionDao().selectForQualityGate(dbSession, qualityGate.getUuid());
}
@@ -152,7 +134,4 @@ public class ShowAction implements QualityGatesWsAction {
};
}

private static void checkOneOfIdOrNamePresent(@Nullable String qGateUuid, @Nullable String qGateName) {
checkArgument(qGateUuid == null ^ qGateName == null, "Either '%s' or '%s' must be provided", PARAM_ID, PARAM_NAME);
}
}

+ 13
- 14
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java View File

@@ -50,8 +50,8 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.AssertionsForClassTypes.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_SOURCE_NAME;

@RunWith(DataProviderRunner.class)
public class CopyActionTest {
@@ -82,8 +82,7 @@ public class CopyActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
tuple("id", false),
tuple("sourceName", false),
tuple("sourceName", true),
tuple("name", true));
}

@@ -96,7 +95,7 @@ public class CopyActionTest {
QualityGateConditionDto condition = db.qualityGates().addCondition(qualityGate, metric);

ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.execute();

@@ -117,7 +116,7 @@ public class CopyActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qualityGateDto -> qualityGateDto.setBuiltIn(true));

ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.execute();

@@ -132,7 +131,7 @@ public class CopyActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

QualityGate response = ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.executeProtobuf(QualityGate.class);

@@ -148,33 +147,33 @@ public class CopyActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new-name")
.execute())
.isInstanceOf(ForbiddenException.class);
}

@Test
public void fail_when_id_parameter_is_missing() {
public void fail_when_source_name_parameter_is_missing() {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_NAME, "new-name")
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("Either 'id' or 'sourceName' must be provided, and not both");
.hasMessageContaining("The 'sourceName' parameter is missing");
}

@Test
public void fail_when_quality_gate_id_is_not_found() {
public void fail_when_quality_gate_name_is_not_found() {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, "123")
.setParam(PARAM_SOURCE_NAME, "unknown")
.setParam(PARAM_NAME, "new-name")
.execute())
.isInstanceOf(NotFoundException.class)
.hasMessageContaining("No quality gate has been found for id 123");
.hasMessageContaining("No quality gate has been found for name unknown");
}

@Test
@@ -184,7 +183,7 @@ public class CopyActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

TestRequest request = ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid());
.setParam(PARAM_SOURCE_NAME, qualityGate.getName());
ofNullable(nameParameter).ifPresent(t -> request.setParam(PARAM_NAME, t));

assertThatThrownBy(() -> request.execute())
@@ -208,7 +207,7 @@ public class CopyActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_SOURCE_NAME, qualityGate.getName())
.setParam(PARAM_NAME, existingQualityGate.getName())
.execute())
.isInstanceOf(IllegalArgumentException.class)

+ 0
- 1
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateActionTest.java View File

@@ -82,7 +82,6 @@ public class CreateActionTest {
CreateResponse response = executeRequest(qgName);

assertThat(response.getName()).isEqualTo(qgName);
assertThat(response.getId()).isNotNull();
dbSession.commit();

QualityGateDto qualityGateDto = dbClient.qualityGateDao().selectByName(dbSession, qgName);

+ 11
- 12
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java View File

@@ -51,7 +51,7 @@ import static org.assertj.core.api.Assertions.tuple;
import static org.sonar.api.measures.Metric.ValueType.INT;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ERROR;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_METRIC;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_OPERATOR;

@@ -79,7 +79,7 @@ public class CreateConditionActionTest {
MetricDto metric = insertMetric();

ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
@@ -95,7 +95,7 @@ public class CreateConditionActionTest {
MetricDto metric = insertMetric();

ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
@@ -111,7 +111,7 @@ public class CreateConditionActionTest {
MetricDto metric = insertMetric();

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
@@ -127,7 +127,7 @@ public class CreateConditionActionTest {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()).setHidden(false).setDirection(0));

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "ABC")
.setParam(PARAM_ERROR, "90")
@@ -144,7 +144,7 @@ public class CreateConditionActionTest {
MetricDto metric = db.measures().insertMetric(m -> m.setValueType(INT.name()).setHidden(false).setDirection(direction));

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, operator)
.setParam(PARAM_ERROR, "90")
@@ -160,7 +160,7 @@ public class CreateConditionActionTest {
MetricDto metric = insertMetric();

CreateConditionResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "45")
@@ -182,7 +182,7 @@ public class CreateConditionActionTest {
userSession.logIn(user);

TestResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
@@ -201,7 +201,7 @@ public class CreateConditionActionTest {
userSession.logIn(user).setGroups(group);

TestResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
@@ -217,7 +217,7 @@ public class CreateConditionActionTest {
userSession.logIn();

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_GATE_ID, qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam(PARAM_METRIC, metric.getKey())
.setParam(PARAM_OPERATOR, "LT")
.setParam(PARAM_ERROR, "90")
@@ -236,8 +236,7 @@ public class CreateConditionActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
tuple("gateId", false),
tuple("gateName", false),
tuple("gateName", true),
tuple("metric", true),
tuple("error", true),
tuple("op", false));

+ 13
- 16
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/DestroyActionTest.java View File

@@ -40,7 +40,6 @@ import org.sonar.server.ws.WsActionTester;

import static java.lang.String.format;
import static java.lang.String.valueOf;
import static org.apache.commons.lang.StringUtils.EMPTY;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.tuple;
@@ -48,7 +47,7 @@ import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.db.qualitygate.SearchQualityGatePermissionQuery.builder;
import static org.sonar.db.user.SearchPermissionQuery.IN;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;

public class DestroyActionTest {

@@ -72,7 +71,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_NAME, qualityGate.getName())
.execute();

assertThat(db.getDbClient().qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid())).isNull();
@@ -85,7 +84,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

ws.newRequest()
.setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_NAME, qualityGate.getName())
.execute();

assertThat(db.getDbClient().qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid())).isNull();
@@ -102,7 +101,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

ws.newRequest()
.setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_NAME, qualityGate.getName())
.execute();

assertThat(db.getDbClient().projectQgateAssociationDao().selectQGateUuidByProjectUuid(dbSession, prj1.getUuid()))
@@ -128,7 +127,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

ws.newRequest()
.setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_NAME, qualityGate.getName())
.execute();

assertThat(db.getDbClient().qualityGateGroupPermissionsDao().selectByQuery(dbSession, builder()
@@ -150,7 +149,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

ws.newRequest()
.setParam(PARAM_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_NAME, qualityGate.getName())
.execute();

assertThat(db.getDbClient().qualityGateUserPermissionDao().selectByQuery(dbSession, builder()
@@ -168,20 +167,19 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, valueOf(builtInQualityGate.getUuid()))
.setParam(PARAM_NAME, valueOf(builtInQualityGate.getName()))
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(format("Operation forbidden for built-in Quality Gate '%s'", builtInQualityGate.getName()));
}

@Test
public void fail_when_missing_id() {
public void fail_when_missing_name() {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, EMPTY)
.execute())
.isInstanceOf(NotFoundException.class);
.isInstanceOf(IllegalArgumentException.class);
}

@Test
@@ -190,7 +188,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, valueOf(defaultQualityGate.getUuid()))
.setParam(PARAM_NAME, valueOf(defaultQualityGate.getName()))
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("The default quality gate cannot be removed");
@@ -201,7 +199,7 @@ public class DestroyActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, "123")
.setParam(PARAM_NAME, "unknown")
.execute())
.isInstanceOf(NotFoundException.class);
}
@@ -213,7 +211,7 @@ public class DestroyActionTest {
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_PROFILES);

assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_ID, qualityGate.getUuid())
.setParam(PARAM_NAME, qualityGate.getName())
.execute())
.isInstanceOf(ForbiddenException.class);
}
@@ -228,8 +226,7 @@ public class DestroyActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
tuple("id", false),
tuple("name", false));
tuple("name", true));
}

}

+ 22
- 21
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/RenameActionTest.java View File

@@ -38,6 +38,8 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.AssertionsForClassTypes.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_PROFILES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_CURRENT_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;

public class RenameActionTest {

@@ -58,9 +60,8 @@ public class RenameActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
tuple("id", false),
tuple("currentName", false),
tuple("name", true));
tuple(PARAM_CURRENT_NAME, true),
tuple(PARAM_NAME, true));
}

@Test
@@ -69,8 +70,8 @@ public class RenameActionTest {
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_GATES);

ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", "new name")
.setParam(PARAM_CURRENT_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new name")
.execute();

assertThat(db.getDbClient().qualityGateDao().selectByUuid(db.getSession(), qualityGate.getUuid()).getName()).isEqualTo("new name");
@@ -82,8 +83,8 @@ public class RenameActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("old name"));

QualityGate result = ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", "new name")
.setParam(PARAM_CURRENT_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new name")
.executeProtobuf(QualityGate.class);

assertThat(result.getId()).isEqualTo(qualityGate.getUuid());
@@ -93,14 +94,14 @@ public class RenameActionTest {
@Test
public void rename_with_same_name() {
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_GATES);
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("name"));
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName(PARAM_NAME));

ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", "name")
.setParam(PARAM_CURRENT_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "name")
.execute();

assertThat(db.getDbClient().qualityGateDao().selectByUuid(db.getSession(), qualityGate.getUuid()).getName()).isEqualTo("name");
assertThat(db.getDbClient().qualityGateDao().selectByUuid(db.getSession(), qualityGate.getUuid()).getName()).isEqualTo(PARAM_NAME);
}

@Test
@@ -109,8 +110,8 @@ public class RenameActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setBuiltIn(true));

assertThatThrownBy(() -> ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", "name")
.setParam(PARAM_CURRENT_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "name")
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(format("Operation forbidden for built-in Quality Gate '%s'", qualityGate.getName()));
@@ -122,8 +123,8 @@ public class RenameActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", "")
.setParam(PARAM_CURRENT_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "")
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("The 'name' parameter is missing");
@@ -136,8 +137,8 @@ public class RenameActionTest {
QualityGateDto qualityGate2 = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam("id", qualityGate1.getUuid())
.setParam("name", qualityGate2.getName())
.setParam(PARAM_CURRENT_NAME, qualityGate1.getName())
.setParam(PARAM_NAME, qualityGate2.getName())
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining(format("Name '%s' has already been taken", qualityGate2.getName()));
@@ -148,8 +149,8 @@ public class RenameActionTest {
userSession.logIn("john").addPermission(ADMINISTER_QUALITY_GATES);

assertThatThrownBy(() -> ws.newRequest()
.setParam("id", "123")
.setParam("name", "new name")
.setParam(PARAM_CURRENT_NAME, "unknown")
.setParam(PARAM_NAME, "new name")
.execute())
.isInstanceOf(NotFoundException.class);
}
@@ -160,8 +161,8 @@ public class RenameActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("old name"));

assertThatThrownBy(() -> ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", "new name")
.setParam(PARAM_CURRENT_NAME, qualityGate.getName())
.setParam(PARAM_NAME, "new name")
.execute())
.isInstanceOf(ForbiddenException.class);
}

+ 17
- 18
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SearchActionTest.java View File

@@ -44,7 +44,7 @@ import static org.sonar.api.server.ws.WebService.SelectionMode.DESELECTED;
import static org.sonar.api.server.ws.WebService.SelectionMode.SELECTED;
import static org.sonar.api.web.UserRole.USER;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_ID;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_PAGE_SIZE;
import static org.sonarqube.ws.client.user.UsersWsParameters.PARAM_SELECTED;
@@ -70,7 +70,7 @@ public class SearchActionTest {
db.qualityGates().associateProjectToQualityGate(db.components().getProjectDto(project), qualityGate);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.executeProtobuf(SearchResponse.class);

assertThat(response.getResultsList())
@@ -83,7 +83,7 @@ public class SearchActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.executeProtobuf(SearchResponse.class);

assertThat(response.getResultsList()).isEmpty();
@@ -97,7 +97,7 @@ public class SearchActionTest {
db.qualityGates().associateProjectToQualityGate(associatedProject, qualityGate);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.executeProtobuf(SearchResponse.class);

@@ -116,7 +116,7 @@ public class SearchActionTest {
db.qualityGates().associateProjectToQualityGate(associatedProject, qualityGate);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, SELECTED.value())
.executeProtobuf(SearchResponse.class);

@@ -134,7 +134,7 @@ public class SearchActionTest {
db.qualityGates().associateProjectToQualityGate(associatedProject, qualityGate);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, DESELECTED.value())
.executeProtobuf(SearchResponse.class);

@@ -155,7 +155,7 @@ public class SearchActionTest {
userSession.logIn(user);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.executeProtobuf(SearchResponse.class);

@@ -175,7 +175,7 @@ public class SearchActionTest {

// Return partial result on first page
assertThat(ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "1")
.setParam(PARAM_PAGE_SIZE, "1")
@@ -186,7 +186,7 @@ public class SearchActionTest {

// Return partial result on second page
assertThat(ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "2")
.setParam(PARAM_PAGE_SIZE, "1")
@@ -197,7 +197,7 @@ public class SearchActionTest {

// Return partial result on first page
assertThat(ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "1")
.setParam(PARAM_PAGE_SIZE, "2")
@@ -208,7 +208,7 @@ public class SearchActionTest {

// Return all result on first page
assertThat(ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "1")
.setParam(PARAM_PAGE_SIZE, "3")
@@ -219,7 +219,7 @@ public class SearchActionTest {

// Return no result as page index is off limit
assertThat(ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_SELECTED, ALL.value())
.setParam(PARAM_PAGE, "3")
.setParam(PARAM_PAGE_SIZE, "3")
@@ -239,7 +239,7 @@ public class SearchActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_PAGE_SIZE, valueOf(5))
.setParam(PARAM_PAGE, valueOf(2))
.executeProtobuf(SearchResponse.class);
@@ -262,7 +262,7 @@ public class SearchActionTest {
userSession.addPermission(ADMINISTER_QUALITY_GATES);

SearchResponse response = ws.newRequest()
.setParam(PARAM_GATE_ID, valueOf(qualityGate.getUuid()))
.setParam(PARAM_GATE_NAME, valueOf(qualityGate.getName()))
.setParam(PARAM_PAGE_SIZE, valueOf(100))
.setParam(PARAM_PAGE, valueOf(1))
.executeProtobuf(SearchResponse.class);
@@ -278,10 +278,10 @@ public class SearchActionTest {
@Test
public void fail_on_unknown_quality_gate() {
assertThatThrownBy(() -> ws.newRequest()
.setParam(PARAM_GATE_ID, "42")
.setParam(PARAM_GATE_NAME, "unknown")
.executeProtobuf(SearchResponse.class))
.isInstanceOf(NotFoundException.class)
.hasMessageContaining("No quality gate has been found for id 42");
.hasMessageContaining("No quality gate has been found for name unknown");
}

@Test
@@ -295,8 +295,7 @@ public class SearchActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
tuple("gateId", false),
tuple("gateName", false),
tuple("gateName", true),
tuple("query", false),
tuple("selected", false),
tuple("page", false),

+ 13
- 13
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java View File

@@ -34,12 +34,12 @@ import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsActionTester;

import static java.lang.String.format;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.sonar.api.web.UserRole.ADMIN;
import static org.sonar.api.web.UserRole.ISSUE_ADMIN;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_GATE_NAME;

public class SelectActionTest {

@@ -61,7 +61,7 @@ public class SelectActionTest {
ComponentDto project = db.components().insertPrivateProject();

ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

@@ -76,12 +76,12 @@ public class SelectActionTest {
ComponentDto project = db.components().insertPrivateProject();

ws.newRequest()
.setParam("gateId", initialQualityGate.getUuid())
.setParam(PARAM_GATE_NAME, initialQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

ws.newRequest()
.setParam("gateId", secondQualityGate.getUuid())
.setParam(PARAM_GATE_NAME, secondQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

@@ -95,12 +95,12 @@ public class SelectActionTest {
ComponentDto project = db.components().insertPrivateProject();

ws.newRequest()
.setParam("gateId", initialQualityGate.getUuid())
.setParam(PARAM_GATE_NAME, initialQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

ws.newRequest()
.setParam("gateId", initialQualityGate.getUuid())
.setParam(PARAM_GATE_NAME, initialQualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

@@ -114,7 +114,7 @@ public class SelectActionTest {
userSession.logIn().addProjectPermission(ADMIN, project);

ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

@@ -128,7 +128,7 @@ public class SelectActionTest {
ComponentDto project = db.components().insertPrivateProject();

ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute();

@@ -141,7 +141,7 @@ public class SelectActionTest {
ComponentDto project = db.components().insertPrivateProject();

assertThatThrownBy(() -> ws.newRequest()
.setParam("gateId", "1")
.setParam(PARAM_GATE_NAME, "unknown")
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(NotFoundException.class);
@@ -153,7 +153,7 @@ public class SelectActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", "unknown")
.execute())
.isInstanceOf(NotFoundException.class);
@@ -166,7 +166,7 @@ public class SelectActionTest {
userSession.anonymous();

assertThatThrownBy(() -> ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(ForbiddenException.class);
@@ -179,7 +179,7 @@ public class SelectActionTest {
userSession.logIn().addProjectPermission(ISSUE_ADMIN, project);

assertThatThrownBy(() -> ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(ForbiddenException.class);
@@ -192,7 +192,7 @@ public class SelectActionTest {
userSession.logIn();

assertThatThrownBy(() -> ws.newRequest()
.setParam("gateId", qualityGate.getUuid())
.setParam(PARAM_GATE_NAME, qualityGate.getName())
.setParam("projectKey", project.getKey())
.execute())
.isInstanceOf(ForbiddenException.class);

+ 3
- 3
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SetAsDefaultActionTest.java View File

@@ -32,6 +32,7 @@ import org.sonar.server.ws.WsActionTester;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.tuple;
import static org.sonar.db.permission.GlobalPermission.ADMINISTER_QUALITY_GATES;
import static org.sonar.server.qualitygate.ws.QualityGatesWsParameters.PARAM_NAME;

public class SetAsDefaultActionTest {
@Rule
@@ -51,8 +52,7 @@ public class SetAsDefaultActionTest {
assertThat(action.params())
.extracting(WebService.Param::key, WebService.Param::isRequired)
.containsExactlyInAnyOrder(
tuple("id", false),
tuple("name", false));
tuple("name", true));
}

@Test
@@ -61,7 +61,7 @@ public class SetAsDefaultActionTest {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate(qg -> qg.setName("name"));

ws.newRequest()
.setParam("name", "name")
.setParam(PARAM_NAME, "name")
.execute();

assertThat(db.getDbClient().propertiesDao().selectGlobalProperty(db.getSession(), "qualitygate.default").getValue())

+ 4
- 28
server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java View File

@@ -127,7 +127,7 @@ public class ShowActionTest {
db.qualityGates().setDefaultQualityGate(qualityGate);

ShowWsResponse response = ws.newRequest()
.setParam("id", qualityGate.getUuid())
.setParam("name", qualityGate.getName())
.executeProtobuf(ShowWsResponse.class);

assertThat(response.getId()).isEqualTo(qualityGate.getUuid());
@@ -261,24 +261,12 @@ public class ShowActionTest {
}

@Test
public void fail_when_no_name_or_id() {
public void fail_when_no_name() {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest().execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("Either 'id' or 'name' must be provided");
}

@Test
public void fail_when_both_name_or_id() {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam("name", qualityGate.getName())
.setParam("id", qualityGate.getUuid())
.execute())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("Either 'id' or 'name' must be provided");
.hasMessageContaining("The 'name' parameter is missing");
}

@Test
@@ -308,17 +296,6 @@ public class ShowActionTest {
.hasMessageContaining("No quality gate has been found for name UNKNOWN");
}

@Test
public void fail_when_quality_id_does_not_exist() {
QualityGateDto qualityGate = db.qualityGates().insertQualityGate();

assertThatThrownBy(() -> ws.newRequest()
.setParam("id", "123")
.execute())
.isInstanceOf(NotFoundException.class)
.hasMessageContaining("No quality gate has been found for id 123");
}

@Test
public void json_example() {
userSession.logIn("admin").addPermission(ADMINISTER_QUALITY_GATES);
@@ -346,8 +323,7 @@ public class ShowActionTest {
assertThat(action.params())
.extracting(Param::key, Param::isRequired)
.containsExactlyInAnyOrder(
tuple("id", false),
tuple("name", false));
tuple("name", true));
}

}

+ 7
- 10
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CopyRequest.java View File

@@ -30,20 +30,17 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class CopyRequest {

private String id;
private String sourceName;
private String name;

/**
* This is a mandatory parameter.
* Example value: "1"
*/
public CopyRequest setId(String id) {
this.id = id;
return this;

public String getSourceName() {
return sourceName;
}

public String getId() {
return id;
public CopyRequest setSourceName(String sourceName) {
this.sourceName = sourceName;
return this;
}

/**

+ 5
- 5
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CreateConditionRequest.java View File

@@ -31,7 +31,7 @@ import javax.annotation.Generated;
public class CreateConditionRequest {

private String error;
private String gateId;
private String gateName;
private String metric;
private String op;

@@ -51,13 +51,13 @@ public class CreateConditionRequest {
* This is a mandatory parameter.
* Example value: "1"
*/
public CreateConditionRequest setGateId(String gateId) {
this.gateId = gateId;
public CreateConditionRequest setGateName(String gateName) {
this.gateName = gateName;
return this;
}

public String getGateId() {
return gateId;
public String getGateName() {
return gateName;
}

/**

+ 6
- 10
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/DestroyRequest.java View File

@@ -30,18 +30,14 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class DestroyRequest {

private String id;
private String name;

/**
* This is a mandatory parameter.
* Example value: "1"
*/
public DestroyRequest setId(String id) {
this.id = id;
return this;
public String getName() {
return name;
}

public String getId() {
return id;
public DestroyRequest setName(String name) {
this.name = name;
return this;
}
}

+ 0
- 1
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualityGatesServiceCreateResponseJsonParser.java View File

@@ -133,7 +133,6 @@ public class QualityGatesServiceCreateResponseJsonParser implements Parser<Quali
Qualitygates.CreateResponse.Builder builder = Qualitygates.CreateResponse.newBuilder();
String json = readInputStream(input);
JsonObject jobj = new Gson().fromJson(json, JsonObject.class);
builder.setId(jobj.get("id").getAsString());
builder.setName(jobj.get("name").getAsString());
return builder.build();
}

+ 6
- 8
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualitygatesService.java View File

@@ -55,7 +55,7 @@ public class QualitygatesService extends BaseService {
public void copy(CopyRequest request) {
call(
new PostRequest(path("copy"))
.setParam("id", request.getId())
.setParam("sourceName", request.getSourceName())
.setParam("name", request.getName())
.setMediaType(MediaTypes.JSON)).content();
}
@@ -95,7 +95,7 @@ public class QualitygatesService extends BaseService {
return call(
new PostRequest(path("create_condition"))
.setParam("error", request.getError())
.setParam("gateId", request.getGateId())
.setParam("gateName", request.getGateName())
.setParam("metric", request.getMetric())
.setParam("op", request.getOp()),
CreateConditionResponse.parser());
@@ -140,7 +140,7 @@ public class QualitygatesService extends BaseService {
public void destroy(DestroyRequest request) {
call(
new PostRequest(path("destroy"))
.setParam("id", request.getId())
.setParam("name", request.getName())
.setMediaType(MediaTypes.JSON)).content();
}

@@ -228,7 +228,7 @@ public class QualitygatesService extends BaseService {
public SearchResponse search(SearchRequest request) {
return call(
new GetRequest(path("search"))
.setParam("gateId", request.getGateId())
.setParam("gateName", request.getGateName())
.setParam("page", request.getPage())
.setParam("pageSize", request.getPageSize())
.setParam("query", request.getQuery())
@@ -246,8 +246,7 @@ public class QualitygatesService extends BaseService {
public void select(SelectRequest request) {
call(
new PostRequest(path("select"))
.setParam("gateId", request.getGateId())
.setParam("projectId", request.getProjectId())
.setParam("gateName", request.getGateName())
.setParam("projectKey", request.getProjectKey())
.setMediaType(MediaTypes.JSON)).content();
}
@@ -262,7 +261,7 @@ public class QualitygatesService extends BaseService {
public void setAsDefault(SetAsDefaultRequest request) {
call(
new PostRequest(path("set_as_default"))
.setParam("id", request.getId())
.setParam("name", request.getName())
.setMediaType(MediaTypes.JSON)).content();
}

@@ -276,7 +275,6 @@ public class QualitygatesService extends BaseService {
public ShowWsResponse show(ShowRequest request) {
return call(
new GetRequest(path("show"))
.setParam("id", request.getId())
.setParam("name", request.getName()),
ShowWsResponse.parser());
}

+ 5
- 5
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/SearchRequest.java View File

@@ -30,7 +30,7 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class SearchRequest {

private String gateId;
private String gateName;
private String page;
private String pageSize;
private String query;
@@ -40,13 +40,13 @@ public class SearchRequest {
* This is a mandatory parameter.
* Example value: "1"
*/
public SearchRequest setGateId(String gateId) {
this.gateId = gateId;
public SearchRequest setGateName(String gateName) {
this.gateName = gateName;
return this;
}

public String getGateId() {
return gateId;
public String getGateName() {
return gateName;
}

/**

+ 5
- 18
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/SelectRequest.java View File

@@ -30,33 +30,20 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class SelectRequest {

private String gateId;
private String projectId;
private String gateName;
private String projectKey;

/**
* This is a mandatory parameter.
* Example value: "1"
*/
public SelectRequest setGateId(String gateId) {
this.gateId = gateId;
public SelectRequest setGateName(String gateName) {
this.gateName = gateName;
return this;
}

public String getGateId() {
return gateId;
}

/**
* Example value: "AU-Tpxb--iU5OvuD2FLy"
*/
public SelectRequest setProjectId(String projectId) {
this.projectId = projectId;
return this;
}

public String getProjectId() {
return projectId;
public String getGateName() {
return gateName;
}

/**

+ 6
- 10
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/SetAsDefaultRequest.java View File

@@ -30,18 +30,14 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class SetAsDefaultRequest {

private String id;
private String name;

/**
* This is a mandatory parameter.
* Example value: "1"
*/
public SetAsDefaultRequest setId(String id) {
this.id = id;
return this;
public String getName() {
return name;
}

public String getId() {
return id;
public SetAsDefaultRequest setName(String name) {
this.name = name;
return this;
}
}

+ 0
- 13
sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/ShowRequest.java View File

@@ -30,21 +30,8 @@ import javax.annotation.Generated;
@Generated("sonar-ws-generator")
public class ShowRequest {

private String id;
private String name;

/**
* Example value: "1"
*/
public ShowRequest setId(String id) {
this.id = id;
return this;
}

public String getId() {
return id;
}

/**
* Example value: "My Quality Gate"
*/

+ 1
- 1
sonar-ws/src/main/protobuf/ws-qualitygates.proto View File

@@ -104,7 +104,7 @@ message AppResponse {

// POST api/qualitygates/create
message CreateResponse {
optional string id = 1;
reserved 1; //drop id in web-api response
optional string name = 2;
}


Loading…
Cancel
Save