split random number and uuid generator modules
All checks were successful
Build, test and publish the Quarkus libraries / build (push) Successful in 10m15s
All checks were successful
Build, test and publish the Quarkus libraries / build (push) Successful in 10m15s
This commit is contained in:
parent
15c6263395
commit
0ae750fc0c
13 changed files with 29 additions and 5 deletions
25
quarkus-uuid-generator/pom.xml
Normal file
25
quarkus-uuid-generator/pom.xml
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>ch.phoenixtechnologies.quarkus</groupId>
|
||||
<artifactId>quarkus-commons</artifactId>
|
||||
<version>0.1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>quarkus-uuid-generator</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.uuid/java-uuid-generator -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.uuid</groupId>
|
||||
<artifactId>java-uuid-generator</artifactId>
|
||||
<version>${java-uuid-generator.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,37 @@
|
|||
package ch.phoenixtechnologies.quarkus.commons.uuid;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface UUIDGenerator {
|
||||
|
||||
UUID NAMESPACE_DNS = UUID.fromString("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
|
||||
UUID NAMESPACE_URL = UUID.fromString("6ba7b811-9dad-11d1-80b4-00c04fd430c8");
|
||||
UUID NAMESPACE_OID = UUID.fromString("6ba7b812-9dad-11d1-80b4-00c04fd430c8");
|
||||
UUID NAMESPACE_X500 = UUID.fromString("6ba7b814-9dad-11d1-80b4-00c04fd430c8");
|
||||
|
||||
UUID generateV4();
|
||||
|
||||
UUID generateV4(Random random);
|
||||
|
||||
UUID generateV5(String name);
|
||||
|
||||
UUID generateV5(UUID namespace, String name);
|
||||
|
||||
default UUID generateV5WithDNSNamespace(String name) {
|
||||
return generateV5(NAMESPACE_DNS, name);
|
||||
}
|
||||
|
||||
default UUID generateV5WithURLNamespace(String name) {
|
||||
return generateV5(NAMESPACE_URL, name);
|
||||
}
|
||||
|
||||
default UUID generateV5WithOIDNamespace(String name) {
|
||||
return generateV5(NAMESPACE_OID, name);
|
||||
}
|
||||
|
||||
default UUID generateV5WithX500Namespace(String name) {
|
||||
return generateV5(NAMESPACE_X500, name);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package ch.phoenixtechnologies.quarkus.commons.uuid;
|
||||
|
||||
import com.fasterxml.uuid.Generators;
|
||||
import io.quarkus.arc.DefaultBean;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
@DefaultBean
|
||||
@ApplicationScoped
|
||||
class UUIDGeneratorImpl implements UUIDGenerator {
|
||||
|
||||
@Override
|
||||
public UUID generateV4() {
|
||||
return Generators.randomBasedGenerator().generate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID generateV4(Random random) {
|
||||
return Generators.randomBasedGenerator(random).generate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID generateV5(String name) {
|
||||
return Generators.nameBasedGenerator().generate(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID generateV5(UUID namespace, String name) {
|
||||
return Generators.nameBasedGenerator(namespace).generate(name);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
package ch.phoenixtechnologies.quarkus.commons.uuid;
|
||||
|
||||
import ch.phoenixtechnologies.quarkus.commons.uuid.UUIDGeneratorImpl;
|
||||
import io.quarkus.test.junit.QuarkusTest;
|
||||
import jakarta.inject.Inject;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
||||
|
||||
@QuarkusTest
|
||||
class UUIDGeneratorImplTest {
|
||||
|
||||
private static final UUID NAMESPACE_DNS = UUID.fromString("6ba7b810-9dad-11d1-80b4-00c04fd430c8");
|
||||
private static final UUID NAMESPACE_URL = UUID.fromString("6ba7b811-9dad-11d1-80b4-00c04fd430c8");
|
||||
private static final UUID NAMESPACE_OID = UUID.fromString("6ba7b812-9dad-11d1-80b4-00c04fd430c8");
|
||||
private static final UUID NAMESPACE_X500 = UUID.fromString("6ba7b814-9dad-11d1-80b4-00c04fd430c8");
|
||||
|
||||
private static final String V5_NAME = "test";
|
||||
private static final UUID EXPECTED_V5_DNS = UUID.fromString("4be0643f-1d98-573b-97cd-ca98a65347dd");
|
||||
private static final UUID EXPECTED_V5_URL = UUID.fromString("da5b8893-d6ca-5c1c-9a9c-91f40a2a3649");
|
||||
private static final UUID EXPECTED_V5_OID = UUID.fromString("b428b5d9-df19-5bb9-a1dc-115e071b836c");
|
||||
private static final UUID EXPECTED_V5_X500 = UUID.fromString("63a3ab2b-61b8-5b04-ae2f-70d3875c6e97");
|
||||
|
||||
@Inject
|
||||
UUIDGeneratorImpl generator;
|
||||
|
||||
@Test
|
||||
void generateV4() {
|
||||
assertThat(generator.generateV4())
|
||||
.as("Generated UUID should not be null")
|
||||
.isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateV4WithLocalRandom() {
|
||||
var expected = UUID.fromString("b22f5354-f5ed-4f02-bca8-8882a6ec4750");
|
||||
|
||||
var actual = generator.generateV4(getRandom());
|
||||
|
||||
assertThat(actual)
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateV5() {
|
||||
var expected = UUID.fromString("a94a8fe5-ccb1-5ba6-9c4c-0873d391e987");
|
||||
|
||||
var actual = generator.generateV5("test");
|
||||
|
||||
assertThat(actual)
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(expected);
|
||||
}
|
||||
|
||||
public static Stream<Arguments> generateV5WithNamespace() {
|
||||
return Stream.of(
|
||||
Arguments.of(NAMESPACE_DNS, V5_NAME, EXPECTED_V5_DNS),
|
||||
Arguments.of(NAMESPACE_URL, V5_NAME, EXPECTED_V5_URL),
|
||||
Arguments.of(NAMESPACE_OID, V5_NAME, EXPECTED_V5_OID),
|
||||
Arguments.of(NAMESPACE_X500, V5_NAME, EXPECTED_V5_X500)
|
||||
);
|
||||
}
|
||||
|
||||
@MethodSource
|
||||
@ParameterizedTest
|
||||
void generateV5WithNamespace(UUID namespace, String name, UUID expected) {
|
||||
var actual = generator.generateV5(namespace, name);
|
||||
|
||||
assertThat(actual)
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateV5WithDNSNamespace() {
|
||||
var actual = generator.generateV5WithDNSNamespace(V5_NAME);
|
||||
|
||||
assertThat(actual)
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(EXPECTED_V5_DNS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateV5WithURLNamespace() {
|
||||
var actual = generator.generateV5WithURLNamespace(V5_NAME);
|
||||
|
||||
assertThat(actual)
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(EXPECTED_V5_URL);
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateV5WithOIDNamespace() {
|
||||
assertThat(generator.generateV5WithOIDNamespace(V5_NAME))
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(EXPECTED_V5_OID);
|
||||
}
|
||||
|
||||
@Test
|
||||
void generateV5WithX500Namespace() {
|
||||
assertThat(generator.generateV5WithX500Namespace(V5_NAME))
|
||||
.as("Generated UUID should match expected value")
|
||||
.isEqualTo(EXPECTED_V5_X500);
|
||||
}
|
||||
|
||||
private static Random getRandom() {
|
||||
return new Random(24353L);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue