Package ghidra.framework.plugintool.util
Class PluginUtils
java.lang.Object
ghidra.framework.plugintool.util.PluginUtils
Utility class for plugin-related methods.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void
assertUniquePluginName
(Class<? extends Plugin> pluginClass) Ensures the specified Plugin has a unique name among all Plugin classes found in the current ClassSearcher's reach.findLoadedPlugins
(Set<ExtensionDetails> extensions) Finds all plugin classes loaded from a given set of extensions.Returns the Class for a Plugin, by class name.getDefaultProviderForServiceClass
(Class<?> serviceClass) Returns the Plugin Class that is specified as being the defaultProvider for a Service, or null if no default provider is specified.static List<PluginDescription>
getPluginDescriptions
(PluginTool tool, List<Class<?>> plugins) Finds allPluginDescription
objects that match a given set of plugin classes.static String
getPluginNameFromClass
(Class<? extends Plugin> pluginClass) Returns the name of a Plugin based on its class.static <T extends Plugin>
TinstantiatePlugin
(Class<T> pluginClass, PluginTool tool) Returns a new instance of aPlugin
.static boolean
isValidPluginClass
(Class<? extends Plugin> pluginClass) Returns true if the specified Plugin class is well-formed and meets requirements for Ghidra Plugins: Has a constructor with a signature ofThePlugin(PluginTool tool)
Has a@PluginInfo
annotation.
-
Constructor Details
-
PluginUtils
public PluginUtils()
-
-
Method Details
-
getPluginDescriptions
public static List<PluginDescription> getPluginDescriptions(PluginTool tool, List<Class<?>> plugins) Finds allPluginDescription
objects that match a given set of plugin classes. This effectively tells the caller which of the given plugins have been loaded by the class loader.eg: If the list of plugin classes contains the class "FooPlugin.class", this method will search the
PluginConfigurationModel
for any plugin with the name "FooPlugin" and return itsPluginDescription
.Note that this method does not take path/package information into account when finding plugins; in the example above, if there is more than one plugin with the name "FooPlugin", only one will be found (the one found is not guaranteed to be the first).
- Parameters:
tool
- the current toolplugins
- the list of plugin classes to search for- Returns:
- list of plugin descriptions
-
findLoadedPlugins
Finds all plugin classes loaded from a given set of extensions.- Parameters:
extensions
- set of extensions to search- Returns:
- list of loaded plugin classes, or empty list if none found
-
instantiatePlugin
public static <T extends Plugin> T instantiatePlugin(Class<T> pluginClass, PluginTool tool) throws PluginException Returns a new instance of aPlugin
.- Parameters:
pluginClass
- Specific Plugin Classtool
- ThePluginTool
that is the parent of the new Plugin- Returns:
- a new Plugin instance, never NULL.
- Throws:
PluginException
- if problem constructing the Plugin instance.
-
forName
Returns the Class for a Plugin, by class name.- Parameters:
pluginClassName
- String class name- Returns:
- Class that is a Plugin, never null.
- Throws:
PluginException
- if specified class does not exist or is not a Plugin.
-
getDefaultProviderForServiceClass
Returns the Plugin Class that is specified as being the defaultProvider for a Service, or null if no default provider is specified.- Parameters:
serviceClass
- Service interface class- Returns:
- Plugin class that provides the specified service
-
getPluginNameFromClass
Returns the name of a Plugin based on its class.- Parameters:
pluginClass
- Class to get name from- Returns:
- String name, based on Class's getSimpleName()
-
assertUniquePluginName
public static void assertUniquePluginName(Class<? extends Plugin> pluginClass) throws PluginException Ensures the specified Plugin has a unique name among all Plugin classes found in the current ClassSearcher's reach.- Parameters:
pluginClass
- Class- Throws:
PluginException
- throws exception if Plugin class is not uniquely named
-
isValidPluginClass
Returns true if the specified Plugin class is well-formed and meets requirements for Ghidra Plugins:- Has a constructor with a signature of
ThePlugin(PluginTool tool)
- Has a
@PluginInfo
annotation.
See
Plugin
.- Parameters:
pluginClass
- Class to examine.- Returns:
- boolean true if well formed.
- Has a constructor with a signature of
-