import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.user.UserSession;
-import org.sonar.server.util.Validation;
import static java.lang.String.format;
import static org.sonar.server.user.AbstractUserSession.insufficientPrivilegesException;
+import static org.sonar.server.util.Validation.CANT_BE_EMPTY_MESSAGE;
+import static org.sonar.server.util.Validation.IS_ALREADY_USED_MESSAGE;
+import static org.sonar.server.ws.WsUtils.checkFound;
import static org.sonar.server.ws.WsUtils.checkRequest;
/**
private QualityGateDto getNonNullQgate(String name) {
try (DbSession dbSession = dbClient.openSession(false)) {
- QualityGateDto qGate = dao.selectByName(dbSession, name);
- if (qGate == null) {
- throw new NotFoundException("There is no quality gate with name=" + name);
- }
- return qGate;
+ return checkFound(dao.selectByName(dbSession, name), "There is no quality gate with name=%s", name);
}
}
private void validateQualityGate(DbSession dbSession, @Nullable Long updatingQgateId, @Nullable String name) {
List<String> errors = new ArrayList<>();
if (Strings.isNullOrEmpty(name)) {
- errors.add(format(Validation.CANT_BE_EMPTY_MESSAGE, "Name"));
+ errors.add(format(CANT_BE_EMPTY_MESSAGE, "Name"));
} else {
checkQgateNotAlreadyExists(dbSession, updatingQgateId, name, errors);
}
QualityGateDto existingQgate = dao.selectByName(dbSession, name);
boolean isModifyingCurrentQgate = updatingQgateId != null && existingQgate != null && existingQgate.getId().equals(updatingQgateId);
if (!isModifyingCurrentQgate && existingQgate != null) {
- errors.add(format(Validation.IS_ALREADY_USED_MESSAGE, "Name"));
+ errors.add(format(IS_ALREADY_USED_MESSAGE, "Name"));
}
}
public class CreateAction implements QualityGatesWsAction {
+ public static final int NAME_MAXIMUM_LENGTH = 100;
private final DbClient dbClient;
private final UserSession userSession;
private final QualityGateUpdater qualityGateUpdater;
@Override
public void define(WebService.NewController controller) {
WebService.NewAction action = controller.createAction(ACTION_CREATE)
+ .setPost(true)
.setDescription("Create a Quality Gate.<br>" +
"Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
- .setPost(true)
.setHandler(this);
action.createParam(PARAM_NAME)
- .setDescription("The name of the quality gate to create")
.setRequired(true)
+ .setMaximumLength(NAME_MAXIMUM_LENGTH)
+ .setDescription("The name of the quality gate to create")
.setExampleValue("My Quality Gate");
}
import org.sonar.api.server.ws.WebService;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
+import org.sonar.db.permission.OrganizationPermission;
import org.sonar.db.qualitygate.QualityGateConditionDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
-import org.sonar.db.permission.OrganizationPermission;
import org.sonar.server.qualitygate.QualityGateConditionsUpdater;
import org.sonar.server.user.UserSession;
import org.sonarqube.ws.WsQualityGates.CreateConditionWsResponse;
@Override
public void define(WebService.NewController controller) {
WebService.NewAction createCondition = controller.createAction(ACTION_CREATE_CONDITION)
+ .setPost(true)
.setDescription("Add a new condition to a quality gate.<br>" +
"Requires the 'Administer Quality Gates' permission.")
- .setPost(true)
.setSince("4.3")
.setHandler(this);
createCondition
.createParam(PARAM_GATE_ID)
- .setDescription("ID of the quality gate")
.setRequired(true)
+ .setDescription("ID of the quality gate")
.setExampleValue("1");
addConditionParams(createCondition);
import static org.sonarqube.ws.client.qualitygate.QualityGatesWsParameters.PARAM_WARNING;
public class QualityGatesWs implements WebService {
+
+ private static final int CONDITION_MAX_LENGTH = 64;
private final QualityGatesWsAction[] actions;
public QualityGatesWs(QualityGatesWsAction... actions) {
.setPossibleValues("1");
action.createParam(PARAM_WARNING)
+ .setMaximumLength(CONDITION_MAX_LENGTH)
.setDescription("Condition warning threshold")
.setExampleValue("5");
action.createParam(PARAM_ERROR)
+ .setMaximumLength(CONDITION_MAX_LENGTH)
.setDescription("Condition error threshold")
.setExampleValue("10");
}
import org.sonar.db.qualitygate.QualityGateDto;
import org.sonar.server.qualitygate.QualityGates;
+import static org.sonar.server.qualitygate.ws.CreateAction.NAME_MAXIMUM_LENGTH;
import static org.sonarqube.ws.client.qualitygate.QualityGatesWsParameters.PARAM_ID;
import static org.sonarqube.ws.client.qualitygate.QualityGatesWsParameters.PARAM_NAME;
@Override
public void define(WebService.NewController controller) {
WebService.NewAction action = controller.createAction("rename")
+ .setPost(true)
.setDescription("Rename a Quality Gate.<br>" +
- "Requires the 'Administer Quality Gates' permission.")
+ "Requires the 'Administer Quality Gates' permission.")
.setSince("4.3")
- .setPost(true)
.setHandler(this);
action.createParam(PARAM_ID)
- .setDescription("ID of the quality gate to rename")
.setRequired(true)
+ .setDescription("ID of the quality gate to rename")
.setExampleValue("1");
action.createParam(PARAM_NAME)
- .setDescription("New name of the quality gate")
.setRequired(true)
+ .setMaximumLength(NAME_MAXIMUM_LENGTH)
+ .setDescription("New name of the quality gate")
.setExampleValue("My Quality Gate");
}