Class JarPluginProviderLoader

    • Field Detail

      • RESOURCES_DIR_DEFAULT

        public static final java.lang.String RESOURCES_DIR_DEFAULT
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_ARCHIVE

        public static final java.lang.String RUNDECK_PLUGIN_ARCHIVE
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_CLASSNAMES

        public static final java.lang.String RUNDECK_PLUGIN_CLASSNAMES
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_RESOURCES

        public static final java.lang.String RUNDECK_PLUGIN_RESOURCES
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_RESOURCES_DIR

        public static final java.lang.String RUNDECK_PLUGIN_RESOURCES_DIR
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_LIBS

        public static final java.lang.String RUNDECK_PLUGIN_LIBS
        See Also:
        Constant Field Values
      • JAR_PLUGIN_VERSION

        public static final java.lang.String JAR_PLUGIN_VERSION
        See Also:
        Constant Field Values
      • JAR_PLUGIN_VERSION_1_2

        public static final java.lang.String JAR_PLUGIN_VERSION_1_2
        See Also:
        Constant Field Values
      • JAR_PLUGIN_VERSION_2_0

        public static final java.lang.String JAR_PLUGIN_VERSION_2_0
        See Also:
        Constant Field Values
      • SUPPORTS_RESOURCES_PLUGIN_VERSION

        public static final VersionCompare SUPPORTS_RESOURCES_PLUGIN_VERSION
      • LOWEST_JAR_PLUGIN_VERSION

        public static final VersionCompare LOWEST_JAR_PLUGIN_VERSION
      • RUNDECK_PLUGIN_NAME

        public static final java.lang.String RUNDECK_PLUGIN_NAME
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_VERSION

        public static final java.lang.String RUNDECK_PLUGIN_VERSION
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_FILE_VERSION

        public static final java.lang.String RUNDECK_PLUGIN_FILE_VERSION
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_AUTHOR

        public static final java.lang.String RUNDECK_PLUGIN_AUTHOR
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_URL

        public static final java.lang.String RUNDECK_PLUGIN_URL
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_DATE

        public static final java.lang.String RUNDECK_PLUGIN_DATE
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_LIBS_LOAD_FIRST

        public static final java.lang.String RUNDECK_PLUGIN_LIBS_LOAD_FIRST
        See Also:
        Constant Field Values
      • CACHED_JAR_TIMESTAMP_FORMAT

        public static final java.lang.String CACHED_JAR_TIMESTAMP_FORMAT
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_RUNDECK_COMPAT_VER

        public static final java.lang.String RUNDECK_PLUGIN_RUNDECK_COMPAT_VER
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_DESCRIPTION

        public static final java.lang.String RUNDECK_PLUGIN_DESCRIPTION
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_LICENSE

        public static final java.lang.String RUNDECK_PLUGIN_LICENSE
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_TAGS

        public static final java.lang.String RUNDECK_PLUGIN_TAGS
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_THIRD_PARTY_DEPS

        public static final java.lang.String RUNDECK_PLUGIN_THIRD_PARTY_DEPS
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_SOURCE_LINK

        public static final java.lang.String RUNDECK_PLUGIN_SOURCE_LINK
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_DOCS_LINK

        public static final java.lang.String RUNDECK_PLUGIN_DOCS_LINK
        See Also:
        Constant Field Values
      • RUNDECK_PLUGIN_TARGET_HOST_COMPAT

        public static final java.lang.String RUNDECK_PLUGIN_TARGET_HOST_COMPAT
        See Also:
        Constant Field Values
      • pluginJar

        protected final java.io.File pluginJar
      • pluginJarCacheDirectory

        protected final java.io.File pluginJarCacheDirectory
      • cachedir

        protected final java.io.File cachedir
      • loadLibsFirst

        protected final boolean loadLibsFirst
      • loadedDate

        protected java.util.Date loadedDate
    • Constructor Detail

      • JarPluginProviderLoader

        public JarPluginProviderLoader​(java.io.File pluginJar,
                                       java.io.File pluginJarCacheDirectory,
                                       java.io.File cachedir)
      • JarPluginProviderLoader

        public JarPluginProviderLoader​(java.io.File pluginJar,
                                       java.io.File pluginJarCacheDirectory,
                                       java.io.File cachedir,
                                       boolean loadLibsFirst)
    • Method Detail

      • canLoadForService

        public boolean canLoadForService​(FrameworkSupportService service)
        Specified by:
        canLoadForService in interface ProviderLoader
        Parameters:
        service - service
        Returns:
        true if the service can be used to load with this loader, e.g. if it implements any necessary interface
      • openResourceStreamFor

        public java.io.InputStream openResourceStreamFor​(java.lang.String path)
                                                  throws PluginException,
                                                         java.io.IOException
        Description copied from interface: PluginResourceLoader
        Open a stream to load a resource
        Specified by:
        openResourceStreamFor in interface PluginResourceLoader
        Parameters:
        path - resource path and name
        Returns:
        input stream for the resources, must be closed when finished, or null if the plugin does not support resources
        Throws:
        PluginException - if a path is requested that was not in the plugin
        java.io.IOException - if an error occurs
      • getClassnames

        public java.lang.String[] getClassnames()
        Get the declared list of provider classnames for the file
      • getPluginVersion

        public java.lang.String getPluginVersion()
        Get the version of the plugin, not the file version
        Specified by:
        getPluginVersion in interface PluginMetadata
        Returns:
      • isEquivalentPluginJar

        protected boolean isEquivalentPluginJar​(java.io.File other)
        Returns:
        true if the other jar is a copy of the pluginJar based on names returned by generateCachedJarName
      • generateCachedJarIdentity

        protected java.lang.String generateCachedJarIdentity()
        Returns:
        a generated name for the pluginJar using the last modified timestamp
      • generateCachedJarName

        protected java.lang.String generateCachedJarName​(java.lang.String ident)
        Returns:
        a generated name for the pluginJar using the last modified timestamp
      • generateCachedJarDir

        protected java.io.File generateCachedJarDir​(java.lang.String ident)
        Returns:
        a generated name for the pluginJar using the last modified timestamp
      • createCachedJar

        protected java.io.File createCachedJar​(java.io.File dir,
                                               java.lang.String jarName)
                                        throws PluginException
        Creates a single cached version of the pluginJar located within pluginJarCacheDirectory deleting all existing versions of pluginJar
        Parameters:
        jarName -
        Throws:
        PluginException
      • extractDependentLibs

        protected java.util.Collection<java.io.File> extractDependentLibs​(java.io.File cachedir)
                                                                   throws java.io.IOException
        Extract the dependent libs and return the extracted jar files
        Returns:
        the collection of extracted files
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Close class loaders and delete cached files
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • isClosed

        public boolean isClosed()
      • isExpired

        public boolean isExpired()
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • isValidJarPlugin

        public static boolean isValidJarPlugin​(java.io.File file)
        Return true if the file is a valid jar plugin file
      • getFilename

        public java.lang.String getFilename()
        Specified by:
        getFilename in interface PluginMetadata
        Returns:
        Name of file on disk
      • getFile

        public java.io.File getFile()
        Specified by:
        getFile in interface PluginMetadata
        Returns:
        Source file on disk
      • getPluginArtifactName

        public java.lang.String getPluginArtifactName()
        Specified by:
        getPluginArtifactName in interface PluginMetadata
        Returns:
        The name in plugin.yaml or the Rundeck-Plugin-Name attribute in the jar manifest
      • getPluginAuthor

        public java.lang.String getPluginAuthor()
        Specified by:
        getPluginAuthor in interface PluginMetadata
        Returns:
        author metadata
      • getPluginUrl

        public java.lang.String getPluginUrl()
        Specified by:
        getPluginUrl in interface PluginMetadata
        Returns:
        plugin URL
      • getPluginDate

        public java.util.Date getPluginDate()
        Specified by:
        getPluginDate in interface PluginMetadata
        Returns:
        build date of plugin
      • getPluginName

        public java.lang.String getPluginName()
        Specified by:
        getPluginName in interface PluginMetadata
        Returns:
        plugin name
      • getPluginId

        public java.lang.String getPluginId()
        Description copied from interface: PluginMetadata
        This id is generated off of the plugin name. It is the first 12 characters of the sha256 of the plugin name. This is set automatically by the system. No need to add it manually.
        Specified by:
        getPluginId in interface PluginMetadata
        Returns:
        plugin id
      • getRundeckCompatibilityVersion

        public java.lang.String getRundeckCompatibilityVersion()
        Specified by:
        getRundeckCompatibilityVersion in interface PluginMetadata
        Returns:
        version of Rundeck with which this plugin is compatible
      • getTargetHostCompatibility

        public java.lang.String getTargetHostCompatibility()
        Specified by:
        getTargetHostCompatibility in interface PluginMetadata
        Returns:
        os family with which this plugin is compatible
      • getTags

        public java.util.List<java.lang.String> getTags()
        Specified by:
        getTags in interface PluginMetadata
        Returns:
        tags
      • getPluginDocsLink

        public java.lang.String getPluginDocsLink()
        Specified by:
        getPluginDocsLink in interface PluginMetadata
        Returns:
        link to plugin docs
      • getPluginType

        public java.lang.String getPluginType()
        Specified by:
        getPluginType in interface PluginMetadata
        Returns:
        plugin type