X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.api.uuid%2Fsrc%2Forg%2Fargeo%2Fapi%2Fuuid%2FRandomUuid.java;fp=org.argeo.api.uuid%2Fsrc%2Forg%2Fargeo%2Fapi%2Fuuid%2FRandomUuid.java;h=ea71c483342770df6edbc7a31e9cc6f963e133e8;hb=e8e2c65f356b30b35e4d8a1de66691a789c183bb;hp=0000000000000000000000000000000000000000;hpb=5b33b0f7a92debf285b31d308add6470a31894a9;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java b/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java new file mode 100644 index 000000000..ea71c4833 --- /dev/null +++ b/org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java @@ -0,0 +1,29 @@ +package org.argeo.api.uuid; + +import java.util.UUID; + +/** An opaque variant 2 random {@link UUID} (v4). */ +public final class RandomUuid extends TypedUuid { + private static final long serialVersionUID = APM.SERIAL; + + public RandomUuid(UUID uuid) { + super(uuid); + if (uuid.version() != 4 && uuid.variant() != 2) + throw new IllegalArgumentException("The provided UUID is not a time-based UUID."); + } + + /** + * Always returns true since random UUIDs are by definition not + * opaque. + */ + @Override + public final boolean isOpaque() { + return true; + } + + /** Creates a new {@link RandomUuid} using {@link UUID#randomUUID()}. */ + public static RandomUuid newRandomUuid() { + return new RandomUuid(UUID.randomUUID()); + } + +}