public class JarPluginProviderLoader extends java.lang.Object implements ProviderLoader, FileCache.Expireable, PluginResourceLoader, PluginMetadata, java.io.Closeable
JavaClassProviderLoadable
Modifier and Type | Class and Description |
---|---|
protected class |
JarPluginProviderLoader.CachedJar
Holds the cached jar file, dir, libs list and class and resource loaders for a jar plugin
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CACHED_JAR_TIMESTAMP_FORMAT |
protected java.io.File |
cachedir |
protected JarPluginProviderLoader.CachedJar |
cachedJar |
static java.lang.String |
JAR_PLUGIN_VERSION |
static java.lang.String |
JAR_PLUGIN_VERSION_1_2 |
static java.lang.String |
JAR_PLUGIN_VERSION_2_0 |
protected java.util.Date |
loadedDate |
protected boolean |
loadLibsFirst |
static VersionCompare |
LOWEST_JAR_PLUGIN_VERSION |
protected java.io.File |
pluginJar |
protected java.io.File |
pluginJarCacheDirectory |
static java.lang.String |
RESOURCES_DIR_DEFAULT |
static java.lang.String |
RUNDECK_PLUGIN_ARCHIVE |
static java.lang.String |
RUNDECK_PLUGIN_AUTHOR |
static java.lang.String |
RUNDECK_PLUGIN_CLASSNAMES |
static java.lang.String |
RUNDECK_PLUGIN_DATE |
static java.lang.String |
RUNDECK_PLUGIN_DESCRIPTION |
static java.lang.String |
RUNDECK_PLUGIN_FILE_VERSION |
static java.lang.String |
RUNDECK_PLUGIN_LIBS |
static java.lang.String |
RUNDECK_PLUGIN_LIBS_LOAD_FIRST |
static java.lang.String |
RUNDECK_PLUGIN_LICENSE |
static java.lang.String |
RUNDECK_PLUGIN_NAME |
static java.lang.String |
RUNDECK_PLUGIN_RESOURCES |
static java.lang.String |
RUNDECK_PLUGIN_RESOURCES_DIR |
static java.lang.String |
RUNDECK_PLUGIN_RUNDECK_COMPAT_VER |
static java.lang.String |
RUNDECK_PLUGIN_SOURCE_LINK |
static java.lang.String |
RUNDECK_PLUGIN_TAGS |
static java.lang.String |
RUNDECK_PLUGIN_TARGET_HOST_COMPAT |
static java.lang.String |
RUNDECK_PLUGIN_THIRD_PARTY_DEPS |
static java.lang.String |
RUNDECK_PLUGIN_URL |
static java.lang.String |
RUNDECK_PLUGIN_VERSION |
static VersionCompare |
SUPPORTS_RESOURCES_PLUGIN_VERSION |
Constructor and Description |
---|
JarPluginProviderLoader(java.io.File pluginJar,
java.io.File pluginJarCacheDirectory,
java.io.File cachedir) |
JarPluginProviderLoader(java.io.File pluginJar,
java.io.File pluginJarCacheDirectory,
java.io.File cachedir,
boolean loadLibsFirst) |
Modifier and Type | Method and Description |
---|---|
boolean |
canLoadForService(FrameworkSupportService service) |
void |
close()
Close class loaders and delete cached files
|
protected java.io.File |
createCachedJar(java.io.File dir,
java.lang.String jarName)
Creates a single cached version of the pluginJar located within pluginJarCacheDirectory
deleting all existing versions of pluginJar
|
boolean |
equals(java.lang.Object o) |
void |
expire()
Expire the loader cache item
|
protected java.util.Collection<java.io.File> |
extractDependentLibs(java.io.File cachedir)
Extract the dependent libs and return the extracted jar files
|
protected java.io.File |
generateCachedJarDir(java.lang.String ident) |
protected java.lang.String |
generateCachedJarIdentity() |
protected java.lang.String |
generateCachedJarName(java.lang.String ident) |
java.lang.String[] |
getClassnames()
Get the declared list of provider classnames for the file
|
java.util.Date |
getDateLoaded() |
java.io.File |
getFile() |
java.lang.String |
getFilename() |
java.lang.String |
getPluginArtifactName() |
java.lang.String |
getPluginAuthor() |
java.util.Date |
getPluginDate() |
java.lang.String |
getPluginDescription() |
java.lang.String |
getPluginFileVersion() |
java.lang.String |
getPluginId()
This id is generated off of the plugin name.
|
java.lang.String |
getPluginLicense() |
java.lang.String |
getPluginName() |
java.lang.String |
getPluginSourceLink() |
java.lang.String |
getPluginThirdPartyDependencies() |
java.lang.String |
getPluginType() |
java.lang.String |
getPluginUrl() |
java.lang.String |
getPluginVersion()
Get the version of the plugin, not the file version
|
java.lang.String |
getRundeckCompatibilityVersion() |
java.util.List<java.lang.String> |
getTags() |
java.lang.String |
getTargetHostCompatibility() |
int |
hashCode() |
boolean |
isClosed() |
protected boolean |
isEquivalentPluginJar(java.io.File other) |
boolean |
isExpired() |
boolean |
isLoaderFor(ProviderIdent ident)
Return true if the file has a class that provides the ident.
|
static boolean |
isValidJarPlugin(java.io.File file)
Return true if the file is a valid jar plugin file
|
java.util.List<ProviderIdent> |
listProviders()
List providers available
|
java.util.List<java.lang.String> |
listResources() |
<T> T |
load(PluggableService<T> service,
java.lang.String providerName)
Load provider instance for the service
|
<T> CloseableProvider<T> |
loadCloseable(PluggableService<T> service,
java.lang.String providerName)
Return a closeable provider instance
|
java.io.InputStream |
openResourceStreamFor(java.lang.String path)
Open a stream to load a resource
|
public static final java.lang.String RESOURCES_DIR_DEFAULT
public static final java.lang.String RUNDECK_PLUGIN_ARCHIVE
public static final java.lang.String RUNDECK_PLUGIN_CLASSNAMES
public static final java.lang.String RUNDECK_PLUGIN_RESOURCES
public static final java.lang.String RUNDECK_PLUGIN_RESOURCES_DIR
public static final java.lang.String RUNDECK_PLUGIN_LIBS
public static final java.lang.String JAR_PLUGIN_VERSION
public static final java.lang.String JAR_PLUGIN_VERSION_1_2
public static final java.lang.String JAR_PLUGIN_VERSION_2_0
public static final VersionCompare SUPPORTS_RESOURCES_PLUGIN_VERSION
public static final VersionCompare LOWEST_JAR_PLUGIN_VERSION
public static final java.lang.String RUNDECK_PLUGIN_NAME
public static final java.lang.String RUNDECK_PLUGIN_VERSION
public static final java.lang.String RUNDECK_PLUGIN_FILE_VERSION
public static final java.lang.String RUNDECK_PLUGIN_AUTHOR
public static final java.lang.String RUNDECK_PLUGIN_URL
public static final java.lang.String RUNDECK_PLUGIN_DATE
public static final java.lang.String RUNDECK_PLUGIN_LIBS_LOAD_FIRST
public static final java.lang.String CACHED_JAR_TIMESTAMP_FORMAT
public static final java.lang.String RUNDECK_PLUGIN_RUNDECK_COMPAT_VER
public static final java.lang.String RUNDECK_PLUGIN_DESCRIPTION
public static final java.lang.String RUNDECK_PLUGIN_LICENSE
public static final java.lang.String RUNDECK_PLUGIN_TAGS
public static final java.lang.String RUNDECK_PLUGIN_THIRD_PARTY_DEPS
public static final java.lang.String RUNDECK_PLUGIN_SOURCE_LINK
public static final java.lang.String RUNDECK_PLUGIN_TARGET_HOST_COMPAT
protected final java.io.File pluginJar
protected final java.io.File pluginJarCacheDirectory
protected final java.io.File cachedir
protected final boolean loadLibsFirst
protected JarPluginProviderLoader.CachedJar cachedJar
protected java.util.Date loadedDate
public JarPluginProviderLoader(java.io.File pluginJar, java.io.File pluginJarCacheDirectory, java.io.File cachedir)
public JarPluginProviderLoader(java.io.File pluginJar, java.io.File pluginJarCacheDirectory, java.io.File cachedir, boolean loadLibsFirst)
public boolean canLoadForService(FrameworkSupportService service)
canLoadForService
in interface ProviderLoader
service
- servicepublic java.util.List<java.lang.String> listResources() throws PluginException, java.io.IOException
listResources
in interface PluginResourceLoader
PluginException
java.io.IOException
public java.io.InputStream openResourceStreamFor(java.lang.String path) throws PluginException, java.io.IOException
PluginResourceLoader
openResourceStreamFor
in interface PluginResourceLoader
path
- resource path and namePluginException
- if a path is requested that was not in the pluginjava.io.IOException
- if an error occurspublic <T> CloseableProvider<T> loadCloseable(PluggableService<T> service, java.lang.String providerName) throws ProviderLoaderException
ProviderLoader
loadCloseable
in interface ProviderLoader
T
- typeservice
- serviceproviderName
- provider nameProviderLoaderException
public <T> T load(PluggableService<T> service, java.lang.String providerName) throws ProviderLoaderException
load
in interface ProviderLoader
ProviderLoaderException
public java.lang.String[] getClassnames()
public java.lang.String getPluginVersion()
getPluginVersion
in interface PluginMetadata
protected boolean isEquivalentPluginJar(java.io.File other)
protected java.lang.String generateCachedJarIdentity()
protected java.lang.String generateCachedJarName(java.lang.String ident)
protected java.io.File generateCachedJarDir(java.lang.String ident)
protected java.io.File createCachedJar(java.io.File dir, java.lang.String jarName) throws PluginException
jarName
- PluginException
protected java.util.Collection<java.io.File> extractDependentLibs(java.io.File cachedir) throws java.io.IOException
java.io.IOException
public boolean isLoaderFor(ProviderIdent ident)
isLoaderFor
in interface ProviderLoader
public java.util.List<ProviderIdent> listProviders()
ProviderLoader
listProviders
in interface ProviderLoader
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
java.io.IOException
public boolean isClosed()
public boolean isExpired()
public void expire()
expire
in interface FileCache.Expireable
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public static boolean isValidJarPlugin(java.io.File file)
public java.lang.String getFilename()
getFilename
in interface PluginMetadata
public java.io.File getFile()
getFile
in interface PluginMetadata
public java.lang.String getPluginArtifactName()
getPluginArtifactName
in interface PluginMetadata
public java.lang.String getPluginAuthor()
getPluginAuthor
in interface PluginMetadata
public java.lang.String getPluginFileVersion()
getPluginFileVersion
in interface PluginMetadata
public java.lang.String getPluginUrl()
getPluginUrl
in interface PluginMetadata
public java.util.Date getPluginDate()
getPluginDate
in interface PluginMetadata
public java.util.Date getDateLoaded()
getDateLoaded
in interface PluginMetadata
public java.lang.String getPluginName()
getPluginName
in interface PluginMetadata
public java.lang.String getPluginDescription()
getPluginDescription
in interface PluginMetadata
public java.lang.String getPluginId()
PluginMetadata
getPluginId
in interface PluginMetadata
public java.lang.String getRundeckCompatibilityVersion()
getRundeckCompatibilityVersion
in interface PluginMetadata
public java.lang.String getTargetHostCompatibility()
getTargetHostCompatibility
in interface PluginMetadata
public java.util.List<java.lang.String> getTags()
getTags
in interface PluginMetadata
public java.lang.String getPluginLicense()
getPluginLicense
in interface PluginMetadata
public java.lang.String getPluginThirdPartyDependencies()
getPluginThirdPartyDependencies
in interface PluginMetadata
public java.lang.String getPluginSourceLink()
getPluginSourceLink
in interface PluginMetadata
public java.lang.String getPluginType()
getPluginType
in interface PluginMetadata