Class DescriptorHandler

  • All Implemented Interfaces:
    org.xml.sax.DocumentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

    public class DescriptorHandler
    extends org.xml.sax.HandlerBase
    Inner class used by EjbJar to facilitate the parsing of deployment descriptors and the capture of appropriate information. Extends HandlerBase so it only implements the methods needed. During parsing creates a hashtable consisting of entries mapping the name it should be inserted into an EJB jar as to a File representing the file on disk. This list can then be accessed through the getFiles() method.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String currentElement
      Instance variable used to store the name of the current element being processed by the SAX parser.
      protected java.lang.String currentText
      The text of the current element
      protected java.util.Hashtable<java.lang.String,​java.io.File> ejbFiles
      Instance variable that stores the names of the files as they will be put into the jar file, mapped to File objects Accessed by the SAX parser call-back method characters().
      protected java.lang.String ejbName
      Instance variable that stores the value found in the <ejb-name> element
    • Constructor Summary

      Constructors 
      Constructor Description
      DescriptorHandler​(Task task, java.io.File srcDir)
      Constructor for DescriptorHandler.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void characters​(char[] ch, int start, int length)
      SAX parser call-back method invoked whenever characters are located within an element.
      void endElement​(java.lang.String name)
      SAX parser call-back method that is invoked when an element is exited.
      java.lang.String getEjbName()
      Getter method that returns the value of the <ejb-name> element.
      java.util.Hashtable<java.lang.String,​java.io.File> getFiles()
      Getter method that returns the set of files to include in the EJB jar.
      java.lang.String getPublicId()
      Get the publicId of the DTD
      protected void processElement()
      Called when an endelement is seen.
      void registerDTD​(java.lang.String publicId, java.lang.String location)
      Register a dtd with a location.
      org.xml.sax.InputSource resolveEntity​(java.lang.String publicId, java.lang.String systemId)
      Resolve the entity.
      void startDocument()
      SAX parser call-back method that is used to initialize the values of some instance variables to ensure safe operation.
      void startElement​(java.lang.String name, org.xml.sax.AttributeList attrs)
      SAX parser call-back method that is invoked when a new element is entered into.
      • Methods inherited from class org.xml.sax.HandlerBase

        endDocument, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, unparsedEntityDecl, warning
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • currentElement

        protected java.lang.String currentElement
        Instance variable used to store the name of the current element being processed by the SAX parser. Accessed by the SAX parser call-back methods startElement() and endElement().
      • currentText

        protected java.lang.String currentText
        The text of the current element
      • ejbFiles

        protected java.util.Hashtable<java.lang.String,​java.io.File> ejbFiles
        Instance variable that stores the names of the files as they will be put into the jar file, mapped to File objects Accessed by the SAX parser call-back method characters().
      • ejbName

        protected java.lang.String ejbName
        Instance variable that stores the value found in the <ejb-name> element
    • Constructor Detail

      • DescriptorHandler

        public DescriptorHandler​(Task task,
                                 java.io.File srcDir)
        Constructor for DescriptorHandler.
        Parameters:
        task - the task that owns this descriptor
        srcDir - the source directory
    • Method Detail

      • registerDTD

        public void registerDTD​(java.lang.String publicId,
                                java.lang.String location)
        Register a dtd with a location. The location is one of a filename, a resource name in the classpath, or a URL.
        Parameters:
        publicId - the public identity of the dtd
        location - the location of the dtd
      • resolveEntity

        public org.xml.sax.InputSource resolveEntity​(java.lang.String publicId,
                                                     java.lang.String systemId)
                                              throws org.xml.sax.SAXException
        Resolve the entity.
        Specified by:
        resolveEntity in interface org.xml.sax.EntityResolver
        Overrides:
        resolveEntity in class org.xml.sax.HandlerBase
        Parameters:
        publicId - The public identifier, or null if none is available.
        systemId - The system identifier provided in the XML document. Will not be null.
        Returns:
        an inputsource for this identifier
        Throws:
        org.xml.sax.SAXException - if there is a problem.
        See Also:
        EntityResolver.resolveEntity(String, String)
      • getFiles

        public java.util.Hashtable<java.lang.String,​java.io.File> getFiles()
        Getter method that returns the set of files to include in the EJB jar.
        Returns:
        the map of files
      • getPublicId

        public java.lang.String getPublicId()
        Get the publicId of the DTD
        Returns:
        the public id
      • getEjbName

        public java.lang.String getEjbName()
        Getter method that returns the value of the <ejb-name> element.
        Returns:
        the ejb name
      • startDocument

        public void startDocument()
                           throws org.xml.sax.SAXException
        SAX parser call-back method that is used to initialize the values of some instance variables to ensure safe operation.
        Specified by:
        startDocument in interface org.xml.sax.DocumentHandler
        Overrides:
        startDocument in class org.xml.sax.HandlerBase
        Throws:
        org.xml.sax.SAXException - on error
      • startElement

        public void startElement​(java.lang.String name,
                                 org.xml.sax.AttributeList attrs)
                          throws org.xml.sax.SAXException
        SAX parser call-back method that is invoked when a new element is entered into. Used to store the context (attribute name) in the currentAttribute instance variable.
        Specified by:
        startElement in interface org.xml.sax.DocumentHandler
        Overrides:
        startElement in class org.xml.sax.HandlerBase
        Parameters:
        name - The name of the element being entered.
        attrs - Attributes associated to the element.
        Throws:
        org.xml.sax.SAXException - on error
      • endElement

        public void endElement​(java.lang.String name)
                        throws org.xml.sax.SAXException
        SAX parser call-back method that is invoked when an element is exited. Used to blank out (set to the empty string, not nullify) the name of the currentAttribute. A better method would be to use a stack as an instance variable, however since we are only interested in leaf-node data this is a simpler and workable solution.
        Specified by:
        endElement in interface org.xml.sax.DocumentHandler
        Overrides:
        endElement in class org.xml.sax.HandlerBase
        Parameters:
        name - The name of the attribute being exited. Ignored in this implementation.
        Throws:
        org.xml.sax.SAXException - on error
      • characters

        public void characters​(char[] ch,
                               int start,
                               int length)
                        throws org.xml.sax.SAXException
        SAX parser call-back method invoked whenever characters are located within an element. currentAttribute (modified by startElement and endElement) tells us whether we are in an interesting element (one of the up to four classes of an EJB). If so then converts the classname from the format org.apache.tools.ant.Parser to the convention for storing such a class, org/apache/tools/ant/Parser.class. This is then resolved into a file object under the srcdir which is stored in a Hashtable.
        Specified by:
        characters in interface org.xml.sax.DocumentHandler
        Overrides:
        characters in class org.xml.sax.HandlerBase
        Parameters:
        ch - A character array containing all the characters in the element, and maybe others that should be ignored.
        start - An integer marking the position in the char array to start reading from.
        length - An integer representing an offset into the char array where the current data terminates.
        Throws:
        org.xml.sax.SAXException - on error
      • processElement

        protected void processElement()
        Called when an endelement is seen. This may be overridden in derived classes. This updates the ejbfiles if the element is an interface or a bean class. This updates the ejbname if the element is an ejb name.