Class JNLPFile


  • public class JNLPFile
    extends java.lang.Object

    Provides methods to access the information in a Java Network Launching Protocol (JNLP) file. The Java Network Launching Protocol specifies in an XML file the information needed to load, cache, and run Java code over the network and in a secure environment.

    This class represents the overall information about a JNLP file from the jnlp element. Other information is accessed through objects that represent the elements of a JNLP file (information, resources, application-desc, etc). References to these objects are obtained by calling the getInformation, getResources, getSecurity, etc methods.

    Version:
    $Revision: 1.21 $
    • Field Detail

      • LOG

        private static final Logger LOG
      • JNLP_ROOT_ELEMENT

        public static final java.lang.String JNLP_ROOT_ELEMENT
        See Also:
        Constant Field Values
      • VERSION_ATTRIBUTE

        public static final java.lang.String VERSION_ATTRIBUTE
        See Also:
        Constant Field Values
      • CODEBASE_ATTRIBUTE

        public static final java.lang.String CODEBASE_ATTRIBUTE
        See Also:
        Constant Field Values
      • SPEC_VERSION_DEFAULT

        public static final java.lang.String SPEC_VERSION_DEFAULT
        See Also:
        Constant Field Values
      • sourceLocation

        protected java.net.URL sourceLocation
        the location this JNLP file was created from
      • fileLocation

        protected final java.net.URL fileLocation
        the network location of this JNLP file
      • parserSettings

        protected final ParserSettings parserSettings
        the ParserSettings which were used to parse this file
      • uniqueKey

        protected final java.lang.String uniqueKey
        A key that uniquely identifies connected instances (main jnlp+ext)
      • codeBase

        protected java.net.URL codeBase
        the URL used to resolve relative URLs in the file
      • fileVersion

        protected VersionId fileVersion
        The version attribute of the jnlp element specifies the version of the application being launched, as well as the version of the JNLP file itself.
      • specVersion

        protected VersionString specVersion
        Specifies the versions of the specification that this JNLP file requires. The value of the attribute is specified as a version string, see JSR-56, section 3.1
      • resources

        protected java.util.List<ResourcesDesc> resources
        resources
      • sharedResources

        protected final ResourcesDesc sharedResources
        additional resources not in JNLP file (from command line)
      • entryPointDesc

        protected EntryPoint entryPointDesc
        the application entry point
      • component

        protected ComponentDesc component
        the component description
      • security

        protected SecurityDesc security
        the security descriptor
      • defaultLocale

        protected java.util.Locale defaultLocale
        the default JVM locale
      • defaultOS

        protected java.lang.String defaultOS
        the default OS
      • defaultArch

        protected java.lang.String defaultArch
        the default arch
      • missingSignedJNLP

        private boolean missingSignedJNLP
        A signed JNLP file is missing from the main jar
      • containsSpecialProperties

        private boolean containsSpecialProperties
        JNLP file contains special properties
      • generalProperties

        private final java.lang.String[] generalProperties
        List of acceptable properties (not-special)
      • manifestAttributesReader

        private final ManifestAttributesReader manifestAttributesReader
        important manifests' attributes
    • Constructor Detail

      • JNLPFile

        protected JNLPFile()
        Empty stub, allowing child classes to override the constructor
      • JNLPFile

        JNLPFile​(java.io.InputStream input,
                 java.net.URL location,
                 ParserSettings settings,
                 java.lang.String uniqueKey)
          throws java.io.IOException,
                 ParseException
        Create a JNLPFile from a URL and a version, checking for updates using the specified policy.
        Parameters:
        location - the location of the JNLP file
        settings - the parser settings to use while parsing the file
        Throws:
        java.io.IOException - if an IO exception occurred
        ParseException - if the JNLP file was invalid
      • JNLPFile

        public JNLPFile​(java.io.InputStream input,
                        ParserSettings settings)
                 throws ParseException
        Create a JNLPFile from an input stream.
        Parameters:
        input - input stream from which create jnlp file
        settings - settings of parser
        Throws:
        ParseException - if the JNLP file was invalid
      • JNLPFile

        public JNLPFile​(java.io.InputStream input,
                        java.net.URL codebase,
                        ParserSettings settings)
                 throws ParseException
        Create a JNLPFile from an input stream.
        Parameters:
        input - input stream of JNLP file.
        codebase - codebase to use if not specified in JNLP file..
        settings - the ParserSettings to use when parsing
        Throws:
        ParseException - if the JNLP file was invalid
    • Method Detail

      • getTitle

        public java.lang.String getTitle()
        Returns:
        the JNLP file's best localized title. This method returns the same value as InformationDesc.getTitle().

        Since jdk7 u45, also manifest title, and mainclass are taken to consideration; See PluginBridge

      • getTitleImpl

        private java.lang.String getTitleImpl()
      • getTitleFromJnlp

        public java.lang.String getTitleFromJnlp()
        Returns:
        the JNLP file's best localized title. This method returns the same value as InformationDesc.getTitle().
      • getTitleFromManifest

        public java.lang.String getTitleFromManifest()
      • getVendor

        public java.lang.String getVendor()
        Returns:
        the JNLP file's best localized vendor. This method returns the same value as InformationDesc.getVendor().
      • getVendorImpl

        private java.lang.String getVendorImpl()
      • getSourceLocation

        public java.net.URL getSourceLocation()
        Returns:
        the JNLP file's network location as specified in the JNLP file.
      • getFileLocation

        public java.net.URL getFileLocation()
        Returns:
        the location of the file parsed to create the JNLP file, or null if it was not created from a URL.
      • getUniqueKey

        public java.lang.String getUniqueKey()
        Returns:
        the location of the parent file if it exists, null otherwise
      • getParserSettings

        public ParserSettings getParserSettings()
        Returns:
        the ParserSettings that was used to parse this file
      • getFileVersion

        public VersionId getFileVersion()
        Returns:
        the JNLP file's version.
      • getSpecVersion

        public VersionString getSpecVersion()
        Returns the versions of the specification that this JNLP file requires. The value of the attribute is specified as a version string, see JSR-56, section 3.1
        Returns:
        the versions of the specification that this JNLP file requires.
      • getCodeBase

        public java.net.URL getCodeBase()
        Returns:
        the codebase URL for the JNLP file.
      • getNotNullProbableCodeBase

        public java.net.URL getNotNullProbableCodeBase()
        It is not recommended to use this method for internals of itw - use normal getCodeBase rather, as null is expected always except toString calls.

        If you are not sure, use getCodeBase and check null as you need. See that this method is used mostly for xtendedAppletSecuriyty dialogs.

        Returns:
        the codebase URL for the JNLP file or url of location of calling file (jnlp, hreffed jnlp, or directly html)
      • getInformation

        public InformationDesc getInformation()
        Returns:
        the information section of the JNLP file as viewed through the default locale.
      • getInformation

        public InformationDesc getInformation​(java.util.Locale locale)
        Parameters:
        locale - preferred locale of information element
        Returns:
        the information section of the JNLP file as viewed through the specified locale.
      • getInformation

        public InformationDesc getInformation​(java.util.Locale locale,
                                              java.lang.String os,
                                              java.lang.String arch)
        Parameters:
        locale - preferred locale of information element
        os - preferred os of information element
        arch - preferred arch of information element
        Returns:
        the information section of the JNLP file as viewed through the specified locale.
      • getUpdate

        public UpdateDesc getUpdate()
        Returns:
        the update section of the JNLP file.
      • getSecurity

        public SecurityDesc getSecurity()
        Returns:
        the security section of the JNLP file.
      • getApplicationPermissionLevel

        public ApplicationPermissionLevel getApplicationPermissionLevel()
        Returns:
        the requested security level of the application represented by this JNLP file.
      • getAppletPermissionLevel

        public AppletPermissionLevel getAppletPermissionLevel()
        Returns:
        the requested security level of the applet represented by this JNLP file.
      • getResources

        public ResourcesDesc getResources()
        Returns:
        the resources section of the JNLP file as viewed through the default locale and the os.name and os.arch properties.
      • getResources

        public ResourcesDesc getResources​(java.util.Locale locale,
                                          java.lang.String os,
                                          java.lang.String arch)
        Parameters:
        locale - preferred locale of resource
        os - preferred os of resource
        arch - preferred arch of resource
        Returns:
        the resources section of the JNLP file for the specified locale, os, and arch.
      • getResourcesDescs

        public ResourcesDesc[] getResourcesDescs()
        Returns:
        the resources section of the JNLP file as viewed through the default locale and the os.name and os.arch properties. XXX: Before overriding this method or changing its implementation, read the comment in JNLPFile.getDownloadOptionsForJar(JARDesc).
      • getResourcesDescs

        private java.util.List<ResourcesDesc> getResourcesDescs​(java.util.Locale locale,
                                                                java.lang.String os,
                                                                java.lang.String arch)
      • getEntryPointDesc

        public EntryPoint getEntryPointDesc()
        Returns:
        an object of one of the following types: AppletDesc, ApplicationDesc and InstallerDesc
      • getApplet

        public AppletDesc getApplet()
        Returns:
        the launch information for an applet.
        Throws:
        java.lang.UnsupportedOperationException - if there is no applet information
      • getApplication

        public ApplicationDesc getApplication()
        Returns:
        the launch information for an application.
        Throws:
        java.lang.UnsupportedOperationException - if there is no application information
      • getComponent

        public ComponentDesc getComponent()
        Returns:
        the launch information for a component.
        Throws:
        java.lang.UnsupportedOperationException - if there is no component information
      • getInstaller

        public InstallerDesc getInstaller()
        Returns:
        the launch information for an installer.
        Throws:
        java.lang.UnsupportedOperationException - if there is no installer information
      • isApplet

        public boolean isApplet()
        Returns:
        whether the launch descriptor describes an Applet.
      • isApplication

        public boolean isApplication()
        Returns:
        whether the launch descriptor describes an Application.
      • isComponent

        public boolean isComponent()
        Returns:
        whether the launch descriptor describes a Component.
      • isInstaller

        public boolean isInstaller()
        Returns:
        whether the launch descriptor describes an Installer.
      • setDefaults

        public void setDefaults​(java.lang.String os,
                                java.lang.String arch,
                                java.util.Locale locale)
        Sets the default view of the JNLP file returned by getInformation, getResources, etc. If unset, the defaults are the properties os.name, os.arch, and the locale returned by Locale.getDefault().
        Parameters:
        os - preferred os of resource
        arch - preferred arch of resource
        locale - preferred locale of resource
      • parse

        private void parse​(java.io.InputStream input,
                           java.net.URL location,
                           java.net.URL forceCodebase)
                    throws ParseException
        Initialize the JNLPFile fields. Private because it's called from the constructor.
        Parameters:
        location - the file location or null
        Throws:
        ParseException
      • checkForSpecialProperties

        private void checkForSpecialProperties()
        Inspects the JNLP file to check if it contains any special properties
      • needsNewVM

        public boolean needsNewVM()
        Returns:
        true if the JNLP file specifies things that can only be applied on a new vm (eg: different max heap memory)
      • getNewVMArgs

        public java.util.List<java.lang.String> getNewVMArgs()
        Returns:
        a list of args to pass to the new JVM based on this JNLP file
      • getDownloadOptions

        public DownloadOptions getDownloadOptions()
        Returns:
        the download options to use for downloading jars listed in this jnlp file.
      • requiresSignedJNLPWarning

        public boolean requiresSignedJNLPWarning()
        Returns a boolean after determining if a signed JNLP warning should be displayed in the 'More Information' panel.
        Returns:
        true if a warning should be displayed; otherwise false
      • setSignedJNLPAsMissing

        public void setSignedJNLPAsMissing()
        Informs that a signed JNLP file is missing in the main jar
      • createShortcutNameFromLocation

        private java.lang.String createShortcutNameFromLocation()
      • getShortcutName

        public java.lang.String getShortcutName()