in src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java [121:165]
public void validateNewProject(CreateProjectArgs args) throws ValidationException {
String name = args.getProjectName();
log.debug("validating creation of {}", name);
String regex = config.getRegexNameFilter();
if (!(name.matches(regex))) {
throw new ValidationException(
String.format(PROJECT_SHOULD_MATCH_REGEX_MSG, regex, documentationUrl));
}
if (name.contains(" ")) {
throw new ValidationException(
String.format(PROJECT_CANNOT_CONTAINS_SPACES_MSG, documentationUrl));
}
Project.NameKey newParent = args.newParent;
try {
permissionBackend.user(self.get()).check(GlobalPermission.ADMINISTRATE_SERVER);
// Admins can bypass any rules to support creating projects that doesn't
// comply with the new naming rules. New projects structures have to
// comply but we need to be able to add new project to an existing non
// compliant structure.
log.debug("admin is creating project, bypassing all rules");
return;
} catch (AuthException | PermissionBackendException e) {
// continuing
}
if (name.contains(" ")) {
throw new ValidationException(
String.format(PROJECT_CANNOT_CONTAINS_SPACES_MSG, documentationUrl));
}
if (allProjectsName.get().equals(newParent)) {
validateRootProject(name, args.permissionsOnly);
} else {
validateProject(name, newParent);
}
// If we reached that point, it means we allow project creation. Make the
// user an owner if not already by inheritance.
if (!isOwner(newParent) && !configDisableGrantingOwnership(newParent)) {
args.ownerIds.add(createGroup(name + "-admins"));
}
}