From 811b54517a403e190f0955638f281d95c9ef0702 Mon Sep 17 00:00:00 2001 From: Adrian Victor Date: Sat, 23 May 2026 15:12:13 -0300 Subject: [PATCH] Safer classpath building in ImplementationRegistry --- .../lib/reflection/ImplementationRegistry.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/adrianvictor/lib/reflection/ImplementationRegistry.java b/src/main/java/org/adrianvictor/lib/reflection/ImplementationRegistry.java index c9afd44..cac780a 100644 --- a/src/main/java/org/adrianvictor/lib/reflection/ImplementationRegistry.java +++ b/src/main/java/org/adrianvictor/lib/reflection/ImplementationRegistry.java @@ -9,12 +9,13 @@ public class ImplementationRegistry { } public T getInstance(Class apiClass, String target, String replacement) { + String base = apiClass.getName(); + String implName = - apiClass.getName() - .replace( - target, - replacement + classSuffix + "." - ); + base.replaceFirst( + "org\\.adrianvictor\\.lib", + "org.adrianvictor.lib.impl." + classSuffix + ); try { Class implClass = Class.forName(implName); @@ -23,10 +24,7 @@ public class ImplementationRegistry { implClass.getDeclaredConstructor().newInstance() ); } catch (ReflectiveOperationException e) { - throw new IllegalStateException( - "Cannot load " + implName, - e - ); + throw new IllegalStateException("Cannot load " + implName, e); } }