Class JNLPFile

java.lang.Object
net.sourceforge.jnlp.JNLPFile

public class JNLPFile extends 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 Details

    • LOG

      private static final Logger LOG
    • JNLP_ROOT_ELEMENT

      public static final String JNLP_ROOT_ELEMENT
      See Also:
    • SPEC_ATTRIBUTE

      public static final String SPEC_ATTRIBUTE
      See Also:
    • VERSION_ATTRIBUTE

      public static final String VERSION_ATTRIBUTE
      See Also:
    • HREF_ATTRIBUTE

      public static final String HREF_ATTRIBUTE
      See Also:
    • CODEBASE_ATTRIBUTE

      public static final String CODEBASE_ATTRIBUTE
      See Also:
    • SPEC_VERSION_DEFAULT

      public static final String SPEC_VERSION_DEFAULT
      See Also:
    • sourceLocation

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

      protected final 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 String uniqueKey
      A key that uniquely identifies connected instances (main jnlp+ext)
    • codeBase

      protected 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
    • infos

      protected List<InformationDesc> infos
      information
    • update

      protected UpdateDesc update
    • resources

      protected 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 Locale defaultLocale
      the default JVM locale
    • defaultOS

      protected String defaultOS
      the default OS
    • defaultArch

      protected 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 String[] generalProperties
      List of acceptable properties (not-special)
    • manifestAttributesReader

      private final ManifestAttributesReader manifestAttributesReader
      important manifests' attributes
    • TITLE_NOT_FOUND

      private static final String TITLE_NOT_FOUND
      See Also:
    • FAKE_TITLE

      private static final String FAKE_TITLE
      See Also:
  • Constructor Details

    • JNLPFile

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

      JNLPFile(InputStream input, URL location, ParserSettings settings, String uniqueKey) throws 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:
      IOException - if an IO exception occurred
      ParseException - if the JNLP file was invalid
    • JNLPFile

      public JNLPFile(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(InputStream input, 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 Details

    • getTitle

      public 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

    • getTitle

      public String getTitle(boolean kill) throws MissingTitleException
      Throws:
      MissingTitleException
    • getTitleImpl

      private String getTitleImpl()
    • getTitleFromJnlp

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

      public String getTitleFromManifest()
    • getVendor

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

      public String getVendor(boolean kill) throws MissingVendorException
      Throws:
      MissingVendorException
    • getVendorImpl

      private String getVendorImpl()
    • getSourceLocation

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

      public 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 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 URL getCodeBase()
      Returns:
      the codebase URL for the JNLP file.
    • getNotNullProbableCodeBase

      public 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(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(Locale locale, String os, 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(Locale locale, String os, 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 List<ResourcesDesc> getResourcesDescs(Locale locale, String os, 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:
      UnsupportedOperationException - if there is no applet information
    • getApplication

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

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

      public InstallerDesc getInstaller()
      Returns:
      the launch information for an installer.
      Throws:
      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(String os, String arch, 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(InputStream input, URL location, 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 List<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
    • getManifestAttributesReader

      public ManifestAttributesReader getManifestAttributesReader()
    • createShortcutNameFromLocation

      private String createShortcutNameFromLocation()
    • getShortcutName

      public String getShortcutName()