Class DescriptorHandler
java.lang.Object
org.xml.sax.HandlerBase
org.apache.tools.ant.taskdefs.optional.ejb.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 elementprotected 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
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 DTDprotected 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.
-
Field Details
-
currentElement
protected java.lang.String currentElementInstance 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 currentTextThe text of the current element -
ejbFiles
protected java.util.Hashtable<java.lang.String,java.io.File> ejbFilesInstance 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 ejbNameInstance variable that stores the value found in the <ejb-name> element
-
-
Constructor Details
-
DescriptorHandler
Constructor for DescriptorHandler.- Parameters:
task
- the task that owns this descriptorsrcDir
- the source directory
-
-
Method Details
-
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 dtdlocation
- the location of the dtd
-
resolveEntity
public org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXExceptionResolve the entity.- Specified by:
resolveEntity
in interfaceorg.xml.sax.EntityResolver
- Overrides:
resolveEntity
in classorg.xml.sax.HandlerBase
- Parameters:
publicId
- The public identifier, ornull
if none is available.systemId
- The system identifier provided in the XML document. Will not benull
.- 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.SAXExceptionSAX parser call-back method that is used to initialize the values of some instance variables to ensure safe operation.- Specified by:
startDocument
in interfaceorg.xml.sax.DocumentHandler
- Overrides:
startDocument
in classorg.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.SAXExceptionSAX 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 interfaceorg.xml.sax.DocumentHandler
- Overrides:
startElement
in classorg.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.SAXExceptionSAX 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 interfaceorg.xml.sax.DocumentHandler
- Overrides:
endElement
in classorg.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.SAXExceptionSAX 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 interfaceorg.xml.sax.DocumentHandler
- Overrides:
characters
in classorg.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.
-