]> source.dussan.org Git - jgit.git/commitdiff
DfsGarbageCollector: #setReflogExpire with Instant instead of Date 99/1203799/3
authorIvan Frade <ifrade@google.com>
Fri, 8 Nov 2024 16:49:09 +0000 (08:49 -0800)
committerIvan Frade <ifrade@google.com>
Fri, 8 Nov 2024 23:06:16 +0000 (15:06 -0800)
The Date API is full of major design flaws and pitfalls and should be
avoided at all costs. Prefer the java.time APIs, specifically,
java.time.Instant (for physical time) and java.time.LocalDate[Time]
(for civil time). [1]

Replace the Date with Instant in the
DfsGarbageCollector#setReflogExpire method.

[1] https://errorprone.info/bugpattern/JavaUtilDate

Change-Id: Ie98e426e63621e8bef96c31bca56aec0c8eef5a6

org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollectorTest.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsGarbageCollector.java

index 3edd1056be07282f059f9cd3cb9b04735052f5f9..f9fbfe8db053e44f02456100df6425da6d2633db 100644 (file)
@@ -16,6 +16,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
+import java.time.Instant;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
@@ -1331,7 +1332,7 @@ public class DfsGarbageCollectorTest {
                gc = new DfsGarbageCollector(repo);
                gc.setReftableConfig(new ReftableConfig());
                // Expire ref log entries older than 30 days
-               gc.setRefLogExpire(new Date(thirty_days_ago));
+               gc.setRefLogExpire(Instant.ofEpochMilli(thirty_days_ago));
                run(gc);
 
                // Single GC pack present with all objects.
index 6861fe80996dedb9fa6de6b035602e963e14a8d3..e6068a15eca506b095c330bcb36149de593e0965 100644 (file)
@@ -24,11 +24,11 @@ import static org.eclipse.jgit.internal.storage.pack.PackExt.REFTABLE;
 import static org.eclipse.jgit.internal.storage.pack.PackWriter.NONE;
 
 import java.io.IOException;
+import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
-import java.util.Date;
 import java.util.EnumSet;
 import java.util.GregorianCalendar;
 import java.util.HashSet;
@@ -100,7 +100,7 @@ public class DfsGarbageCollector {
        private Set<ObjectId> allTags;
        private Set<ObjectId> nonHeads;
        private Set<ObjectId> tagTargets;
-       private Date refLogExpire;
+       private Instant refLogExpire;
 
        /**
         * Initialize a garbage collector.
@@ -212,8 +212,8 @@ public class DfsGarbageCollector {
         *            instant in time which defines refLog expiration
         * @return {@code this}
         */
-       public DfsGarbageCollector setRefLogExpire(Date refLogExpire) {
-               this.refLogExpire = refLogExpire ;
+       public DfsGarbageCollector setRefLogExpire(Instant refLogExpire) {
+               this.refLogExpire = refLogExpire;
                return this;
        }
 
@@ -752,7 +752,8 @@ public class DfsGarbageCollector {
                        compact.setIncludeDeletes(includeDeletes);
                        compact.setConfig(configureReftable(reftableConfig, out));
                        if(refLogExpire != null ){
-                               compact.setReflogExpireOldestReflogTimeMillis(refLogExpire.getTime());
+                               compact.setReflogExpireOldestReflogTimeMillis(
+                                               refLogExpire.toEpochMilli());
                        }
                        compact.compact();
                        pack.addFileExt(REFTABLE);