Adjust to PermissionRule changes
Change-Id: I1082fea41298f36e0302aa10c2aca6cf49964514
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 4a2ba0f..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(
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