X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.acr%2Fsrc%2Forg%2Fargeo%2Fapi%2Facr%2Fuuid%2FUuidFactory.java;h=94e5158df07a4f8ba47b1f71e349fbc5c51e3613;hb=8b201d419e0de2f0df848e47dd4b48a2a10c711b;hp=e99cd71ebe42f7135fdc8ad6d981c768f643ede3;hpb=840822c55293563f4a09256ca29185fe57f64a37;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.api.acr/src/org/argeo/api/acr/uuid/UuidFactory.java b/org.argeo.api.acr/src/org/argeo/api/acr/uuid/UuidFactory.java index e99cd71eb..94e5158df 100644 --- a/org.argeo.api.acr/src/org/argeo/api/acr/uuid/UuidFactory.java +++ b/org.argeo.api.acr/src/org/argeo/api/acr/uuid/UuidFactory.java @@ -2,7 +2,7 @@ package org.argeo.api.acr.uuid; import static java.nio.charset.StandardCharsets.UTF_8; -import java.util.Random; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; import java.util.function.Supplier; @@ -28,35 +28,44 @@ public interface UuidFactory extends Supplier { * NAME BASED (version 3 and 5) */ - UUID nameUUIDv5(UUID namespace, byte[] name); + UUID nameUUIDv5(UUID namespace, byte[] data); - UUID nameUUIDv3(UUID namespace, byte[] name); + UUID nameUUIDv3(UUID namespace, byte[] data); default UUID nameUUIDv5(UUID namespace, String name) { - if (name == null) - throw new IllegalArgumentException("Name cannot be null"); + Objects.requireNonNull(name, "Name cannot be null"); return nameUUIDv5(namespace, name.getBytes(UTF_8)); } default UUID nameUUIDv3(UUID namespace, String name) { - if (name == null) - throw new IllegalArgumentException("Name cannot be null"); + Objects.requireNonNull(name, "Name cannot be null"); return nameUUIDv3(namespace, name.getBytes(UTF_8)); } /* - * RANDOM v4 + * RANDOM (version 4) */ - UUID randomUUID(Random random); + /** A random UUID at least as good as {@link UUID#randomUUID()}. */ + UUID randomUUIDStrong(); - default UUID randomUUID() { - return UUID.randomUUID(); - } + /** + * An {@link UUID} generated based on {@link ThreadLocalRandom}. Implementations + * should always provide it synchronously. + */ + UUID randomUUIDWeak(); - default UUID randomUUIDWeak() { - return randomUUID(ThreadLocalRandom.current()); + /** + * The default random {@link UUID} (v4) generator to use. This default + * implementation returns {@link #randomUUIDStrong()}. + */ + default UUID randomUUID() { + return randomUUIDStrong(); } + /** + * The default {@link UUID} to provide, either random (v4) or time based (v1). + * This default implementations returns {@link #randomUUID()}. + */ @Override default UUID get() { return randomUUID();