You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2019/11/22 14:09:56 UTC
svn commit: r1870162 - in /jackrabbit/oak/trunk/oak-core-spi/src:
main/java/org/apache/jackrabbit/oak/stats/Clock.java
main/java/org/apache/jackrabbit/oak/stats/package-info.java
test/java/org/apache/jackrabbit/oak/stats/ClockTest.java
Author: reschke
Date: Fri Nov 22 14:09:56 2019
New Revision: 1870162
URL: http://svn.apache.org/viewvc?rev=1870162&view=rev
Log:
OAK-8743: org.apache.jackrabbit.oak.stats.Clock should extend from java.time.Clock
Modified:
jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/Clock.java
jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/package-info.java
jackrabbit/oak/trunk/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java
Modified: jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/Clock.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/Clock.java?rev=1870162&r1=1870161&r2=1870162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/Clock.java (original)
+++ jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/Clock.java Fri Nov 22 14:09:56 2019
@@ -17,6 +17,8 @@
package org.apache.jackrabbit.oak.stats;
import java.io.Closeable;
+import java.time.Instant;
+import java.time.ZoneId;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.ScheduledExecutorService;
@@ -26,8 +28,10 @@ import java.util.concurrent.atomic.Atomi
/**
* Mechanism for keeping track of time at millisecond accuracy.
+ * <p>
+ * As of Oak 1.20, this extends from {@link java.time.Clock}.
*/
-public abstract class Clock {
+public abstract class Clock extends java.time.Clock {
/**
* Maximum amount (in ms) of random noise to include in the time
@@ -63,6 +67,7 @@ public abstract class Clock {
* Returns the current time in milliseconds since the epoch.
*
* @see System#currentTimeMillis()
+ * @see java.time.Clock#millis()
* @return current time in milliseconds since the epoch
*/
public abstract long getTime();
@@ -156,6 +161,24 @@ public abstract class Clock {
}
}
+ @Override
+ public ZoneId getZone() {
+ return ZoneId.of("Z");
+ }
+
+ @Override
+ public Instant instant() {
+ return Instant.ofEpochMilli(getTime());
+ }
+
+ @Override
+ public java.time.Clock withZone(ZoneId zone) {
+ if (!zone.equals(ZoneId.of("Z"))) {
+ throw new UnsupportedOperationException("ZoneIds other than 'Z' are not supported by this clock");
+ }
+ return this;
+ }
+
/**
* Simple clock implementation based on {@link System#currentTimeMillis()},
* which is known to be rather slow on some platforms.
@@ -334,7 +357,5 @@ public abstract class Clock {
public String toString() {
return "Clock.Virtual";
}
-
};
-
}
Modified: jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/package-info.java?rev=1870162&r1=1870161&r2=1870162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/stats/package-info.java Fri Nov 22 14:09:56 2019
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.0.1")
+@Version("1.1.0")
package org.apache.jackrabbit.oak.stats;
import org.osgi.annotation.versioning.Version;
Modified: jackrabbit/oak/trunk/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java?rev=1870162&r1=1870161&r2=1870162&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java (original)
+++ jackrabbit/oak/trunk/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/stats/ClockTest.java Fri Nov 22 14:09:56 2019
@@ -16,8 +16,10 @@
*/
package org.apache.jackrabbit.oak.stats;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.time.ZoneId;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -65,6 +67,20 @@ public class ClockTest {
}
}
+ @Test
+ public void testClockJavaTime() throws InterruptedException {
+ Clock c = Clock.SIMPLE;
+
+ long t1 = c.millis();
+ long t2 = c.getTime();
+ long t3 = c.millis();
+ assertTrue(t1 <= t2);
+ assertTrue(t2 <= t3);
+
+ java.time.Clock c2 = c.withZone(ZoneId.of("Z"));
+ assertEquals(c2.getZone(), c.getZone());
+ }
+
private void testClockDrift(Clock clock) throws InterruptedException {
long drift = clock.getTime() - System.currentTimeMillis();
@@ -149,4 +165,4 @@ public class ClockTest {
// return average in 1/1000ms
return (sum * 1000) / samples;
}
-}
\ No newline at end of file
+}