Adapt to the new Time API

To avoid JdkObsolete issues with Date Gerrit core started replacing
usage of Timestamp class with Instant(see Ib6f4a1531). Adapt
high-availability code to the new Time API to avoid compilation issues.

This commit is based on multi-site fix (see I696480ee4).

Change-Id: Ib4b57002df2d3a28689654bb1673ee7d724aa7c8
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java
index 70ef751..4a3f473 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/AccountReindexRunnable.java
@@ -54,7 +54,7 @@
   protected Optional<Timestamp> indexIfNeeded(AccountState as, Timestamp sinceTs) {
     try {
       Account a = as.account();
-      Timestamp accountTs = a.registeredOn();
+      Timestamp accountTs = Timestamp.from(a.registeredOn());
       if (accountTs.after(sinceTs)) {
         log.atInfo().log("Index %s/%s/%s/%s", a.id(), a.fullName(), a.preferredEmail(), accountTs);
         accountIdx.index(a.id(), Operation.INDEX, Optional.empty());
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java
index fcd345d..c0b60c3 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnable.java
@@ -101,7 +101,7 @@
   @Override
   protected Optional<Timestamp> indexIfNeeded(Change c, Timestamp sinceTs) {
     try {
-      Timestamp changeTs = c.getLastUpdatedOn();
+      Timestamp changeTs = Timestamp.from(c.getLastUpdatedOn());
       if (changeTs.after(sinceTs)) {
         log.atInfo().log(
             "Index %s/%s/%s was updated after %s", c.getProject(), c.getId(), changeTs, sinceTs);
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java
index 4ded55e..05efe07 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnable.java
@@ -30,6 +30,7 @@
 import com.google.inject.Inject;
 import java.io.IOException;
 import java.sql.Timestamp;
+import java.time.Instant;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
@@ -73,7 +74,7 @@
       Optional<InternalGroup> internalGroup = groups.getGroup(g.getUUID());
       if (internalGroup.isPresent()) {
         InternalGroup group = internalGroup.get();
-        Timestamp groupCreationTs = group.getCreatedOn();
+        Timestamp groupCreationTs = Timestamp.from(group.getCreatedOn());
 
         Repository allUsersRepo = repoManager.openRepository(allUsers);
 
@@ -81,23 +82,24 @@
             groups.getSubgroupsAudit(allUsersRepo, g.getUUID());
         Stream<Timestamp> groupIdAudAddedTs =
             subGroupMembersAud.stream()
-                .map(AccountGroupByIdAudit::addedOn)
+                .map(accountGroupByIdAudit -> Timestamp.from(accountGroupByIdAudit.addedOn()))
                 .filter(Objects::nonNull);
         Stream<Timestamp> groupIdAudRemovedTs =
             subGroupMembersAud.stream()
                 .map(AccountGroupByIdAudit::removedOn)
-                .filter(Optional<Timestamp>::isPresent)
-                .map(Optional<Timestamp>::get);
-
+                .filter(Optional<Instant>::isPresent)
+                .map(inst -> Timestamp.from(inst.get()));
         List<AccountGroupMemberAudit> groupMembersAud =
             groups.getMembersAudit(allUsersRepo, g.getUUID());
         Stream<Timestamp> groupMemberAudAddedTs =
-            groupMembersAud.stream().map(AccountGroupMemberAudit::addedOn).filter(Objects::nonNull);
+            groupMembersAud.stream()
+                .map(accountGroupByIdAudit -> Timestamp.from(accountGroupByIdAudit.addedOn()))
+                .filter(Objects::nonNull);
         Stream<Timestamp> groupMemberAudRemovedTs =
             groupMembersAud.stream()
                 .map(AccountGroupMemberAudit::removedOn)
-                .filter(Optional<Timestamp>::isPresent)
-                .map(Optional<Timestamp>::get);
+                .filter(Optional<Instant>::isPresent)
+                .map(inst -> Timestamp.from(inst.get()));
 
         Optional<Timestamp> groupLastTs =
             Streams.concat(
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java
index 62d9c10..edc11b1 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/IndexTs.java
@@ -32,6 +32,7 @@
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Optional;
@@ -138,7 +139,8 @@
                 IndexName.CHANGE,
                 !changeNotes.isPresent()
                     ? LocalDateTime.now()
-                    : changeNotes.get().getChange().getLastUpdatedOn().toLocalDateTime());
+                    : Timestamp.from(changeNotes.get().getChange().getLastUpdatedOn())
+                        .toLocalDateTime());
           } catch (Exception e) {
             log.atWarning().withCause(e).log("Unable to update the latest TS for change %d", id);
           }
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
index 1a2ebf7..67f5c0b 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
@@ -177,7 +177,7 @@
 
   private long getTsFromChangeAndDraftComments(ChangeNotes notes) {
     Change change = notes.getChange();
-    Timestamp changeTs = change.getLastUpdatedOn();
+    Timestamp changeTs = Timestamp.from(change.getLastUpdatedOn());
     for (HumanComment comment : commentsUtil.draftByChange(changeNotes.get())) {
       Timestamp commentTs = comment.writtenOn;
       changeTs = commentTs.after(changeTs) ? commentTs : changeTs;
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java
index 65001de..28dc451 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/ChangeReindexRunnableTest.java
@@ -151,6 +151,6 @@
         Change.id(123),
         Account.id(1000000),
         BranchNameKey.create("projectname", "main"),
-        changeTs);
+        changeTs.toInstant());
   }
 }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java
index afd6df4..0513d42 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/autoreindex/GroupReindexRunnableTest.java
@@ -110,7 +110,7 @@
             Collections.singletonList(
                 AccountGroupMemberAudit.builder()
                     .addedBy(Account.Id.tryParse("1").get())
-                    .addedOn(afterCurrentTime)
+                    .addedOn(afterCurrentTime.toInstant())
                     .memberId(Account.Id.tryParse("1").get())
                     .groupId(AccountGroup.Id.parse("1"))
                     .build()));
@@ -130,10 +130,10 @@
     AccountGroupMemberAudit accountGroupMemberAudit =
         AccountGroupMemberAudit.builder()
             .addedBy(Account.Id.tryParse("1").get())
-            .addedOn(beforeCurrentTime)
+            .addedOn(beforeCurrentTime.toInstant())
             .memberId(Account.Id.tryParse("1").get())
             .groupId(AccountGroup.Id.parse("2"))
-            .removed(Account.Id.tryParse("2").get(), afterCurrentTime)
+            .removed(Account.Id.tryParse("2").get(), afterCurrentTime.toInstant())
             .build();
     when(groups.getGroup(uuid)).thenReturn(getInternalGroup(currentTime));
     when(groups.getMembersAudit(any(), any()))
@@ -158,7 +158,7 @@
                     .groupId(AccountGroup.Id.parse("1"))
                     .includeUuid(UUID.parse("123"))
                     .addedBy(Account.Id.tryParse("1").get())
-                    .addedOn(afterCurrentTime)
+                    .addedOn(afterCurrentTime.toInstant())
                     .build()));
     Optional<Timestamp> groupLastTs =
         groupReindexRunnable.indexIfNeeded(groupReference, currentTime);
