Merge branch 'stable-3.2' * stable-3.2: Adapt to GroupReference interface on latest stable-3.2 Change-Id: I33b4c545352a7cf4c503a1dc1228aa007fdf8418
diff --git a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRights.java b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRights.java index b491d16..93ad596 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRights.java +++ b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRights.java
@@ -118,27 +118,30 @@ private void setAccessRights(ProjectConfig config, ProjectState project) { for (String refName : defaultAccessRightsConfig.getSubsections(ProjectConfig.ACCESS)) { if (AccessSection.isValidRefSectionName(refName) && isValidRegex(refName)) { - AccessSection as = config.getAccessSection(refName, true); - getPermissions(refName, as); - setPermissions(refName, as, getOwnerGroupName(project)); + config.upsertAccessSection( + refName, + as -> { + getPermissions(refName, as); + setPermissions(refName, as, getOwnerGroupName(project)); + }); } } } - private void getPermissions(String refName, AccessSection as) { + private void getPermissions(String refName, AccessSection.Builder as) { for (String varName : defaultAccessRightsConfig.getStringList( ProjectConfig.ACCESS, refName, "exclusiveGroupPermissions")) { Arrays.stream(varName.split("[, \t]{1,}")) .filter(Permission::isPermission) - .forEach(n -> as.getPermission(n, true).setExclusiveGroup(true)); + .forEach(n -> as.upsertPermission(n).setExclusiveGroup(true)); } } - private void setPermissions(String refName, AccessSection as, String ownerGroupName) { + private void setPermissions(String refName, AccessSection.Builder as, String ownerGroupName) { for (String value : defaultAccessRightsConfig.getNames(ProjectConfig.ACCESS, refName)) { if (Permission.isPermission(value)) { - Permission perm = as.getPermission(value, true); + Permission.Builder perm = as.upsertPermission(value); setPermissionRules(ownerGroupName, perm, refName, value); } else { log.error("Invalid permission {}", value); @@ -168,15 +171,16 @@ } private void setPermissionRules( - String ownerGroupName, Permission perm, String refName, String value) { + String ownerGroupName, Permission.Builder perm, String refName, String value) { for (String ruleString : defaultAccessRightsConfig.getStringList(ProjectConfig.ACCESS, refName, value)) { - PermissionRule rule; + PermissionRule.Builder rule; try { rule = PermissionRule.fromString( - ruleString.replaceAll(Pattern.quote(OWNER_TOKEN), ownerGroupName), - Permission.hasRange(value)); + ruleString.replaceAll(Pattern.quote(OWNER_TOKEN), ownerGroupName), + Permission.hasRange(value)) + .toBuilder(); } catch (IllegalArgumentException notRule) { log.error( @@ -199,7 +203,7 @@ log.error("Group {} not found", rule.getGroup().getName()); continue; } - rule.setGroup(new GroupReference(group.get().getGroupUUID(), rule.getGroup().getName())); + rule.setGroup(GroupReference.create(group.get().getGroupUUID(), rule.getGroup().getName())); } perm.add(rule); }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRightsIT.java b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRightsIT.java index 2f93c5b..c3f3338 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRightsIT.java +++ b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/DefaultAccessRightsIT.java
@@ -28,6 +28,7 @@ import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.api.projects.ProjectInput; import com.google.gerrit.extensions.restapi.Url; +import com.google.gerrit.server.project.CachedProjectConfig; import com.google.gerrit.server.project.ProjectConfig; import com.google.gerrit.server.project.ProjectState; import com.google.inject.Inject; @@ -88,11 +89,11 @@ Optional<ProjectState> projectState = projectCache.get(Project.nameKey(projectName)); AccountGroup.UUID ownerUUID = projectState.get().getOwners().iterator().next(); - ProjectConfig projectConfig = projectState.get().getConfig(); + CachedProjectConfig projectConfig = projectState.get().getConfig(); assertThat(projectConfig.getAccessSections().size()).isEqualTo(2); - AccessSection refsSection = projectConfig.getAccessSection("refs/*"); + AccessSection refsSection = projectConfig.getAccessSection("refs/*").get(); assertThat(refsSection.getPermissions().size()).isEqualTo(3); assertThat(refsSection.getPermission(Permission.OWNER).getRules().get(0).getGroup().getUUID()) .isEqualTo(ownerUUID); @@ -102,7 +103,7 @@ assertThat(refsSection.getPermission(Permission.PUSH).getRules().get(0).getGroup().getName()) .isEqualTo("Administrators"); - AccessSection refsHeadsSection = projectConfig.getAccessSection("refs/heads/*"); + AccessSection refsHeadsSection = projectConfig.getAccessSection("refs/heads/*").get(); assertThat(refsHeadsSection.getPermissions().size()).isEqualTo(4); assertThat( refsHeadsSection
diff --git a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java index f85ab27..2ddf589 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java +++ b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorIT.java
@@ -233,7 +233,7 @@ cfg.getPluginConfig(PLUGIN_NAME) .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfgUpdate.save(); } userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertCreated(); @@ -256,7 +256,7 @@ cfg.getPluginConfig(PLUGIN_NAME) .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfgUpdate.save(); } @@ -307,7 +307,7 @@ cfg.getPluginConfig(PLUGIN_NAME) .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfg.getPluginConfig(PLUGIN_NAME) .setBoolean(ProjectCreationValidator.DISABLE_GRANTING_PROJECT_OWNERSHIP, true); cfgUpdate.save(); @@ -387,7 +387,7 @@ cfg.getPluginConfig(PLUGIN_NAME) .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfgUpdate.save(); } userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertCreated(); @@ -422,7 +422,7 @@ cfg.getPluginConfig(PLUGIN_NAME) .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfgUpdate.save(); } userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertConflict(); @@ -455,7 +455,7 @@ cfg.getPluginConfig(PLUGIN_NAME) .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfgUpdate.save(); } userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertConflict(); @@ -493,11 +493,11 @@ cfg.getPluginConfig("project-group-structure") .setGroupReference( ProjectCreationValidator.DELEGATE_PROJECT_CREATION_TO, - new GroupReference(AccountGroup.UUID.parse(gId), delegatingGroup)); + GroupReference.create(AccountGroup.UUID.parse(gId), delegatingGroup)); cfgUpdate.save(); String newDelegatingGroup = name("groupC"); - gApi.groups().id(delegatingGroup).name(newDelegatingGroup); + cfg.renameGroup(cfg.getGroup(delegatingGroup).getUUID(), newDelegatingGroup); } userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in).assertCreated();