diff options
author | Decebal Suiu <decebal.suiu@gmail.com> | 2023-01-30 20:36:47 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-30 20:36:47 +0200 |
commit | 1f04209be1769e40c730cf2701926611e2f85435 (patch) | |
tree | d824ef5c8dd93264a4b99ed9bf3704540d73ce76 /demo/app | |
parent | de63736b13a71c227c1dec95e8e39c95a3962870 (diff) | |
download | pf4j-1f04209be1769e40c730cf2701926611e2f85435.tar.gz pf4j-1f04209be1769e40c730cf2701926611e2f85435.zip |
Relax Plugin construction (remove dependency on PluginWrapper) (#512)
Diffstat (limited to 'demo/app')
3 files changed, 83 insertions, 21 deletions
diff --git a/demo/app/src/main/java/org/pf4j/demo/Boot.java b/demo/app/src/main/java/org/pf4j/demo/Boot.java index 524009c..d101104 100644 --- a/demo/app/src/main/java/org/pf4j/demo/Boot.java +++ b/demo/app/src/main/java/org/pf4j/demo/Boot.java @@ -16,7 +16,6 @@ package org.pf4j.demo; import org.apache.commons.lang.StringUtils; -import org.pf4j.DefaultPluginManager; import org.pf4j.PluginManager; import org.pf4j.PluginWrapper; import org.pf4j.demo.api.Greeting; @@ -40,7 +39,7 @@ public class Boot { printLogo(); // create the plugin manager - PluginManager pluginManager = createPluginManager(); + PluginManager pluginManager = new DemoPluginManager(); // load the plugins pluginManager.loadPlugins(); @@ -129,23 +128,4 @@ public class Boot { log.info(StringUtils.repeat("#", 40)); } - private static PluginManager createPluginManager() { - return new DefaultPluginManager(); - - // use below plugin manager instance if you want to enable ServiceProviderExtensionFinder - /* - return new DefaultPluginManager() { - - @Override - protected ExtensionFinder createExtensionFinder() { - DefaultExtensionFinder extensionFinder = (DefaultExtensionFinder) super.createExtensionFinder(); - extensionFinder.addServiceProviderExtensionFinder(); // to activate "HowdyGreeting" extension - - return extensionFinder; - } - - }; - */ - } - } diff --git a/demo/app/src/main/java/org/pf4j/demo/DemoPluginFactory.java b/demo/app/src/main/java/org/pf4j/demo/DemoPluginFactory.java new file mode 100644 index 0000000..432dceb --- /dev/null +++ b/demo/app/src/main/java/org/pf4j/demo/DemoPluginFactory.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.pf4j.demo; + +import org.pf4j.DefaultPluginFactory; +import org.pf4j.Plugin; +import org.pf4j.PluginWrapper; +import org.pf4j.demo.api.PluginContext; + +import java.lang.reflect.Constructor; + +class DemoPluginFactory extends DefaultPluginFactory { + + @Override + protected Plugin createInstance(Class<?> pluginClass, PluginWrapper pluginWrapper) { + PluginContext context = new PluginContext(pluginWrapper.getRuntimeMode()); + try { + Constructor<?> constructor = pluginClass.getConstructor(PluginContext.class); + return (Plugin) constructor.newInstance(context); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + return null; + } + +} diff --git a/demo/app/src/main/java/org/pf4j/demo/DemoPluginManager.java b/demo/app/src/main/java/org/pf4j/demo/DemoPluginManager.java new file mode 100644 index 0000000..2571a3e --- /dev/null +++ b/demo/app/src/main/java/org/pf4j/demo/DemoPluginManager.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.pf4j.demo; + +import org.pf4j.DefaultExtensionFinder; +import org.pf4j.DefaultPluginFactory; +import org.pf4j.DefaultPluginManager; +import org.pf4j.ExtensionFinder; +import org.pf4j.PluginFactory; + +class DemoPluginManager extends DefaultPluginManager { + + // Use below code if you want to enable ServiceProviderExtensionFinder + /* + @Override + protected ExtensionFinder createExtensionFinder() { + DefaultExtensionFinder extensionFinder = (DefaultExtensionFinder) super.createExtensionFinder(); + extensionFinder.addServiceProviderExtensionFinder(); // to activate "HowdyGreeting" extension + + return extensionFinder; + } + */ + + @Override + protected PluginFactory createPluginFactory() { + return new DemoPluginFactory(); + } + +} |