diff options
author | Hector Oswaldo Caballero <hector.caballero@ericsson.com> | 2018-01-16 11:06:54 -0500 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2018-09-07 08:32:33 +0900 |
commit | 4fb14914ed26073f27adc5586d4e759146f61cd2 (patch) | |
tree | 4e548ddf9956ae009e17ecf1a2b9cd15a5aee249 | |
parent | 45fe4d8d95960f2aa8cfbd911ae9bf6a1b5a6906 (diff) |
[project.config] Allow to add commentLink entries
Change-Id: I2fd01cb6775a905d7e602d5415102b274bd98fd3
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java | 23 | ||||
-rw-r--r-- | gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java | 14 |
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); |