From f2718bed94818bdd049cf6174a3b1f58682b72e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20L=C3=A9vesque?= Date: Tue, 25 Mar 2025 15:27:03 -0400 Subject: [PATCH] feat: Add a ReferenceNumberGenerator overload that can instantiate any ReferenceNumber implementation --- README.md | 2 +- pom.xml | 2 +- .../core/referables/ReferenceNumberGenerator.java | 5 ++++- .../referables/UUIDReferenceNumberGenerator.java | 12 ++++++++++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 10c9621..7244edf 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ Then, you simply add the dependency as follows: ca.nexapp core - 0.1.4 + 0.2.0 ``` diff --git a/pom.xml b/pom.xml index b9be3c3..80e1707 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ ca.nexapp core - 0.1.4 + 0.2.0 jar Nexapp Core diff --git a/src/main/java/ca/nexapp/core/referables/ReferenceNumberGenerator.java b/src/main/java/ca/nexapp/core/referables/ReferenceNumberGenerator.java index b2792cf..2306e0e 100644 --- a/src/main/java/ca/nexapp/core/referables/ReferenceNumberGenerator.java +++ b/src/main/java/ca/nexapp/core/referables/ReferenceNumberGenerator.java @@ -1,7 +1,10 @@ package ca.nexapp.core.referables; +import java.lang.reflect.InvocationTargetException; + public interface ReferenceNumberGenerator { - ReferenceNumber generate(); + ReferenceNumber generate() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException; + T generate(Class klass) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException; } diff --git a/src/main/java/ca/nexapp/core/referables/UUIDReferenceNumberGenerator.java b/src/main/java/ca/nexapp/core/referables/UUIDReferenceNumberGenerator.java index 3d030d3..4cec72f 100644 --- a/src/main/java/ca/nexapp/core/referables/UUIDReferenceNumberGenerator.java +++ b/src/main/java/ca/nexapp/core/referables/UUIDReferenceNumberGenerator.java @@ -1,11 +1,19 @@ package ca.nexapp.core.referables; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.util.UUID; public class UUIDReferenceNumberGenerator implements ReferenceNumberGenerator { @Override - public ReferenceNumber generate() { - return new ReferenceNumber(UUID.randomUUID().toString()); + public ReferenceNumber generate() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { + return generate(ReferenceNumber.class); + } + + @Override + public T generate(Class klass) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { + Constructor constructor = klass.getConstructor(String.class); + return constructor.newInstance(UUID.randomUUID().toString()); } }