This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch OAK-11621
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git

commit e9fec1c505e5736143729ca7c5b2da6e60c1445d
Author: Julian Reschke <resc...@apache.org>
AuthorDate: Mon Mar 31 13:50:26 2025 +0100

    OAK-11621: Reduce usage of Guava Ticker - oak-core
---
 .../plugins/index/TrackingCorruptIndexHandler.java | 21 ++---
 .../oak/plugins/index/FormattingUtilsTest.java     | 98 ++++++++++++++--------
 .../oak/plugins/index/lucene/VirtualTicker.java    | 41 ---------
 3 files changed, 70 insertions(+), 90 deletions(-)

diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java
index 91f2e43c4a..c82fa461f3 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/TrackingCorruptIndexHandler.java
@@ -168,7 +168,13 @@ public class TrackingCorruptIndexHandler implements 
CorruptIndexHandler {
         private final String asyncName;
         private final String path;
         private final long lastIndexerCycleCount = indexerCycleCount;
-        private final Stopwatch watch = Stopwatch.createStarted(new 
ClockTicker(clock));
+        private final Stopwatch watch = Stopwatch.createStarted(new Ticker() {
+            @Override
+            public long read() {
+                return TimeUnit.MILLISECONDS.toNanos(clock.millis());
+            }
+        });
+
         private String exception = "";
         private int failureCount;
         private int skippedCount;
@@ -312,17 +318,4 @@ public class TrackingCorruptIndexHandler implements 
CorruptIndexHandler {
             }
         }
     }
-
-    private static class ClockTicker extends Ticker {
-        private final Clock clock;
-
-        public ClockTicker(Clock clock) {
-            this.clock = clock;
-        }
-
-        @Override
-        public long read() {
-            return TimeUnit.MILLISECONDS.toNanos(clock.getTime());
-        }
-    }
 }
diff --git 
a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java
 
b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java
index 74155188d8..e7d4ba0c2e 100644
--- 
a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java
+++ 
b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/FormattingUtilsTest.java
@@ -20,69 +20,97 @@ import org.apache.jackrabbit.guava.common.base.Stopwatch;
 import org.apache.jackrabbit.guava.common.base.Ticker;
 import org.junit.Test;
 
+import java.time.Clock;
+import java.time.Instant;
+import java.time.ZoneId;
 import java.util.concurrent.TimeUnit;
 
 import static org.junit.Assert.assertEquals;
 