@@ -178,8 +178,8 @@
             .groupId(AccountGroup.Id.parse("1"))
             .includeUuid(UUID.parse("123"))
             .addedBy(Account.Id.tryParse("1").get())
-            .addedOn(beforeCurrentTime)
-            .removed(Account.Id.tryParse("2").get(), afterCurrentTime)
+            .addedOn(beforeCurrentTime.toInstant())
+            .removed(Account.Id.tryParse("2").get(), afterCurrentTime.toInstant())
             .build();
 
     when(groups.getGroup(uuid)).thenReturn(getInternalGroup(beforeCurrentTime));
@@ -201,7 +201,7 @@
             .setOwnerGroupUUID(uuid)
             .setVisibleToAll(true)
             .setGroupUUID(UUID.parse("12"))
-            .setCreatedOn(timestamp)
+            .setCreatedOn(timestamp.toInstant())
             .setMembers(ImmutableSet.<Id>builder().build())
             .setSubgroups(ImmutableSet.<UUID>builder().build())
             .build());
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
index 7c1e6df..ba0c8c5 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/ForwardedIndexChangeHandlerTest.java
@@ -30,8 +30,8 @@
 import com.google.gerrit.server.index.change.ChangeIndexer;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.util.OneOffRequestContext;
-import com.google.gerrit.server.util.time.TimeUtil;
 import java.io.IOException;
+import java.time.Instant;
 import java.util.Optional;
 import java.util.concurrent.ScheduledExecutorService;
 import org.junit.Before;
@@ -67,7 +67,7 @@
   @Before
   public void setUp() throws Exception {
     id = Change.id(TEST_CHANGE_NUMBER);
-    Change change = new Change(null, id, null, null, TimeUtil.nowTs());
+    Change change = new Change(null, id, null, null, Instant.now());
     when(changeNotes.getChange()).thenReturn(change);
     when(configMock.index()).thenReturn(indexMock);
     when(changeCheckerFactoryMock.create(any())).thenReturn(changeCheckerAbsentMock);