]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.uuid/src/org/argeo/api/uuid/AsyncUuidFactory.java
Improve build and local deployment
[lgpl/argeo-commons.git] / org.argeo.api.uuid / src / org / argeo / api / uuid / AsyncUuidFactory.java
1 package org.argeo.api.uuid;
2
3 import java.util.UUID;
4 import java.util.concurrent.CompletionStage;
5 import java.util.concurrent.ForkJoinTask;
6
7 /** A {@link UUID} factory which creates the UUIDs asynchronously. */
8 public interface AsyncUuidFactory extends UuidFactory {
9 /*
10 * TIME-BASED (version 1)
11 */
12 CompletionStage<UUID> requestTimeUUID();
13
14 ForkJoinTask<UUID> futureTimeUUID();
15
16 /*
17 * NAME BASED (version 3 and 5)
18 */
19 CompletionStage<UUID> requestNameUUIDv5(UUID namespace, byte[] data);
20
21 CompletionStage<UUID> requestNameUUIDv3(UUID namespace, byte[] data);
22
23 ForkJoinTask<UUID> futureNameUUIDv5(UUID namespace, byte[] data);
24
25 ForkJoinTask<UUID> futureNameUUIDv3(UUID namespace, byte[] data);
26
27 /*
28 * RANDOM (version 4)
29 */
30 CompletionStage<UUID> requestRandomUUIDStrong();
31
32 ForkJoinTask<UUID> futureRandomUUIDStrong();
33
34 /*
35 * DEFAULTS
36 */
37 @Override
38 default UUID randomUUIDStrong() {
39 return futureRandomUUIDStrong().invoke();
40 }
41
42 @Override
43 default UUID timeUUID() {
44 return futureTimeUUID().invoke();
45 }
46
47 @Override
48 default UUID nameUUIDv5(UUID namespace, byte[] data) {
49 return futureNameUUIDv5(namespace, data).invoke();
50 }
51
52 @Override
53 default UUID nameUUIDv3(UUID namespace, byte[] data) {
54 return futureNameUUIDv3(namespace, data).invoke();
55 }
56 }