Add init step to copy configuration from the 'hooks-rtc' plugin
The 'its-rtc' plugin replaces the 'hooks-rtc' plugin. The
configuration for both plugins only differs in the section names. If
the 'hooks-rtc' plugin was previously installed its configuration can
simply be copied for the 'its-rtc' plugin.
Change-Id: Icf8b47c2d94344e742e7e1b5b7f491256ee03c3c
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/InitRTC.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/InitRTC.java
index 6f0cd2f..24dc5ba 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/InitRTC.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/InitRTC.java
@@ -16,6 +16,7 @@
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.pgm.init.AllProjectsConfig;
import com.google.gerrit.pgm.init.AllProjectsNameOnInitProvider;
+import com.google.gerrit.pgm.init.InitFlags;
import com.google.gerrit.pgm.init.Section;
import com.google.gerrit.pgm.util.ConsoleUI;
import com.google.inject.Inject;
@@ -28,12 +29,14 @@
import org.eclipse.jgit.errors.ConfigInvalidException;
import java.io.IOException;
+import java.util.Arrays;
/** Initialize the GitRepositoryManager configuration section. */
@Singleton
class InitRTC extends InitIts {
private static final String COMMENT_LINK_SECTION = "commentLink";
private final String pluginName;
+ private final InitFlags flags;
private Section rtc;
private Section rtcComment;
private Section.Factory sections;
@@ -44,24 +47,52 @@
@Inject
InitRTC(@PluginName String pluginName, ConsoleUI ui,
Section.Factory sections, AllProjectsConfig allProjectsConfig,
- AllProjectsNameOnInitProvider allProjects) {
+ AllProjectsNameOnInitProvider allProjects, InitFlags flags) {
super(pluginName, "IBM Rational Team Concert", ui,
allProjectsConfig, allProjects);
this.pluginName = pluginName;
this.sections = sections;
+ this.flags = flags;
}
@Override
public void run() throws IOException, ConfigInvalidException {
super.run();
+ ui.message("\n");
+ ui.header("IBM Rational Team Concert connectivity");
+
+ if (!pluginName.equalsIgnoreCase("rtc")
+ && !flags.cfg.getSections().contains(pluginName)
+ && flags.cfg.getSections().contains("rtc")) {
+ ui.message("A RTC configuration for the 'hooks-rtc' plugin was found.\n");
+ if (ui.yesno(true, "Copy it for the '%s' plugin?", pluginName)) {
+ for (String n : flags.cfg.getNames("rtc")) {
+ flags.cfg.setStringList(pluginName, null, n,
+ Arrays.asList(flags.cfg.getStringList("rtc", null, n)));
+ }
+ for (String n : flags.cfg.getNames(COMMENT_LINK_SECTION, "rtc")) {
+ flags.cfg.setStringList(COMMENT_LINK_SECTION, pluginName, n,
+ Arrays.asList(flags.cfg.getStringList(COMMENT_LINK_SECTION, "rtc", n)));
+ }
+
+ if (ui.yesno(false, "Remove configuration for 'hooks-rtc' plugin?")) {
+ flags.cfg.unsetSection("rtc", null);
+ flags.cfg.unsetSection(COMMENT_LINK_SECTION, "rtc");
+ }
+ } else {
+ init();
+ }
+ } else {
+ init();
+ }
+ }
+
+ private void init() {
this.rtc = sections.get(pluginName, null);
this.rtcComment =
sections.get(COMMENT_LINK_SECTION, pluginName);
- ui.message("\n");
- ui.header("IBM Rational Team Concert connectivity");
-
boolean sslVerify = true;
do {
rtcUrl = enterRTCConnectivity();