Fix PluginConfig.setGroupReference method
When the group reference was a new one, i.e. not already in the groups
file, it was not added to the groups file when saving the project
config.
Change-Id: If40bcc3fae8c1966bda21adc1b6d46d63b88e4ec
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/PluginConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/PluginConfig.java
index 2ac6695..674a5c6 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/config/PluginConfig.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/PluginConfig.java
@@ -159,6 +159,7 @@
}
public void setGroupReference(String name, GroupReference value) {
- setString(name, value.toConfigValue());
+ GroupReference groupRef = projectConfig.resolve(value);
+ setString(name, groupRef.toConfigValue());
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
index fae3651..e3299d9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java
@@ -403,7 +403,13 @@
}
public GroupReference resolve(GroupReference group) {
- return groupList.resolve(group);
+ GroupReference groupRef = groupList.resolve(group);
+ if (groupRef != null
+ && groupRef.getUUID() != null
+ && !groupsByName.containsKey(groupRef.getName())) {
+ groupsByName.put(groupRef.getName(), groupRef);
+ }
+ return groupRef;
}
/** @return the group reference, if the group is used by at least one rule. */
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java
index 904f870..2d927be 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java
@@ -466,6 +466,14 @@
+ "\tkey1 = "
+ staff.toConfigValue()
+ "\n");
+ assertThat(text(rev, "groups"))
+ .isEqualTo(
+ "# UUID\tGroup Name\n" //
+ + "#\n" //
+ + staff.getUUID().get()
+ + " \t"
+ + staff.getName()
+ + "\n");
}
private ProjectConfig read(RevCommit rev) throws IOException, ConfigInvalidException {