summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2019-11-01 15:23:12 +0900
committerDavid Pursehouse <dpursehouse@collab.net>2019-11-01 16:59:33 +0900
commit9dcd20809738c7466c391ce673452cb421d9ee04 (patch)
tree5ba64bd86121f6a430b4b298ed551f1c070a5b3d
parentf47108a86b7828917b0917e8e0a853544bdf4dbf (diff)
SetParent: Access MetaDataUpdate.Factory via Provider
If the update factory is not accessed via a provider, the same instance gets reused, and this results in the commit message for the update always having the same timestamp which is the time of the server startup. Change-Id: I872eadf240209dad2d70761f03d3b3a494e0f330
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java
index 37cfcdd33b..56fc1aea18 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java
@@ -35,6 +35,7 @@ import com.google.gerrit.server.permissions.PermissionBackend;
import com.google.gerrit.server.permissions.PermissionBackendException;
import com.google.gerrit.server.project.SetParent.Input;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -49,14 +50,14 @@ public class SetParent implements RestModifyView<ProjectResource, Input> {
private final ProjectCache cache;
private final PermissionBackend permissionBackend;
- private final MetaDataUpdate.Server updateFactory;
+ private final Provider<MetaDataUpdate.Server> updateFactory;
private final AllProjectsName allProjects;
@Inject
SetParent(
ProjectCache cache,
PermissionBackend permissionBackend,
- MetaDataUpdate.Server updateFactory,
+ Provider<MetaDataUpdate.Server> updateFactory,
AllProjectsName allProjects) {
this.cache = cache;
this.permissionBackend = permissionBackend;
@@ -78,7 +79,7 @@ public class SetParent implements RestModifyView<ProjectResource, Input> {
String parentName =
MoreObjects.firstNonNull(Strings.emptyToNull(input.parent), allProjects.get());
validateParentUpdate(rsrc.getProjectState().getNameKey(), user, parentName, checkIfAdmin);
- try (MetaDataUpdate md = updateFactory.create(rsrc.getNameKey())) {
+ try (MetaDataUpdate md = updateFactory.get().create(rsrc.getNameKey())) {
ProjectConfig config = ProjectConfig.read(md);
Project project = config.getProject();
project.setParentName(parentName);