-
 public class FormattingUtilsTest {
 
-    private static class TestTicker extends Ticker {
+    // simple test clock implementation where the time can be set
+    private static class TestClock extends Clock {
+
         private long time = 0;
+
         @Override
-        public long read() {
+        public long millis() {
             return time;
         }
-        public void set(long nanos) {
-            time = nanos;
+
+        public void set(long millis) {
+            time = millis;
+        }
+
+        @Override
+        public ZoneId getZone() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public java.time.Clock withZone(ZoneId zone) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public Instant instant() {
+            return Instant.ofEpochSecond(time);
         }
     }
-    private final TestTicker ticker = new TestTicker();
-    private final Stopwatch sw = Stopwatch.createStarted(ticker);
+
+    private final TestClock clock = new TestClock();
+
+    private final Stopwatch sw = Stopwatch.createStarted(new Ticker() {
+        @Override
+        public long read() {
+            return TimeUnit.MILLISECONDS.toNanos(clock.millis());
+        }
+    });
 
     @Test
     public void formatToSeconds() {
         testFormatToSeconds("00:00:00", 0);
-        testFormatToSeconds("00:00:59", TimeUnit.MILLISECONDS.toNanos(59_567));
-        testFormatToSeconds("00:01:00", TimeUnit.MILLISECONDS.toNanos(60_567));
-        testFormatToSeconds("00:59:00", TimeUnit.MINUTES.toNanos(59));
-        testFormatToSeconds("01:00:00", TimeUnit.MINUTES.toNanos(60));
-        testFormatToSeconds("23:00:00", TimeUnit.HOURS.toNanos(23));
-        testFormatToSeconds("24:00:00", TimeUnit.HOURS.toNanos(24));
-        testFormatToSeconds("48:00:00", TimeUnit.HOURS.toNanos(48));
-        testFormatToSeconds("23:59:59", TimeUnit.HOURS.toNanos(23) +
-                TimeUnit.MINUTES.toNanos(59) +
-                TimeUnit.SECONDS.toNanos(59) +
-                TimeUnit.MILLISECONDS.toNanos(999)
+        testFormatToSeconds("00:00:59", 
TimeUnit.MILLISECONDS.toMillis(59_567));
+        testFormatToSeconds("00:01:00", 
TimeUnit.MILLISECONDS.toMillis(60_567));
+        testFormatToSeconds("00:59:00", TimeUnit.MINUTES.toMillis(59));
+        testFormatToSeconds("01:00:00", TimeUnit.MINUTES.toMillis(60));
+        testFormatToSeconds("23:00:00", TimeUnit.HOURS.toMillis(23));
+        testFormatToSeconds("24:00:00", TimeUnit.HOURS.toMillis(24));
+        testFormatToSeconds("48:00:00", TimeUnit.HOURS.toMillis(48));
+        testFormatToSeconds("23:59:59", TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.SECONDS.toMillis(59) +
+                TimeUnit.MILLISECONDS.toMillis(999)
         );
-        testFormatToSeconds("-00:01:00", -TimeUnit.SECONDS.toNanos(60));
+        testFormatToSeconds("-00:01:00", -TimeUnit.SECONDS.toMillis(60));
     }
 
-    private void testFormatToSeconds(String expected, long nanos) {
-        ticker.set(nanos);
+    private void testFormatToSeconds(String expected, long millis) {
+        clock.set(millis);
         assertEquals(expected, FormattingUtils.formatToSeconds(sw));
     }
 
     @Test
     public void formatToMillis() {
         testFormatToMillis("00:00:00.000", 0);
-        testFormatToMillis("00:00:59.567", 
TimeUnit.MILLISECONDS.toNanos(59_567));
-        testFormatToMillis("00:01:00.567", 
TimeUnit.MILLISECONDS.toNanos(60_567));
-        testFormatToMillis("00:59:00.000", TimeUnit.MINUTES.toNanos(59));
-        testFormatToMillis("01:00:00.000", TimeUnit.MINUTES.toNanos(60));
-        testFormatToMillis("23:00:00.000", TimeUnit.HOURS.toNanos(23));
-        testFormatToMillis("24:00:00.000", TimeUnit.HOURS.toNanos(24));
-        testFormatToMillis("48:00:00.000", TimeUnit.HOURS.toNanos(48));
-        testFormatToMillis("23:59:59.999", TimeUnit.HOURS.toNanos(23) +
-                TimeUnit.MINUTES.toNanos(59) +
-                TimeUnit.SECONDS.toNanos(59) +
-                TimeUnit.MILLISECONDS.toNanos(999)
+        testFormatToMillis("00:00:59.567", 
TimeUnit.MILLISECONDS.toMillis(59_567));
+        testFormatToMillis("00:01:00.567", 
TimeUnit.MILLISECONDS.toMillis(60_567));
+        testFormatToMillis("00:59:00.000", TimeUnit.MINUTES.toMillis(59));
+        testFormatToMillis("01:00:00.000", TimeUnit.MINUTES.toMillis(60));
+        testFormatToMillis("23:00:00.000", TimeUnit.HOURS.toMillis(23));
+        testFormatToMillis("24:00:00.000", TimeUnit.HOURS.toMillis(24));
+        testFormatToMillis("48:00:00.000", TimeUnit.HOURS.toMillis(48));
+        testFormatToMillis("23:59:59.999", TimeUnit.HOURS.toMillis(23) +
+                TimeUnit.MINUTES.toMillis(59) +
+                TimeUnit.SECONDS.toMillis(59) +
+                TimeUnit.MILLISECONDS.toMillis(999)
         );
-        testFormatToMillis("-00:01:00.000", -TimeUnit.SECONDS.toNanos(60));
+        testFormatToMillis("-00:01:00.000", -TimeUnit.SECONDS.toMillis(60));
     }
 
-    private void testFormatToMillis(String expected, long nanos) {
-        ticker.set(nanos);
+    private void testFormatToMillis(String expected, long millis) {
+        clock.set(millis);
         assertEquals(expected, FormattingUtils.formatToMillis(sw));
     }
 
diff --git 
a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/VirtualTicker.java
 
b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/VirtualTicker.java
deleted file mode 100644
index 612f62c6c4..0000000000
--- 
a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/VirtualTicker.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.jackrabbit.oak.plugins.index.lucene;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.jackrabbit.guava.common.base.Ticker;
-
-public class VirtualTicker extends Ticker {
-    private long time;
-
-    @Override
-    public long read() {
-        return time;
-    }
-
-    public void setTime(long time, TimeUnit unit){
-        this.time = unit.toNanos(time);
-    }
-
-    public void addTime(long delta, TimeUnit unit){
-        this.time += unit.toNanos(delta);
-    }
-}

Reply via email to