Fix wrong date/time for commits in refs/users/XX/YYYY branches

When the refs/users/XX/YYYY branch of a user 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/XX/YYYY branches is retrieved
from that GerritPersonIdent instance which is only created once when
the SetPreferences singleton is instantiated.

Change-Id: Idbf46185ea9ff58742b84fc7068727c6a1469a2e
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java
index d355dae..569d128 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/SetPreferences.java
@@ -80,7 +80,7 @@
   private final Provider<CurrentUser> self;
   private final AccountCache cache;
   private final Provider<ReviewDb> db;
-  private final MetaDataUpdate.User metaDataUpdateFactory;
+  private final Provider<MetaDataUpdate.User> metaDataUpdateFactory;
   private final AllUsersName allUsersName;
   private final DynamicMap<DownloadScheme> downloadSchemes;
 
@@ -88,7 +88,7 @@
   SetPreferences(Provider<CurrentUser> self,
       AccountCache cache,
       Provider<ReviewDb> db,
-      MetaDataUpdate.User metaDataUpdateFactory,
+      Provider<MetaDataUpdate.User> metaDataUpdateFactory,
       AllUsersName allUsersName,
       DynamicMap<DownloadScheme> downloadSchemes) {
     this.self = self;
@@ -114,7 +114,7 @@
     Account.Id accountId = rsrc.getUser().getAccountId();
     AccountGeneralPreferences p;
     VersionedAccountPreferences versionedPrefs;
-    MetaDataUpdate md = metaDataUpdateFactory.create(allUsersName);
+    MetaDataUpdate md = metaDataUpdateFactory.get().create(allUsersName);
     db.get().accounts().beginTransaction(accountId);
     try {
       Account a = db.get().accounts().get(accountId);