Comments (6)
Is https://github.com/decebals/pf4j/blob/master/pf4j/src/main/java/ro/fortsoft/pf4j/DefaultPluginManager.java#L559 what you are looking for?
from pf4j.
I tried to use it like this:
...
pluginManager.startPlugins();
myExtensions = pluginManager.getExtensions(IMyExtensionPoint.class);
for (IMyExtensionPoint currentExtension: myExtensions) {
Plugin plugin = pluginManager.whichPlugin(currentExtension.getClass()).getPlugin();
...
}
...
and it couldn't find the plugin, to the extension (classloaders where not equal..)
If this helps:
- My extensions extend a class: AbstractExtension (extends LogOutputStream implements IMyExtensionPoint, IMyExtensionPoint extends ExtensionPoint)
- in whichPlugin() the classloader of MyExtension.class is the default app launch class loader...
My current workaround for this problem:
- extend DefaultPluginManager and override whichPlugin with:
@Override
public PluginWrapper whichPlugin(Class<?> clazz) {
String extensionClassName = clazz.getName();
for (PluginWrapper plugin : getStartedPlugins()) {
String pluginClassName = plugin.getPlugin().getClass().getName();
if (extensionClassName.contains(pluginClassName)) {
return plugin;
}
}
System.out.println("Couldn't find Plugin to class: "+ clazz.getName());
return null;
}
Obvious drawback...the Extension MUST be declared inside the corresponding plugin class.
from pf4j.
I am in vacation. I will come back Monday.
from pf4j.
So, your MyExtension
is a default
extension (it's declared in application not in a plugin)?
from pf4j.
MyExtension
extends AbstractExtension
extends LogOutputStream
implements IMyExtensionPoint
extends ExtensionPoint
....over a view inheritances its a default extension.
MyExtension
is implemented as inner class of the Plugin.
from pf4j.
@s3phir0th Did you solve this issue? I used Plugin.whichPlugin
in SpringExtensionFactory and everything seems OK.
from pf4j.
Related Issues (20)
- Can we code `app` project without `api`? HOT 1
- How to use it under jdk6 ? HOT 5
- The method of extracting the zip file has a path traversal vulnerability HOT 2
- CVE-2023-40826 Execution of arbitrary code via zippluginPath HOT 2
- Diagram from the "Plugin lifecycle" ? HOT 5
- Security updates release? HOT 1
- org.pf4j.PluginRuntimeException: Field 'id' cannot be empty but it exists HOT 3
- Where is the correct "entry point"? HOT 4
- Unload broken plugins HOT 1
- Load Plugin JAR Resource from Inside Plugin Code HOT 3
- LegacyExtensionFinder finds duplicate extensions
- Support Kotlin KSP with PF4J HOT 3
- Getting extensions by class when plugin is not started HOT 6
- Question: How to add extension point from another plugin for another plugin? HOT 3
- Feature request: Passing context variables HOT 2
- working on setting up a plugin store utilizing pf4j for a SaaS platform HOT 6
- define the execution sequence of extensions across the plugins HOT 7
- Is pf4j compatible with arrch64 architecture? HOT 5
- Method AbstractPluginManager#loadPlugins logs and return silently for resolve plugins errors
- enhance the ModuleclassLoader to support dependency class load HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pf4j.