Class Parser

java.lang.Object
net.sourceforge.jnlp.Parser

public final class Parser extends Object
Contains methods to parse an XML document into a JNLPFile. Implements JNLP specification version 1.0.
Version:
$Revision: 1.13 $
  • Field Details

    • LOG

      private static final Logger LOG
    • MAINCLASS

      private static String MAINCLASS
    • anyWhiteSpace

      private static final Pattern anyWhiteSpace
    • file

      private final JNLPFile file
      the file reference
    • root

      private final XmlNode root
      the root node
    • spec

      private final VersionString spec
      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
    • base

      private final URL base
      the base URL that all hrefs are relative to
    • codebase

      private URL codebase
      the codebase URL
    • fileLocation

      private final URL fileLocation
      the file URL
    • strict

      private final boolean strict
      whether to throw errors on non-fatal errors.
    • allowExtensions

      private final boolean allowExtensions
      whether to allow extensions to the JNLP specification
  • Constructor Details

    • Parser

      public Parser(JNLPFile file, URL base, XmlNode root, ParserSettings settings) throws ParseException
      Create a parser for the JNLP file. If the location parameters is not null it is used as the default codebase (does not override value of jnlp element's href attribute).

      The root node may be normalized as a side effect of this constructor.

      Parameters:
      file - the (uninitialized) file reference
      base - if codebase is not specified, a default base for relative URLs
      root - the root node
      settings - the parser settings to use when parsing the JNLP file
      Throws:
      ParseException - if the JNLP file is invalid
    • Parser

      public Parser(JNLPFile file, URL base, XmlNode root, ParserSettings settings, URL codebase) throws ParseException
      Create a parser for the JNLP file. If the location parameters is not null it is used as the default codebase (does not override value of jnlp element's href attribute).

      The root node may be normalized as a side effect of this constructor.

      Parameters:
      file - the (uninitialized) file reference
      base - if codebase is not specified, a default base for relative URLs
      root - the root node
      settings - the parser settings to use when parsing the JNLP file
      codebase - codebase to use if we did not parse one from JNLP file.
      Throws:
      ParseException - if the JNLP file is invalid
  • Method Details

    • addSlash

      private URL addSlash(URL source)
      Returns a URL with a trailing / appended to it if there is no trailing slash on the specified URL.
    • getFileVersion

      public VersionId getFileVersion()
      Returns the version of the application being launched, as well as the version of the JNLP file itself.
      Returns:
      version of file
    • getFileLocation

      public URL getFileLocation()
      Returns the file location.
      Returns:
      url of source file
    • getCodeBase

      public URL getCodeBase()
      Returns:
      the codebase.
    • 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 specification version.
    • getUpdate

      UpdateDesc getUpdate(XmlNode parent) throws ParseException
      Throws:
      ParseException
    • getResources

      public List<ResourcesDesc> getResources(XmlNode parent, boolean j2se) throws ParseException
      Parameters:
      parent - the parent node (either jnlp or j2se)
      j2se - true if the resources are located under a j2se or java node
      Returns:
      all of the ResourcesDesc elements under the specified node (jnlp or j2se).
      Throws:
      ParseException - if the JNLP file is invalid
    • getResourcesDesc

      private ResourcesDesc getResourcesDesc(XmlNode node, boolean j2se) throws ParseException
      Parameters:
      node - the resources node
      j2se - true if the resources are located under a j2se or java node
      Returns:
      the ResourcesDesc element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • getJRE

      private JREDesc getJRE(XmlNode node) throws ParseException
      Parameters:
      node - the j2se/java node
      Returns:
      the JRE element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • checkJreVersionWithSystemProperty

      private static void checkJreVersionWithSystemProperty(VersionString version, boolean strict)
    • getJAR

      private JARDesc getJAR(XmlNode node) throws ParseException
      Returns the JAR element at the specified node.
      Parameters:
      node - the jar or nativelib node
      Throws:
      ParseException - if the JNLP file is invalid
    • getExtension

      private ExtensionDesc getExtension(XmlNode node) throws ParseException
      Parameters:
      node - the extension node
      Returns:
      the Extension element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • getProperty

      private PropertyDesc getProperty(XmlNode node) throws ParseException
      Parameters:
      node - the property node
      Returns:
      the Property element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • getPackage

      private PackageDesc getPackage(XmlNode node) throws ParseException
      Parameters:
      node - the package node
      Returns:
      the Package element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • checkForInformation

      void checkForInformation() throws RequiredElementException
      Make sure a title and vendor are present and nonempty and localized as best matching as possible for the JVM's current locale. Fallback to a generalized title and vendor otherwise. If none is found, throw an exception. Additionally prints homepage, description, title and vendor to stdout if in Debug mode.
      Throws:
      RequiredElementException
    • getInformationDescs

      public List<InformationDesc> getInformationDescs(XmlNode parent) throws ParseException
      Search through the information elements in the order specified in the JNLP file (resp. the specified node).

      For each information element, it checks if the value specified in the locale attribute matches the current locale. If a match is found, the values specified in that information element will be used, possibly overriding values found in previous information elements. Thus, the locale-independent information needs only to be specified once, in the information element without the locale attribute.

      Parameters:
      parent - the parent node containing the information elements in the order specified in the JNLP file
      Returns:
      all of the information elements under the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • getInformationDesc

      private InformationDesc getInformationDesc(XmlNode node) throws ParseException
      Returns the information element at the specified node.
      Parameters:
      node - the node containing the information element as specified in the JNLP file
      Returns:
      the information element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • addInfo

      protected void addInfo(InformationDesc info, XmlNode node, String mod, Object value)
      Adds a key,value pair to the information object.
      Parameters:
      info - the information object
      node - node name to be used as the key
      mod - key name appended with "-"+mod if not null
      value - the info object to add (icon or string)
    • getIcon

      private IconDesc getIcon(XmlNode node) throws ParseException
      Parameters:
      node - the icon node
      Returns:
      the icon element at the specified node.
      Throws:
      ParseException - if the JNLP file is invalid
    • getIconKind

      private static IconKind getIconKind(XmlNode node)
    • getSecurity

      public SecurityDesc getSecurity(XmlNode parent) throws ParseException
      Parameters:
      parent - the parent node
      Returns:
      the security descriptor element. If no security element was specified in the JNLP file then a SecurityDesc with applet permissions is returned.
      Throws:
      ParseException - if the JNLP file is invalid
    • isTrustedEnvironment

      private boolean isTrustedEnvironment()
      Returns whether the JNLP file requests a trusted execution environment.
    • getEntryPointDesc

      public EntryPoint getEntryPointDesc(XmlNode parent) throws ParseException
      Load the entry point descriptor element.
      Parameters:
      parent - the parent node
      Returns:
      the entry point descriptor element, never null
      Throws:
      ParseException - if the JNLP file is invalid
      See Also:
    • getAppletDesc

      AppletDesc getAppletDesc(XmlNode node) throws ParseException
      Parameters:
      node -
      Returns:
      the applet descriptor.
      Throws:
      ParseException - if the JNLP file is invalid
    • getAppletDescSize

      private int getAppletDescSize(String wh, XmlNode node) throws ParseException
      Throws:
      ParseException
    • tryRelativeAbsoluteSize

      private static int tryRelativeAbsoluteSize(String wh, String readedSize)
    • getApplicationDesc

      ApplicationDesc getApplicationDesc(ApplicationType applicationType, XmlNode node) throws ParseException
      Parameters:
      node -
      Returns:
      the application descriptor.
      Throws:
      ParseException - if the JNLP file is invalid
    • getComponent

      ComponentDesc getComponent(XmlNode parent) throws ParseException
      Parameters:
      parent -
      Returns:
      the component descriptor.
      Throws:
      ParseException
    • getInstallerDesc

      InstallerDesc getInstallerDesc(XmlNode node)
      Parameters:
      node -
      Returns:
      the installer descriptor.
    • getAssociation

      private AssociationDesc getAssociation(XmlNode node) throws ParseException
      Parameters:
      node -
      Returns:
      the association descriptor.
      Throws:
      ParseException
    • getShortcut

      private ShortcutDesc getShortcut(XmlNode node) throws ParseException
      Returns:
      the shortcut descriptor.
      Throws:
      ParseException
    • getMenu

      private MenuDesc getMenu(XmlNode node)
      Returns the menu element at the specified node.
      Returns:
      the menu element at the specified node
    • getRelatedContent

      private RelatedContentDesc getRelatedContent(XmlNode node) throws ParseException
      Returns:
      the related-content descriptor.
      Throws:
      ParseException
    • splitString

      private String[] splitString(String source)
      Returns:
      an array of substrings separated by spaces (spaces escaped with backslash do not separate strings). This method splits strings as per the spec except that it does replace escaped other characters with their own value.
    • getLocales

      private Locale[] getLocales(XmlNode node) throws ParseException
      Returns the locales for which the information element should be used. Several locales can be specified, separated with spaces.
      Parameters:
      node - the node with a locale attribute
      Returns:
      the Locale object(s) from a node's locale attribute.
      Throws:
      ParseException
    • getVersionString

      private VersionString getVersionString(XmlNode node, String attributeName, String defaultValue)
      Parameters:
      node - the node
      attributeName - the attribute name
      defaultValue - default if no such attribute
      Returns:
      a version-string from the specified attribute and default value.
    • getOptionalMainClass

      private String getOptionalMainClass(XmlNode node)
    • getMainClass

      private String getMainClass(XmlNode node, boolean required) throws ParseException
      Throws:
      ParseException
    • cleanMainClassAttribute

      private String cleanMainClassAttribute(String main) throws ParseException
      Throws:
      ParseException