aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pf4j/src/main/java/org/pf4j/DefaultPluginFactory.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/pf4j/src/main/java/org/pf4j/DefaultPluginFactory.java b/pf4j/src/main/java/org/pf4j/DefaultPluginFactory.java
index db86006..310c791 100644
--- a/pf4j/src/main/java/org/pf4j/DefaultPluginFactory.java
+++ b/pf4j/src/main/java/org/pf4j/DefaultPluginFactory.java
@@ -59,18 +59,23 @@ public class DefaultPluginFactory implements PluginFactory {
return createInstance(pluginClass, pluginWrapper);
}
- /**
- * Creates a plugin instance. If an error occurs than that error is logged and the method returns {@code null}.
- */
protected Plugin createInstance(Class<?> pluginClass, PluginWrapper pluginWrapper) {
try {
- try {
- Constructor<?> constructor = pluginClass.getConstructor(PluginWrapper.class);
- return (Plugin) constructor.newInstance(pluginWrapper);
- } catch (NoSuchMethodException e) {
- Constructor<?> constructor = pluginClass.getConstructor();
- return (Plugin) constructor.newInstance();
- }
+ Constructor<?> constructor = pluginClass.getConstructor(PluginWrapper.class);
+ return (Plugin) constructor.newInstance(pluginWrapper);
+ } catch (NoSuchMethodException e) {
+ return createUsingNoParametersConstructor(pluginClass);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ }
+
+ return null;
+ }
+
+ protected Plugin createUsingNoParametersConstructor(Class<?> pluginClass) {
+ try {
+ Constructor<?> constructor = pluginClass.getConstructor();
+ return (Plugin) constructor.newInstance();
} catch (Exception e) {
log.error(e.getMessage(), e);
}