Fix wrong date/time for commits in refs/users/default branch

When the refs/users/default branch is modified using the
SetPreferences REST endpoint (e.g. when changing the 'My' menu
preferences) the commit date/time is wrong. Instead of the actual
date/time the date/time of the last Gerrit server start is used. This
is because MetaDataUpdate.User which gets the GerritPersonIdent
injected is kept as member in the SetPreferences singleton and the
date/time for commits in the refs/users/default branches is retrieved
from that GerritPersonIdent instance which is only created once when
the SetPreferences singleton is instantiated.

The same bug was already fixed for the refs/users/XX/YYYY branches by
change Idbf4618.

Change-Id: Ia7ca0a373042e906a0c179b76be86ce3abf0806c
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java
index d97499c..519a4a4 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/SetPreferences.java
@@ -23,6 +23,7 @@
 import com.google.gerrit.server.account.VersionedAccountPreferences;
 import com.google.gerrit.server.git.MetaDataUpdate;
 import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.Singleton;
 
 import org.eclipse.jgit.errors.ConfigInvalidException;
@@ -32,11 +33,11 @@
 @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
 @Singleton
 public class SetPreferences implements RestModifyView<ConfigResource, Input> {
-  private final MetaDataUpdate.User metaDataUpdateFactory;
+  private final Provider<MetaDataUpdate.User> metaDataUpdateFactory;
   private final AllUsersName allUsersName;
 
   @Inject
-  SetPreferences(MetaDataUpdate.User metaDataUpdateFactory,
+  SetPreferences(Provider<MetaDataUpdate.User> metaDataUpdateFactory,
       AllUsersName allUsersName) {
     this.metaDataUpdateFactory = metaDataUpdateFactory;
     this.allUsersName = allUsersName;
@@ -58,7 +59,7 @@
     }
 
     VersionedAccountPreferences p;
-    MetaDataUpdate md = metaDataUpdateFactory.create(allUsersName);
+    MetaDataUpdate md = metaDataUpdateFactory.get().create(allUsersName);
     try {
       p = VersionedAccountPreferences.forDefault();
       p.load(md);