diff --git a/src/main/java/com/github/f4b6a3/ulid/UlidFactory.java b/src/main/java/com/github/f4b6a3/ulid/UlidFactory.java
index 256e261..3b8b63a 100644
--- a/src/main/java/com/github/f4b6a3/ulid/UlidFactory.java
+++ b/src/main/java/com/github/f4b6a3/ulid/UlidFactory.java
@@ -25,7 +25,6 @@
package com.github.f4b6a3.ulid;
import java.security.SecureRandom;
-import java.time.Clock;
import java.util.Objects;
import java.util.Random;
import java.util.function.IntFunction;
@@ -170,52 +169,6 @@ public final class UlidFactory {
return new UlidFactory(new MonotonicFunction(randomFunction));
}
- /**
- * Returns a new monotonic factory.
- *
- * @param random a {@link Random} generator
- * @param clock a clock instance that provides the current time in
- * milliseconds, measured from the UNIX epoch of 1970-01-01T00:00Z
- * (UTC)
- * @return {@link UlidFactory}
- */
- static UlidFactory newMonotonicInstance(Random random, Clock clock) {
- Objects.requireNonNull(clock, "Clock instant must not be null");
- return new UlidFactory(new MonotonicFunction(random), clock::millis);
- }
-
- /**
- * Returns a new monotonic factory.
- *
- * The given random function must return a long value.
- *
- * @param randomFunction a random function that returns a long value
- * @param clock a clock instance that provides the current time in
- * milliseconds, measured from the UNIX epoch of
- * 1970-01-01T00:00Z (UTC)
- * @return {@link UlidFactory}
- */
- static UlidFactory newMonotonicInstance(LongSupplier randomFunction, Clock clock) {
- Objects.requireNonNull(clock, "Clock instant must not be null");
- return new UlidFactory(new MonotonicFunction(randomFunction), clock::millis);
- }
-
- /**
- * Returns a new monotonic factory.
- *
- * The given random function must return a byte array.
- *
- * @param randomFunction a random function that returns a byte array
- * @param clock a clock instance that provides the current time in
- * milliseconds, measured from the UNIX epoch of
- * 1970-01-01T00:00Z (UTC)
- * @return {@link UlidFactory}
- */
- static UlidFactory newMonotonicInstance(IntFunction randomFunction, Clock clock) {
- Objects.requireNonNull(clock, "Clock instant must not be null");
- return new UlidFactory(new MonotonicFunction(randomFunction), clock::millis);
- }
-
/**
* Returns a new monotonic factory.
*
diff --git a/src/test/java/com/github/f4b6a3/ulid/UlidFactoryMonotonicTest.java b/src/test/java/com/github/f4b6a3/ulid/UlidFactoryMonotonicTest.java
index ee80ee3..4e31dde 100644
--- a/src/test/java/com/github/f4b6a3/ulid/UlidFactoryMonotonicTest.java
+++ b/src/test/java/com/github/f4b6a3/ulid/UlidFactoryMonotonicTest.java
@@ -6,11 +6,11 @@ import static org.junit.Assert.*;
import java.time.Clock;
import java.time.Instant;
-import java.time.ZoneId;
import java.util.Arrays;
import java.util.Random;
import java.util.SplittableRandom;
import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.IntFunction;
import java.util.function.LongSupplier;
@@ -41,32 +41,11 @@ public class UlidFactoryMonotonicTest extends UlidFactoryTest {
long time = Instant.parse("2021-12-31T23:59:59.000Z").toEpochMilli();
long times[] = { time + 0, time + 1, time + 2, time + 3, time + 4 - diff, time + 5 - diff, time + 6 - diff };
- Clock clock = new Clock() {
- private int i;
-
- @Override
- public long millis() {
- return times[i++ % times.length];
- }
-
- @Override
- public ZoneId getZone() {
- return null;
- }
-
- @Override
- public Clock withZone(ZoneId zone) {
- return null;
- }
-
- @Override
- public Instant instant() {
- return null;
- }
- };
+ AtomicInteger i = new AtomicInteger();
+ LongSupplier timeFunction = () -> times[i.getAndIncrement() % times.length];
LongSupplier randomFunction = () -> 0;
- UlidFactory factory = UlidFactory.newMonotonicInstance(randomFunction, clock);
+ UlidFactory factory = UlidFactory.newMonotonicInstance(randomFunction, timeFunction);
Ulid ulid1 = factory.create();
Ulid ulid2 = factory.create();
@@ -119,32 +98,11 @@ public class UlidFactoryMonotonicTest extends UlidFactoryTest {
long leap = time - 1000; // moving the clock hands 1 second backwards
long times[] = { time, leap };
- Clock clock = new Clock() {
- private int i;
-
- @Override
- public long millis() {
- return times[i++ % times.length];
- }
-
- @Override
- public ZoneId getZone() {
- return null;
- }
-
- @Override
- public Clock withZone(ZoneId zone) {
- return null;
- }
-
- @Override
- public Instant instant() {
- return null;
- }
- };
+ AtomicInteger i = new AtomicInteger();
+ LongSupplier timeFunction = () -> times[i.getAndIncrement() % times.length];
LongSupplier randomFunction = () -> 0;
- UlidFactory factory = UlidFactory.newMonotonicInstance(randomFunction, clock);
+ UlidFactory factory = UlidFactory.newMonotonicInstance(randomFunction, timeFunction);
// the clock moved normally
Ulid ulid1 = factory.create();
@@ -167,32 +125,11 @@ public class UlidFactoryMonotonicTest extends UlidFactoryTest {
long time = Instant.parse("2021-12-31T23:59:59.999Z").toEpochMilli();
long times[] = { time + 1, time + 2, time + 3, time, time, time };
- Clock clock = new Clock() {
- private int i;
-
- @Override
- public long millis() {
- return times[i++ % times.length];
- }
-
- @Override
- public ZoneId getZone() {
- return null;
- }
-
- @Override
- public Clock withZone(ZoneId zone) {
- return null;
- }
-
- @Override
- public Instant instant() {
- return null;
- }
- };
+ AtomicInteger i = new AtomicInteger();
+ LongSupplier timeFunction = () -> times[i.getAndIncrement() % times.length];
LongSupplier randomSupplier = () -> 0xffffffffffffffffL;
- UlidFactory factory = UlidFactory.newMonotonicInstance(randomSupplier, clock);
+ UlidFactory factory = UlidFactory.newMonotonicInstance(randomSupplier, timeFunction);
Ulid ulid1 = factory.create();
Ulid ulid2 = factory.create();
@@ -287,7 +224,7 @@ public class UlidFactoryMonotonicTest extends UlidFactoryTest {
{
SplittableRandom random = new SplittableRandom();
LongSupplier function = () -> random.nextLong();
- UlidFactory factory = UlidFactory.newMonotonicInstance(function, Clock.systemDefaultZone());
+ UlidFactory factory = UlidFactory.newMonotonicInstance(function, () -> Clock.systemUTC().millis());
assertNotNull(factory.create());
}
{
@@ -305,7 +242,7 @@ public class UlidFactoryMonotonicTest extends UlidFactoryTest {
ThreadLocalRandom.current().nextBytes(bytes);
return bytes;
};
- UlidFactory factory = UlidFactory.newMonotonicInstance(function, Clock.systemDefaultZone());
+ UlidFactory factory = UlidFactory.newMonotonicInstance(function, () -> Clock.systemUTC().millis());
assertNotNull(factory.create());
}
}