|
|
|
|
|
|
|
|
import org.sonar.server.permission.ws.WsTemplateRef; |
|
|
import org.sonar.server.permission.ws.WsTemplateRef; |
|
|
import org.sonar.server.user.UserSession; |
|
|
import org.sonar.server.user.UserSession; |
|
|
import org.sonarqube.ws.WsPermissions.PermissionTemplate; |
|
|
import org.sonarqube.ws.WsPermissions.PermissionTemplate; |
|
|
import org.sonarqube.ws.WsPermissions.WsUpdatePermissionTemplateResponse; |
|
|
|
|
|
|
|
|
import org.sonarqube.ws.WsPermissions.UpdateTemplateWsResponse; |
|
|
|
|
|
import org.sonarqube.ws.client.permission.UpdateTemplateWsRequest; |
|
|
|
|
|
|
|
|
import static com.google.common.base.Objects.firstNonNull; |
|
|
import static com.google.common.base.Objects.firstNonNull; |
|
|
import static java.lang.String.format; |
|
|
import static java.lang.String.format; |
|
|
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser; |
|
|
import static org.sonar.server.permission.PermissionPrivilegeChecker.checkGlobalAdminUser; |
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_NAME; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY_PATTERN; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createIdParameter; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createTemplateDescriptionParameter; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createTemplateProjectKeyPatternParameter; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionRequestValidator.MSG_TEMPLATE_WITH_SAME_NAME; |
|
|
import static org.sonar.server.permission.ws.PermissionRequestValidator.MSG_TEMPLATE_WITH_SAME_NAME; |
|
|
import static org.sonar.server.permission.ws.PermissionRequestValidator.validateProjectPattern; |
|
|
import static org.sonar.server.permission.ws.PermissionRequestValidator.validateProjectPattern; |
|
|
import static org.sonar.server.permission.ws.PermissionRequestValidator.validateTemplateNameFormat; |
|
|
import static org.sonar.server.permission.ws.PermissionRequestValidator.validateTemplateNameFormat; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createIdParameter; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createTemplateDescriptionParameter; |
|
|
|
|
|
import static org.sonar.server.permission.ws.PermissionsWsParametersBuilder.createTemplateProjectKeyPatternParameter; |
|
|
import static org.sonar.server.permission.ws.template.PermissionTemplateDtoToPermissionTemplateResponse.toPermissionTemplateResponse; |
|
|
import static org.sonar.server.permission.ws.template.PermissionTemplateDtoToPermissionTemplateResponse.toPermissionTemplateResponse; |
|
|
import static org.sonar.server.ws.WsUtils.checkRequest; |
|
|
import static org.sonar.server.ws.WsUtils.checkRequest; |
|
|
import static org.sonar.server.ws.WsUtils.writeProtobuf; |
|
|
import static org.sonar.server.ws.WsUtils.writeProtobuf; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_DESCRIPTION; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_ID; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_NAME; |
|
|
|
|
|
import static org.sonarqube.ws.client.permission.PermissionsWsParameters.PARAM_PROJECT_KEY_PATTERN; |
|
|
|
|
|
|
|
|
public class UpdateTemplateAction implements PermissionsWsAction { |
|
|
public class UpdateTemplateAction implements PermissionsWsAction { |
|
|
private final DbClient dbClient; |
|
|
private final DbClient dbClient; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void handle(Request wsRequest, Response wsResponse) throws Exception { |
|
|
|
|
|
|
|
|
public void handle(Request request, Response response) throws Exception { |
|
|
|
|
|
UpdateTemplateWsResponse updateTemplateWsResponse = doHandle(toUpdateTemplateWsRequest(request)); |
|
|
|
|
|
writeProtobuf(updateTemplateWsResponse, request, response); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private UpdateTemplateWsResponse doHandle(UpdateTemplateWsRequest request) { |
|
|
checkGlobalAdminUser(userSession); |
|
|
checkGlobalAdminUser(userSession); |
|
|
|
|
|
|
|
|
String uuid = wsRequest.mandatoryParam(PARAM_ID); |
|
|
|
|
|
String nameParam = wsRequest.param(PARAM_NAME); |
|
|
|
|
|
String descriptionParam = wsRequest.param(PARAM_DESCRIPTION); |
|
|
|
|
|
String projectPatternParam = wsRequest.param(PARAM_PROJECT_KEY_PATTERN); |
|
|
|
|
|
|
|
|
String uuid = request.getId(); |
|
|
|
|
|
String nameParam = request.getName(); |
|
|
|
|
|
String descriptionParam = request.getDescription(); |
|
|
|
|
|
String projectPatternParam = request.getProjectKeyPattern(); |
|
|
|
|
|
|
|
|
DbSession dbSession = dbClient.openSession(false); |
|
|
DbSession dbSession = dbClient.openSession(false); |
|
|
try { |
|
|
try { |
|
|
|
|
|
|
|
|
validateTemplate(dbSession, templateToUpdate); |
|
|
validateTemplate(dbSession, templateToUpdate); |
|
|
PermissionTemplateDto updatedTemplate = updateTemplate(dbSession, templateToUpdate); |
|
|
PermissionTemplateDto updatedTemplate = updateTemplate(dbSession, templateToUpdate); |
|
|
|
|
|
|
|
|
WsUpdatePermissionTemplateResponse response = buildResponse(updatedTemplate); |
|
|
|
|
|
writeProtobuf(response, wsRequest, wsResponse); |
|
|
|
|
|
|
|
|
return buildResponse(updatedTemplate); |
|
|
} finally { |
|
|
} finally { |
|
|
dbClient.closeSession(dbSession); |
|
|
dbClient.closeSession(dbSession); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static UpdateTemplateWsRequest toUpdateTemplateWsRequest(Request request) { |
|
|
|
|
|
return new UpdateTemplateWsRequest() |
|
|
|
|
|
.setId(request.mandatoryParam(PARAM_ID)) |
|
|
|
|
|
.setName(request.param(PARAM_NAME)) |
|
|
|
|
|
.setDescription(request.param(PARAM_DESCRIPTION)) |
|
|
|
|
|
.setProjectKeyPattern(request.param(PARAM_PROJECT_KEY_PATTERN)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
private void validateTemplate(DbSession dbSession, PermissionTemplateDto templateToUpdate) { |
|
|
private void validateTemplate(DbSession dbSession, PermissionTemplateDto templateToUpdate) { |
|
|
validateTemplateNameForUpdate(dbSession, templateToUpdate.getName(), templateToUpdate.getId()); |
|
|
validateTemplateNameForUpdate(dbSession, templateToUpdate.getName(), templateToUpdate.getId()); |
|
|
validateProjectPattern(templateToUpdate.getKeyPattern()); |
|
|
validateProjectPattern(templateToUpdate.getKeyPattern()); |
|
|
|
|
|
|
|
|
return dbClient.permissionTemplateDao().update(dbSession, templateToUpdate); |
|
|
return dbClient.permissionTemplateDao().update(dbSession, templateToUpdate); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private static WsUpdatePermissionTemplateResponse buildResponse(PermissionTemplateDto permissionTemplate) { |
|
|
|
|
|
|
|
|
private static UpdateTemplateWsResponse buildResponse(PermissionTemplateDto permissionTemplate) { |
|
|
PermissionTemplate permissionTemplateBuilder = toPermissionTemplateResponse(permissionTemplate); |
|
|
PermissionTemplate permissionTemplateBuilder = toPermissionTemplateResponse(permissionTemplate); |
|
|
return WsUpdatePermissionTemplateResponse.newBuilder().setPermissionTemplate(permissionTemplateBuilder).build(); |
|
|
|
|
|
|
|
|
return UpdateTemplateWsResponse.newBuilder().setPermissionTemplate(permissionTemplateBuilder).build(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void validateTemplateNameForUpdate(DbSession dbSession, String name, long id) { |
|
|
private void validateTemplateNameForUpdate(DbSession dbSession, String name, long id) { |