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();