Package org.pentaho.platform.api.engine
Interface IPluginResourceLoader
public interface IPluginResourceLoader
This class presents an abstraction layer for accessing resources from within a platform plugin. The idea is you
do not need to know how to absolutely resolve the resources you need. For example: You don't need to know the
absolute path if your resources are on a file-system. All you need to know in order to obtain a resource is the
relative path to the resource. "Relative" means relative to the base location of your plugin. For a filesystem
example, let's say that your plugin is installed in "/home/user/plugins/myplugin" and you need the file
"/home/user/plugins/myplugin/html/my.html", you would ask this class for the resource "html/my.html"
- Author:
- aphillips
-
Method Summary
Modifier and TypeMethodDescriptionfindResources
(Class<?> pluginClass, String namePattern) A searching method, yielding a list of plugin-related resources as URLs.findResources
(ClassLoader classLoader, String namePattern) getPluginSetting
(Class<?> pluginClass, String key) Searches for the plugin setting with the specified key.getPluginSetting
(Class<?> pluginClass, String key, String defaultValue) Searches for the plugin setting with the specified key.getPluginSetting
(ClassLoader pluginClassLoader, String key, String defaultValue) Searches for the plugin setting with the specified key.byte[]
getResourceAsBytes
(Class<? extends Object> pluginClass, String resourcePath) Gets a plugin-related resource in the form of an array of bytes.getResourceAsStream
(Class<?> pluginClass, String resourcePath) Gets a plugin-related resource in the form of an InputStream.getResourceAsStream
(ClassLoader classLoader, String resourcePath) Gets a plugin-related resource in the form of an InputStream.getResourceAsString
(Class<? extends Object> pluginClass, String resourcePath) Gets a plugin-related resource in the form of a String.getResourceAsString
(Class<? extends Object> pluginClass, String resourcePath, String charsetName) Gets a plugin-related resource in the form of a String.getResourceBundle
(Class<?> pluginClass, String baseName) Retrieves a localized resource bundle for the plugin represented by pluginClass.
-
Method Details
-
getResourceAsBytes
Gets a plugin-related resource in the form of an array of bytes. The relevant plugin is inferred from pluginClass. An example of resource path is "resources/html/my.html".IPluginResourceLoader
is able to resolve relative paths as it knows where to look for plugin classes and resources.- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginresourcePath
- the (relative) path to a resource- Returns:
- a resource as an array of bytes or null if the resource is not found
-
getResourceAsString
String getResourceAsString(Class<? extends Object> pluginClass, String resourcePath) throws UnsupportedEncodingException Gets a plugin-related resource in the form of a String. The relevant plugin is inferred from pluginClass. An example of resource path is "resources/html/my.html".IPluginResourceLoader
is able to resolve relative paths as it knows where to look for plugin classes and resources.This method defaults the character encoding (how this default is chosen is up to the implementor).
- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginresourcePath
- the (relative) path to a resource- Returns:
- a resource as a
String
or null if the resource is not found - Throws:
UnsupportedEncodingException
- if there is a problem encoding the string
-
getResourceAsString
String getResourceAsString(Class<? extends Object> pluginClass, String resourcePath, String charsetName) throws UnsupportedEncodingException Gets a plugin-related resource in the form of a String. The relevant plugin is inferred from pluginClass. An example of resource path is "resources/html/my.html".IPluginResourceLoader
is able to resolve relative paths as it knows where to look for plugin classes and resources.- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginresourcePath
- the (relative) path to a resourcecharsetName
- the character set to encode the string- Returns:
- a resource as a
String
or null if the resource is not found - Throws:
UnsupportedEncodingException
- if there is a problem encoding the string
-
getResourceAsStream
Gets a plugin-related resource in the form of an InputStream. The relevant plugin is inferred from pluginClass. An example of resource path is "resources/html/my.html".IPluginResourceLoader
is able to resolve relative paths as it knows where to look for plugin classes and resources.- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginresourcePath
- the (relative) path to a resource- Returns:
- a resource as an
InputStream
or null if the resource is not found
-
getResourceAsStream
Gets a plugin-related resource in the form of an InputStream. An example of resource path is "resources/html/my.html".IPluginResourceLoader
is able to resolve relative paths as it knows where to look for plugin classes and resources.- Parameters:
classLoader
- the ClassLoader which was used to load a pluginresourcePath
- the (relative) path to a resource- Returns:
- a resource as an
InputStream
or null if the resource is not found
-
findResources
A searching method, yielding a list of plugin-related resources as URLs. This method allows advanced searching by using the namePattern argument. namePattern supports '?' and '*' characters, representing single and multiple wildcard characters respectively.- Parameters:
pluginClass
-namePattern
- a resource name pattern supporting wildcards- Returns:
- a list of URLs to the matching resources or empty list if none are found
-
findResources
- See Also:
-
getResourceBundle
Retrieves a localized resource bundle for the plugin represented by pluginClass. baseName is a fully qualified package name or relative path to a bundle name. For example, a baseName of "resources.messages" might represent:- (localized) class messages.class in the resources package
- (localized) messages.properties file in the resource package (of a jar)
- (localized) messages.properties file in the resources folder at the base of the plugin folder
getResourceBundle(Class, String)
should behave similar toResourceBundle.getBundle(String)
- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginbaseName
- points to a particular resource bundle- Returns:
- a
ResourceBundle
- Throws:
MissingResourceException
- if resource bundle not found- See Also:
-
getPluginSetting
Searches for the plugin setting with the specified key. The method returnsnull
if the setting is not found.- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginkey
- the setting key- Returns:
- the plugin setting value or null if setting not found
-
getPluginSetting
Searches for the plugin setting with the specified key.- Parameters:
pluginClass
- a class that is part of the plugin package, used to identify the pluginkey
- the setting keydefaultValue
- the value to return if no value is found for the setting key- Returns:
- the plugin setting value or defaultValue if setting not found
-
getPluginSetting
Searches for the plugin setting with the specified key.- Parameters:
pluginClassLoader
- the classloader that was used to load the plugin, must be a PluginClassLoaderkey
- the setting keydefaultValue
- the value to return if no value is found for the setting key- Returns:
- the plugin setting value or defaultValue if setting not found
-