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); } }