diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/ProjectConfigEntry.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/ProjectConfigEntry.java index 5943801dea..3deab1103c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/ProjectConfigEntry.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/ProjectConfigEntry.java @@ -17,6 +17,7 @@ package com.google.gerrit.server.config; import com.google.common.base.Function; import com.google.common.collect.Lists; import com.google.gerrit.extensions.annotations.ExtensionPoint; +import com.google.gerrit.extensions.api.projects.ProjectInput.ConfigValue; import com.google.gerrit.extensions.events.GitReferenceUpdatedListener; import com.google.gerrit.extensions.registration.DynamicMap; import com.google.gerrit.extensions.registration.DynamicMap.Entry; @@ -201,6 +202,18 @@ public class ProjectConfigEntry { return null; } + /** + * Called before the project config is updated. To modify the value before the + * project config is updated, override this method and return the modified + * value. Default implementation returns the same value. + * + * @param configValue the original configValue that was entered. + * @return the modified configValue. + */ + public ConfigValue preUpdate(ConfigValue configValue) { + return configValue; + } + /** * Called after a project config is updated. * diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java index 27e7b1b75f..5185d3ae46 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutConfig.java @@ -240,6 +240,8 @@ public class PutConfig implements RestModifyView { if (!value.equals(oldValue)) { validateProjectConfigEntryIsEditable(projectConfigEntry, projectState, e.getKey(), pluginName); + v.setValue(projectConfigEntry.preUpdate(v.getValue())); + value = v.getValue().value; try { switch (projectConfigEntry.getType()) { case BOOLEAN: