From 7e8256685ebe4a00efac9e6225af4253434fc5c9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?L=C3=A9o=20Geoffroy?= Date: Tue, 31 Jan 2023 16:36:26 +0100 Subject: [PATCH] SONAR-17705 Remove usage of 'id' and 'gateId' parameters in quality gates endpoints --- .../server/qualitygate/ws/CopyAction.java | 23 ++-------- .../server/qualitygate/ws/CreateAction.java | 2 +- .../qualitygate/ws/CreateConditionAction.java | 26 +++-------- .../server/qualitygate/ws/DestroyAction.java | 20 ++------- .../ws/QualityGatesWsParameters.java | 1 - .../server/qualitygate/ws/RenameAction.java | 24 +++-------- .../server/qualitygate/ws/SearchAction.java | 23 +++------- .../server/qualitygate/ws/SelectAction.java | 22 ++-------- .../qualitygate/ws/SetAsDefaultAction.java | 23 +++------- .../server/qualitygate/ws/ShowAction.java | 29 ++----------- .../server/qualitygate/ws/CopyActionTest.java | 27 ++++++------ .../qualitygate/ws/CreateActionTest.java | 1 - .../ws/CreateConditionActionTest.java | 23 +++++----- .../qualitygate/ws/DestroyActionTest.java | 29 ++++++------- .../qualitygate/ws/RenameActionTest.java | 43 ++++++++++--------- .../qualitygate/ws/SearchActionTest.java | 35 ++++++++------- .../qualitygate/ws/SelectActionTest.java | 26 +++++------ .../ws/SetAsDefaultActionTest.java | 6 +-- .../server/qualitygate/ws/ShowActionTest.java | 32 ++------------ .../ws/client/qualitygates/CopyRequest.java | 17 +++----- .../qualitygates/CreateConditionRequest.java | 10 ++--- .../client/qualitygates/DestroyRequest.java | 16 +++---- ...yGatesServiceCreateResponseJsonParser.java | 1 - .../qualitygates/QualitygatesService.java | 14 +++--- .../ws/client/qualitygates/SearchRequest.java | 10 ++--- .../ws/client/qualitygates/SelectRequest.java | 23 +++------- .../qualitygates/SetAsDefaultRequest.java | 16 +++---- .../ws/client/qualitygates/ShowRequest.java | 13 ------ .../src/main/protobuf/ws-qualitygates.proto | 2 +- 29 files changed, 176 insertions(+), 361 deletions(-) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CopyAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CopyAction.java index 499972d68a5..462470949b9 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CopyAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CopyAction.java @@ -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(); diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateAction.java index cad83a28e84..371756e40d2 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateAction.java @@ -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); diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java index 04ca261dc03..c33aff75b4f 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/CreateConditionAction.java @@ -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() diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DestroyAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DestroyAction.java index b0eefdd6306..e07e4426100 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DestroyAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/DestroyAction.java @@ -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"); diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java index b437b2a49c3..1b2e7d447cc 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/QualityGatesWsParameters.java @@ -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"; diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/RenameAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/RenameAction.java index 195738b2dc1..a51e18a8e08 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/RenameAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/RenameAction.java @@ -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()) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SearchAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SearchAction.java index 19dd5487ba3..f452f7f09e7 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SearchAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SearchAction.java @@ -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) diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SelectAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SelectAction.java index 0b65a2d20c9..65189d24ce8 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SelectAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SelectAction.java @@ -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); diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SetAsDefaultAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SetAsDefaultAction.java index d33e537456c..fc27433952b 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SetAsDefaultAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/SetAsDefaultAction.java @@ -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(); } diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java index 07bc8fa3321..361b793ad1e 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java @@ -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 conditions = getConditions(dbSession, qualityGate); Map 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 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); - } } diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java index d7d2b497ddc..df72252eaf3 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CopyActionTest.java @@ -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) diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateActionTest.java index a7b880a9c82..31b16fcd833 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateActionTest.java @@ -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); diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java index 18a1fca2a7f..b2d9c84031f 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/CreateConditionActionTest.java @@ -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)); diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/DestroyActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/DestroyActionTest.java index 251b35b9f9b..03a5bdecfcf 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/DestroyActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/DestroyActionTest.java @@ -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)); } } diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/RenameActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/RenameActionTest.java index 2ec6f41f56a..54090ce3135 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/RenameActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/RenameActionTest.java @@ -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); } diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SearchActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SearchActionTest.java index ad66a9277f2..cd6e2588353 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SearchActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SearchActionTest.java @@ -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), diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java index cf8970c248b..f1306bd31b6 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SelectActionTest.java @@ -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); diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SetAsDefaultActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SetAsDefaultActionTest.java index 6b9e01b0976..88e1e42f2a5 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SetAsDefaultActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/SetAsDefaultActionTest.java @@ -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()) diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java index 1e19d5ca378..527a3560e70 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/qualitygate/ws/ShowActionTest.java @@ -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)); } } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CopyRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CopyRequest.java index cb6a7ec4bec..da2f8b0ff32 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CopyRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CopyRequest.java @@ -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; } /** diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CreateConditionRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CreateConditionRequest.java index e06150625c8..f59ea515818 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CreateConditionRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/CreateConditionRequest.java @@ -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; } /** diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/DestroyRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/DestroyRequest.java index ea1ce1b6769..131baae6db0 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/DestroyRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/DestroyRequest.java @@ -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; } } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualityGatesServiceCreateResponseJsonParser.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualityGatesServiceCreateResponseJsonParser.java index e26c72ced9c..bfac20d898b 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualityGatesServiceCreateResponseJsonParser.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/qualitygates/QualityGatesServiceCreateResponseJsonParser.java @@ -133,7 +133,6 @@ public class QualityGatesServiceCreateResponseJsonParser implements Parser