From 04cb26fd8211b91836f271adbafe47bec533cec1 Mon Sep 17 00:00:00 2001 From: Peter Gafert Date: Mon, 20 Jan 2025 00:43:43 +0100 Subject: [PATCH] make `DomainPlugin`s package-private We should rather extend the plugin instantiation logic to allow non-public constructors than making it public to be possibly invoked by users. Signed-off-by: Peter Gafert --- .../com/tngtech/archunit/core/domain/Java9DomainPlugin.java | 4 +--- .../main/java/com/tngtech/archunit/core/PluginLoader.java | 5 ++++- .../com/tngtech/archunit/core/domain/Java14DomainPlugin.java | 4 +--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/archunit/src/jdk9main/java/com/tngtech/archunit/core/domain/Java9DomainPlugin.java b/archunit/src/jdk9main/java/com/tngtech/archunit/core/domain/Java9DomainPlugin.java index 37ad541dc..229bedbba 100644 --- a/archunit/src/jdk9main/java/com/tngtech/archunit/core/domain/Java9DomainPlugin.java +++ b/archunit/src/jdk9main/java/com/tngtech/archunit/core/domain/Java9DomainPlugin.java @@ -15,7 +15,6 @@ */ package com.tngtech.archunit.core.domain; -import com.tngtech.archunit.Internal; import com.tngtech.archunit.core.InitialConfiguration; import com.tngtech.archunit.core.PluginLoader; @@ -23,8 +22,7 @@ * Resolved via {@link PluginLoader} */ @SuppressWarnings("unused") -@Internal -public class Java9DomainPlugin implements DomainPlugin { +class Java9DomainPlugin implements DomainPlugin { @Override public void plugInAnnotationPropertiesFormatter(InitialConfiguration propertiesFormatter) { propertiesFormatter.set(AnnotationPropertiesFormatter.configure() diff --git a/archunit/src/main/java/com/tngtech/archunit/core/PluginLoader.java b/archunit/src/main/java/com/tngtech/archunit/core/PluginLoader.java index 67c18ebf1..8ca11fe86 100644 --- a/archunit/src/main/java/com/tngtech/archunit/core/PluginLoader.java +++ b/archunit/src/main/java/com/tngtech/archunit/core/PluginLoader.java @@ -15,6 +15,7 @@ */ package com.tngtech.archunit.core; +import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -83,7 +84,9 @@ private T create(String className) { try { Class clazz = Class.forName(className); checkCompatibility(className, clazz); - return (T) clazz.getConstructor().newInstance(); + Constructor constructor = clazz.getDeclaredConstructor(); + constructor.setAccessible(true); + return (T) constructor.newInstance(); } catch (Exception e) { throw new PluginLoadingFailedException(e, "Couldn't load plugin of type %s", className); } diff --git a/archunit/src/main/java/com/tngtech/archunit/core/domain/Java14DomainPlugin.java b/archunit/src/main/java/com/tngtech/archunit/core/domain/Java14DomainPlugin.java index 31c49b586..6e071ef71 100644 --- a/archunit/src/main/java/com/tngtech/archunit/core/domain/Java14DomainPlugin.java +++ b/archunit/src/main/java/com/tngtech/archunit/core/domain/Java14DomainPlugin.java @@ -15,7 +15,6 @@ */ package com.tngtech.archunit.core.domain; -import com.tngtech.archunit.Internal; import com.tngtech.archunit.core.InitialConfiguration; import com.tngtech.archunit.core.PluginLoader; @@ -23,8 +22,7 @@ * Resolved via {@link PluginLoader} */ @SuppressWarnings("unused") -@Internal -public class Java14DomainPlugin implements DomainPlugin { +class Java14DomainPlugin implements DomainPlugin { @Override public void plugInAnnotationPropertiesFormatter(InitialConfiguration propertiesFormatter) { propertiesFormatter.set(AnnotationPropertiesFormatter.configure()