summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHector Oswaldo Caballero <hector.caballero@ericsson.com>2018-01-16 11:06:54 -0500
committerDavid Pursehouse <dpursehouse@collab.net>2018-09-07 08:32:33 +0900
commit4fb14914ed26073f27adc5586d4e759146f61cd2 (patch)
tree4e548ddf9956ae009e17ecf1a2b9cd15a5aee249
parent45fe4d8d95960f2aa8cfbd911ae9bf6a1b5a6906 (diff)
[project.config] Allow to add commentLink entries
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java23
-rw-r--r--gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java14
2 files changed, 36 insertions, 1 deletions
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 bae7ed7cea..12a62f9c1b 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
@@ -394,6 +394,10 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
return commentLinkSections;
}
+ public void addCommentLinkSection(CommentLinkInfoImpl commentLink) {
+ commentLinkSections.add(commentLink);
+ }
+
public ConfiguredMimeTypes getMimeTypes() {
return mimeTypes;
}
@@ -916,7 +920,6 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
rc.getString(COMMENTLINK, name, KEY_MATCH), name, e.getMessage())));
}
}
- commentLinkSections = ImmutableList.copyOf(commentLinkSections);
}
private void loadSubscribeSections(Config rc) throws ConfigInvalidException {
@@ -1079,6 +1082,7 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
savePluginSections(rc, keepGroups);
groupList.retainUUIDs(keepGroups);
saveLabelSections(rc);
+ saveCommentLinkSections(rc);
saveSubscribeSections(rc);
saveConfig(PROJECT_CONFIG, rc);
@@ -1349,6 +1353,23 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
}
}
+ private void saveCommentLinkSections(Config rc) {
+ if (commentLinkSections != null) {
+ for (CommentLinkInfoImpl cm : commentLinkSections) {
+ rc.setString(COMMENTLINK, cm.name, KEY_MATCH, cm.match);
+ if (!Strings.isNullOrEmpty(cm.html)) {
+ rc.setString(COMMENTLINK, cm.name, KEY_HTML, cm.html);
+ }
+ if (!Strings.isNullOrEmpty(cm.link)) {
+ rc.setString(COMMENTLINK, cm.name, KEY_LINK, cm.link);
+ }
+ if (cm.enabled != null && !cm.enabled) {
+ rc.setBoolean(COMMENTLINK, cm.name, KEY_ENABLED, cm.enabled);
+ }
+ }
+ }
+ }
+
private static void setBooleanConfigKey(
Config rc, String name, String key, boolean value, boolean defaultValue) {
if (value == defaultValue) {
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 2519a7fb9b..ad9a1ce0e8 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
@@ -29,6 +29,7 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.server.config.PluginConfig;
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
+import com.google.gerrit.server.project.CommentLinkInfoImpl;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
@@ -476,6 +477,19 @@ public class ProjectConfigTest extends LocalDiskRepositoryTestCase {
+ "\n");
}
+ @Test
+ public void addCommentLink() throws Exception {
+ RevCommit rev = util.commit().create();
+ update(rev);
+
+ ProjectConfig cfg = read(rev);
+ CommentLinkInfoImpl cm = new CommentLinkInfoImpl("Test", "abc.*", null, "<a>link</a>", true);
+ cfg.addCommentLinkSection(cm);
+ rev = commit(cfg);
+ assertThat(text(rev, "project.config"))
+ .isEqualTo("[commentlink \"Test\"]\n\tmatch = abc.*\n\thtml = <a>link</a>\n");
+ }
+
private ProjectConfig read(RevCommit rev) throws IOException, ConfigInvalidException {
ProjectConfig cfg = new ProjectConfig(new Project.NameKey("test"));
cfg.load(db, rev);