Support to enable/disable the RTC integration in the UI On the ProjectInfoScreen there is now a dropdown list for the plugin.its-rtc.enabled parameter which offers the values true, false, enforced and INHERIT. Project owners can change this parameter and save it. If the RTC integration is enforced by a parent project the dropdown list is disabled. Change-Id: I596b137bea044e837ce3d2caa9f2c3c7ebed02a2 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/RTCModule.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/RTCModule.java index 2eefa6c..78cb4c6 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/RTCModule.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/rtc/RTCModule.java
@@ -22,14 +22,18 @@ import org.slf4j.LoggerFactory; import com.google.gerrit.common.ChangeListener; +import com.google.gerrit.extensions.annotations.Exports; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.server.config.GerritServerConfig; +import com.google.gerrit.server.config.PluginConfigFactory; +import com.google.gerrit.server.config.ProjectConfigEntry; import com.google.gerrit.server.git.validators.CommitValidationListener; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.googlesource.gerrit.plugins.hooks.its.ItsFacade; +import com.googlesource.gerrit.plugins.hooks.its.ItsHookEnabledConfigEntry; import com.googlesource.gerrit.plugins.hooks.rtc.filters.RTCAddComment; import com.googlesource.gerrit.plugins.hooks.rtc.filters.RTCAddRelatedLinkToChangeId; import com.googlesource.gerrit.plugins.hooks.rtc.filters.RTCAddRelatedLinkToGitWeb; @@ -43,12 +47,14 @@ private final String pluginName; private final Config gerritConfig; + private final PluginConfigFactory pluginCfgFactory; @Inject public RTCModule(@PluginName String pluginName, - @GerritServerConfig final Config config) { + @GerritServerConfig Config config, PluginConfigFactory pluginCfgFactory) { this.pluginName = pluginName; this.gerritConfig = config; + this.pluginCfgFactory = pluginCfgFactory; } @Override @@ -57,6 +63,11 @@ LOG.info("RTC is configured as ITS"); bind(ItsFacade.class).to(RTCItsFacade.class); + bind(ProjectConfigEntry.class) + .annotatedWith(Exports.named("enabled")) + .toInstance(new ItsHookEnabledConfigEntry( + pluginName, pluginCfgFactory)); + DynamicSet.bind(binder(), CommitValidationListener.class).to( ItsValidateComment.class);
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md index ac8b4a9..65d30a3 100644 --- a/src/main/resources/Documentation/config.md +++ b/src/main/resources/Documentation/config.md
@@ -42,6 +42,12 @@ a project can enforce the RTC integration for all child projects by setting `plugin.its-rtc.enabled` to `enforced`. +On the project info screen there is a dropdown list for the +`plugin.its-rtc.enabled` parameter which offers the values `true`, +`false`, `enforced` and `INHERIT`. Project owners can change this +parameter and save it. If the RTC integration is enforced by a parent +project the dropdown list is disabled. + The RTC integration can be limited to specific branches by setting `plugin.its-rtc.branch`. The branches may be configured using explicit branch names, ref patterns, or regular expressions. Multiple branches