import org.sonar.db.property.PropertyDto;
import org.sonar.scanner.protocol.input.FileData;
import org.sonar.scanner.protocol.input.ProjectRepositories;
- import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
+import org.sonar.db.permission.OrganizationPermission;
import org.sonar.server.user.UserSession;
import static com.google.common.collect.Lists.newArrayList;
ProjectRepositories data = new ProjectRepositories();
ComponentDto module = checkFoundWithOptional(dbClient.componentDao().selectByKey(session, query.getModuleKey()),
"Project or module with key '%s' is not found", query.getModuleKey());
- if (!isProjectOrModule(module)) {
- throw new BadRequestException(format("Key '%s' belongs to a component which is not a Project", query.getModuleKey()));
- }
+ checkRequest(isProjectOrModule(module), "Key '%s' belongs to a component which is not a Project", query.getModuleKey());
boolean hasScanPerm = userSession.hasComponentPermission(SCAN_EXECUTION, module) ||
- userSession.hasOrganizationPermission(module.getOrganizationUuid(), SCAN_EXECUTION);
+ userSession.hasPermission(OrganizationPermission.SCAN, module.getOrganizationUuid());
boolean hasBrowsePerm = userSession.hasComponentPermission(USER, module);
checkPermission(query.isIssuesMode(), hasScanPerm, hasBrowsePerm);
}
}
- private void handlePermissionTemplate(DbSession dbSession, ComponentDto componentDto, String organizationUuid, @Nullable Long userId) {
+ private void handlePermissionTemplate(DbSession dbSession, ComponentDto componentDto, String organizationUuid, @Nullable Integer userId) {
permissionTemplateService.applyDefault(dbSession, organizationUuid, componentDto, userId);
if (componentDto.qualifier().equals(PROJECT)
- && permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(dbSession, organizationUuid, componentDto)) {
+ && permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(dbSession, organizationUuid, componentDto)) {
favoriteUpdater.add(dbSession, componentDto, userId);
}
}
return newQualityGate;
}
- private void validateQualityGate(@Nullable Long qGateId, @Nullable String name) {
+ private void validateQualityGate(DbSession dbSession, @Nullable Long qGateId, @Nullable String name) {
- Errors errors = new Errors();
+ List<String> errors = new ArrayList<>();
if (isNullOrEmpty(name)) {
- errors.add(Message.of(Validation.CANT_BE_EMPTY_MESSAGE, "Name"));
+ errors.add(format(Validation.CANT_BE_EMPTY_MESSAGE, "Name"));
} else {
- checkQualityGateDoesNotAlreadyExist(qGateId, name, errors);
+ checkQualityGateDoesNotAlreadyExist(dbSession, qGateId, name, errors);
}
- if (!errors.isEmpty()) {
- throw BadRequestException.create(errors);
- }
+ checkRequest(errors.isEmpty(), errors);
}
- private void checkQualityGateDoesNotAlreadyExist(DbSession dbSession, @Nullable Long qGateId, String name, Errors errors) {
- private void checkQualityGateDoesNotAlreadyExist(@Nullable Long qGateId, String name, List<String> errors) {
- QualityGateDto existingQgate = dbClient.qualityGateDao().selectByName(name);
++ private void checkQualityGateDoesNotAlreadyExist(DbSession dbSession, @Nullable Long qGateId, String name, List<String> errors) {
+ QualityGateDto existingQgate = dbClient.qualityGateDao().selectByName(dbSession, name);
boolean isModifyingCurrentQgate = qGateId != null && existingQgate != null && existingQgate.getId().equals(qGateId);
- errors.check(isModifyingCurrentQgate || existingQgate == null, Validation.IS_ALREADY_USED_MESSAGE, "Name");
+ if (!isModifyingCurrentQgate && existingQgate != null) {
+ errors.add(format(Validation.IS_ALREADY_USED_MESSAGE, "Name"));
+ }
}
}
return condition;
}
- private void validateQualityGate(@Nullable Long updatingQgateId, @Nullable String name) {
+ private void validateQualityGate(DbSession dbSession, @Nullable Long updatingQgateId, @Nullable String name) {
- Errors errors = new Errors();
+ List<String> errors = new ArrayList<>();
if (Strings.isNullOrEmpty(name)) {
- errors.add(Message.of(Validation.CANT_BE_EMPTY_MESSAGE, "Name"));
+ errors.add(format(Validation.CANT_BE_EMPTY_MESSAGE, "Name"));
} else {
- checkQgateNotAlreadyExists(updatingQgateId, name, errors);
+ checkQgateNotAlreadyExists(dbSession, updatingQgateId, name, errors);
}
- if (!errors.isEmpty()) {
- throw BadRequestException.create(errors);
- }
+ checkRequest(errors.isEmpty(), errors);
}
- private void checkQgateNotAlreadyExists(DbSession dbSession, @Nullable Long updatingQgateId, String name, Errors errors) {
- private void checkQgateNotAlreadyExists(@Nullable Long updatingQgateId, String name, List<String> errors) {
- QualityGateDto existingQgate = dao.selectByName(name);
++ private void checkQgateNotAlreadyExists(DbSession dbSession, @Nullable Long updatingQgateId, String name, List<String> errors) {
+ QualityGateDto existingQgate = dao.selectByName(dbSession, name);
boolean isModifyingCurrentQgate = updatingQgateId != null && existingQgate != null && existingQgate.getId().equals(updatingQgateId);
- errors.check(isModifyingCurrentQgate || existingQgate == null, Validation.IS_ALREADY_USED_MESSAGE, "Name");
+ if (!isModifyingCurrentQgate && existingQgate != null) {
+ errors.add(format(Validation.IS_ALREADY_USED_MESSAGE, "Name"));
+ }
}
private void checkIsSystemAdministrator() {
*/
private void ensureLastAdminIsNotRemoved(DbSession dbSession, GroupId group, UserDto user) {
int remainingAdmins = dbClient.authorizationDao().countUsersWithGlobalPermissionExcludingGroupMember(dbSession,
- group.getOrganizationUuid(), SYSTEM_ADMIN, group.getId(), user.getId());
+ group.getOrganizationUuid(), OrganizationPermission.ADMINISTER.getKey(), group.getId(), user.getId());
- if (remainingAdmins == 0) {
- throw new BadRequestException("The last administrator user cannot be removed");
- }
+ checkRequest(remainingAdmins > 0, "The last administrator user cannot be removed");
}
private UserDto getUser(DbSession dbSession, String userLogin) {
@Test
public void fail_when_project_already_exists() throws Exception {
OrganizationDto organization = db.organizations().insert();
- when(componentUpdater.create(any(DbSession.class), any(NewComponent.class), anyInt())).thenThrow(new BadRequestException("already exists"));
- when(componentUpdater.create(any(DbSession.class), any(NewComponent.class), anyLong())).thenThrow(BadRequestException.create("already exists"));
- userSession.addOrganizationPermission(organization, PROVISIONING);
++ when(componentUpdater.create(any(DbSession.class), any(NewComponent.class), anyInt())).thenThrow(BadRequestException.create("already exists"));
+ userSession.addPermission(PROVISION_PROJECTS, organization);
expectedException.expect(BadRequestException.class);