Refactor validateNewProject to reduce complexity
Change-Id: I94ce138db8337a1b50993687b09d38ad8a7e1885
diff --git a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
index db9e75d..57abb49 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
@@ -101,35 +101,13 @@
return;
}
- Project parent = parentCtrl.getProject();
-
- if (allProjectsName.get().equals(parent.getNameKey())) {
- if (name.contains("/")) {
- log.debug("rejecting creation of {}: name contains slashes", name);
- throw new ValidationException(String.format(
- ROOT_PROJECT_CANNOT_CONTAINS_SLASHES_MSG, documentationUrl));
- }
- if (!args.permissionsOnly) {
- log.debug("rejecting creation of {}: missing permissions only option",
- name);
- throw new ValidationException(String
- .format(REGULAR_PROJECT_NOT_ALLOWED_AS_ROOT_MSG, documentationUrl));
- }
+ if (allProjectsName.get().equals(parentCtrl.getProject().getNameKey())) {
+ validateRootProject(name, args.permissionsOnly);
args.ownerIds.add(createGroup(name + "-admins"));
- log.debug("allowing creation of root project {}", name);
return;
}
- validateProjectNamePrefix(name, parent);
-
- if (!parentCtrl.isOwner()) {
- log.debug("rejecting creation of {}: user is not owner of {}", name,
- parent.getName());
- throw new ValidationException(
- String.format(MUST_BE_OWNER_TO_CREATE_PROJECT_MSG, parent.getName(),
- documentationUrl));
- }
- log.debug("allowing creation of project {}", name);
+ validateProject(name, parentCtrl);
}
private AccountGroup.UUID createGroup(String name)
@@ -157,9 +135,27 @@
}
}
- private void validateProjectNamePrefix(String name, Project parent)
+ private void validateRootProject(String name, boolean permissionOnly)
+ throws ValidationException {
+ log.debug("validating root project name {}", name);
+ if (name.contains("/")) {
+ log.debug("rejecting creation of {}: name contains slashes", name);
+ throw new ValidationException(String
+ .format(ROOT_PROJECT_CANNOT_CONTAINS_SLASHES_MSG, documentationUrl));
+ }
+ if (!permissionOnly) {
+ log.debug("rejecting creation of {}: missing permissions only option",
+ name);
+ throw new ValidationException(String
+ .format(REGULAR_PROJECT_NOT_ALLOWED_AS_ROOT_MSG, documentationUrl));
+ }
+ log.debug("allowing creation of root project {}", name);
+ }
+
+ private void validateProject(String name, ProjectControl parentCtrl)
throws ValidationException {
log.debug("validating name prefix of {}", name);
+ Project parent = parentCtrl.getProject();
String prefix = parent.getName() + "/";
if (!name.startsWith(prefix)) {
log.debug("rejecting creation of {}: name is not starting with {}", name,
@@ -168,5 +164,13 @@
String.format(PROJECT_MUST_START_WITH_PARENT_NAME_MSG, prefix + name,
documentationUrl));
}
+ if (!parentCtrl.isOwner()) {
+ log.debug("rejecting creation of {}: user is not owner of {}", name,
+ parent.getName());
+ throw new ValidationException(
+ String.format(MUST_BE_OWNER_TO_CREATE_PROJECT_MSG, parent.getName(),
+ documentationUrl));
+ }
+ log.debug("allowing creation of project {}", name);
}
}