org.objectweb.jonas.ant
Class DescriptorHandler

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by org.objectweb.jonas.ant.DescriptorHandler
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class DescriptorHandler
extends org.xml.sax.helpers.DefaultHandler

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
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 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
DescriptorHandler(org.apache.tools.ant.Task task, java.io.File srcDir)
           
 
Method Summary
 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 uri, java.lang.String localname, java.lang.String qname)
          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 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()
           
 void registerDTD(java.lang.String publicId, java.lang.String location)
           
 org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
           
 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 uri, java.lang.String localname, java.lang.String qname, org.xml.sax.Attributes attrs)
          SAX parser call-back method that is invoked when a new element is entered into.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startPrefixMapping, 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 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(org.apache.tools.ant.Task task,
                         java.io.File srcDir)
Method Detail

registerDTD

public void registerDTD(java.lang.String publicId,
                        java.lang.String location)

resolveEntity

public org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
                                             java.lang.String systemId)
                                      throws org.xml.sax.SAXException
Specified by:
resolveEntity in interface org.xml.sax.EntityResolver
Overrides:
resolveEntity in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

getFiles

public java.util.Hashtable getFiles()
Getter method that returns the set of files to include in the EJB jar.


getPublicId

public java.lang.String getPublicId()
Get the publicId of the DTD


getEjbName

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


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.ContentHandler
Overrides:
startDocument in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String uri,
                         java.lang.String localname,
                         java.lang.String qname,
                         org.xml.sax.Attributes 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.ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
Parameters:
uri - The namespace of the element being entered.
localname - The name of the element being entered.
qname - The qname of the element being entered.
attrs - Attributes associated to the element.
Throws:
org.xml.sax.SAXException

endElement

public void endElement(java.lang.String uri,
                       java.lang.String localname,
                       java.lang.String qname)
                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.ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
Parameters:
name - The name of the attribute being exited. Ignored in this implementation.
Throws:
org.xml.sax.SAXException

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.ContentHandler
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler
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

processElement

protected void processElement()