org.apache.catalina.util.xml
Class XmlMapper

java.lang.Object
  |
  +--org.xml.sax.HandlerBase
        |
        +--org.apache.catalina.util.xml.XmlMapper
All Implemented Interfaces:
org.xml.sax.DocumentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, SaxContext

public class XmlMapper
extends org.xml.sax.HandlerBase
implements SaxContext

SAX Handler - it will read the XML and construct java objects

Author:
costin@dnt.ro

Constructor Summary
XmlMapper()
           
 
Method Summary
 XmlAction addChild(java.lang.String parentM, java.lang.String argType)
          For the last 2 objects in stack, create a parent-child relation by invokeing parent.parentM with the child as parameter ArgType is the parameter expected by addParent ( null use the current object type)
 void addRule(java.lang.String path, XmlAction action)
           
 void characters(char[] buf, int offset, int len)
           
 void endDocument()
           
 void endElement(java.lang.String tag)
           
 void error(org.xml.sax.SAXParseException e)
           
 org.xml.sax.AttributeList getAttributeList(int pos)
          Access attributes of a particular tag
 java.lang.String getBody()
          Body of the last tag
 int getDebug()
           
 java.util.Stack getObjectStack()
          We maintain a stack to keep java objects that are generated as result of parsing.
 java.lang.String getPublicId()
           
 java.lang.Object getRoot()
          The root object is either set by caller before starting the parse or can be created using the first tag.
 java.lang.String getTag(int pos)
          Access a particular tag
 int getTagCount()
          Depth of the tag stack.
 boolean getValidating()
           
 void ignorableWhitespace(char[] buf, int offset, int len)
           
 void log(java.lang.String msg)
           
 XmlAction methodParam(int ord)
          Extract the method param from the body of the tag
 XmlAction methodParam(int ord, java.lang.String attrib)
          Extract the method param from a tag attribute
 XmlAction methodSetter(java.lang.String method, int paramC)
          If a tag matches, invoke a method on the current object.
 XmlAction methodSetter(java.lang.String method, int paramC, java.lang.String[] paramTypes)
          If a tag matches, invoke a method on the current object.
 void notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
           
 XmlAction objectCreate(java.lang.String classN)
          Create an object using for a matching tag with the given class name
 XmlAction objectCreate(java.lang.String classN, java.lang.String attrib)
          Create an object using an attribute value as the class name If no attribute use classN as a default.
 XmlAction popStack()
          Pop the object stack
 void processingInstruction(java.lang.String name, java.lang.String instruction)
           
 java.lang.Object readXml(java.io.File xmlFile, java.lang.Object root)
          read an XML file, construct and return the object hierarchy
 java.lang.Object readXml(java.io.InputStream xmlFile, java.lang.Object root)
          read an XML input stream, construct and return the object hierarchy
 void registerDTDFile(java.lang.String publicId, java.lang.String dtdFile)
          Register the specified DTD with a local file.
 void registerDTDRes(java.lang.String publicId, java.lang.String dtdRes)
          Register the specified DTD to map to a resource in the classpath This must be called prior to the first call to readXml().
 org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
          Resolve the requested external entity, replacing it by an internal DTD if one has been registered.
 void setDebug(int level)
           
 void setDocumentLocator(org.xml.sax.Locator locator)
           
 XmlAction setParent(java.lang.String childM)
          For the last 2 objects in stack, create a parent-child and child.childM with parente as parameter
 XmlAction setParent(java.lang.String childM, java.lang.String argType)
          For the last 2 objects in stack, create a parent-child and child.childM with parent as parameter
 XmlAction setProperties()
          Set object properties using XML attributes
 void setRoot(java.lang.Object o)
           
 void setValidating(boolean validating)
           
 void startDocument()
           
 void startElement(java.lang.String tag, org.xml.sax.AttributeList attributes)
           
 void unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)
           
 
Methods inherited from class org.xml.sax.HandlerBase
fatalError, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XmlMapper

public XmlMapper()
Method Detail

setDocumentLocator

public void setDocumentLocator(org.xml.sax.Locator locator)
Specified by:
setDocumentLocator in interface org.xml.sax.DocumentHandler
Overrides:
setDocumentLocator in class org.xml.sax.HandlerBase

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException
Specified by:
startDocument in interface org.xml.sax.DocumentHandler
Overrides:
startDocument in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
Specified by:
endDocument in interface org.xml.sax.DocumentHandler
Overrides:
endDocument in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

error

public void error(org.xml.sax.SAXParseException e)
           throws org.xml.sax.SAXException
Specified by:
error in interface org.xml.sax.ErrorHandler
Overrides:
error in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String tag,
                         org.xml.sax.AttributeList attributes)
                  throws org.xml.sax.SAXException
Specified by:
startElement in interface org.xml.sax.DocumentHandler
Overrides:
startElement in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

endElement

public void endElement(java.lang.String tag)
                throws org.xml.sax.SAXException
Specified by:
endElement in interface org.xml.sax.DocumentHandler
Overrides:
endElement in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

characters

public void characters(char[] buf,
                       int offset,
                       int len)
                throws org.xml.sax.SAXException
Specified by:
characters in interface org.xml.sax.DocumentHandler
Overrides:
characters in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

ignorableWhitespace

public void ignorableWhitespace(char[] buf,
                                int offset,
                                int len)
                         throws org.xml.sax.SAXException
Specified by:
ignorableWhitespace in interface org.xml.sax.DocumentHandler
Overrides:
ignorableWhitespace in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

processingInstruction

public void processingInstruction(java.lang.String name,
                                  java.lang.String instruction)
                           throws org.xml.sax.SAXException
Specified by:
processingInstruction in interface org.xml.sax.DocumentHandler
Overrides:
processingInstruction in class org.xml.sax.HandlerBase
org.xml.sax.SAXException

getAttributeList

public org.xml.sax.AttributeList getAttributeList(int pos)
Description copied from interface: SaxContext
Access attributes of a particular tag

Specified by:
getAttributeList in interface SaxContext

getTagCount

public int getTagCount()
Description copied from interface: SaxContext
Depth of the tag stack.

Specified by:
getTagCount in interface SaxContext

getTag

public java.lang.String getTag(int pos)
Description copied from interface: SaxContext
Access a particular tag

Specified by:
getTag in interface SaxContext

getBody

public java.lang.String getBody()
Description copied from interface: SaxContext
Body of the last tag

Specified by:
getBody in interface SaxContext

getObjectStack

public java.util.Stack getObjectStack()
Description copied from interface: SaxContext
We maintain a stack to keep java objects that are generated as result of parsing. You can either use the stack ( which is very powerfull construct !), or use the root object and navigation in the result tree.

Specified by:
getObjectStack in interface SaxContext

getPublicId

public java.lang.String getPublicId()
Specified by:
getPublicId in interface SaxContext

getRoot

public java.lang.Object getRoot()
Description copied from interface: SaxContext
The root object is either set by caller before starting the parse or can be created using the first tag. It is used to set object in the result graph by navigation ( using root and a path). Please use the stack, it's much faster and better.

Specified by:
getRoot in interface SaxContext

setRoot

public void setRoot(java.lang.Object o)

setDebug

public void setDebug(int level)

getDebug

public int getDebug()
Specified by:
getDebug in interface SaxContext

setValidating

public void setValidating(boolean validating)

getValidating

public boolean getValidating()

log

public void log(java.lang.String msg)
Specified by:
log in interface SaxContext

readXml

public java.lang.Object readXml(java.io.File xmlFile,
                                java.lang.Object root)
                         throws java.lang.Exception
read an XML file, construct and return the object hierarchy

java.lang.Exception

readXml

public java.lang.Object readXml(java.io.InputStream xmlFile,
                                java.lang.Object root)
                         throws java.lang.Exception
read an XML input stream, construct and return the object hierarchy

java.lang.Exception

registerDTDFile

public void registerDTDFile(java.lang.String publicId,
                            java.lang.String dtdFile)
Register the specified DTD with a local file. This must be called prior to the first call to readXml().

Parameters:
publicId - Public identifier of the DTD to be resolved
dtdFile - The local file name to use for reading this DTD

registerDTDRes

public void registerDTDRes(java.lang.String publicId,
                           java.lang.String dtdRes)
Register the specified DTD to map to a resource in the classpath This must be called prior to the first call to readXml().

Parameters:
publicId - Public identifier of the DTD to be resolved
dtdRes - local resource name, to be used with getResource()

addRule

public void addRule(java.lang.String path,
                    XmlAction action)

resolveEntity

public org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
                                             java.lang.String systemId)
                                      throws org.xml.sax.SAXException
Resolve the requested external entity, replacing it by an internal DTD if one has been registered.

Specified by:
resolveEntity in interface org.xml.sax.EntityResolver
Overrides:
resolveEntity in class org.xml.sax.HandlerBase
Parameters:
publicId - Public identifier of the entity being referenced
systemId - System identifier of the entity being referenced
Throws:
org.xml.sax.SAXException - if a parsing error occurs

notationDecl

public void notationDecl(java.lang.String name,
                         java.lang.String publicId,
                         java.lang.String systemId)
Specified by:
notationDecl in interface org.xml.sax.DTDHandler
Overrides:
notationDecl in class org.xml.sax.HandlerBase

unparsedEntityDecl

public void unparsedEntityDecl(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId,
                               java.lang.String notationName)
Specified by:
unparsedEntityDecl in interface org.xml.sax.DTDHandler
Overrides:
unparsedEntityDecl in class org.xml.sax.HandlerBase

objectCreate

public XmlAction objectCreate(java.lang.String classN)
Create an object using for a matching tag with the given class name


objectCreate

public XmlAction objectCreate(java.lang.String classN,
                              java.lang.String attrib)
Create an object using an attribute value as the class name If no attribute use classN as a default.


setProperties

public XmlAction setProperties()
Set object properties using XML attributes


setParent

public XmlAction setParent(java.lang.String childM)
For the last 2 objects in stack, create a parent-child and child.childM with parente as parameter


setParent

public XmlAction setParent(java.lang.String childM,
                           java.lang.String argType)
For the last 2 objects in stack, create a parent-child and child.childM with parent as parameter


addChild

public XmlAction addChild(java.lang.String parentM,
                          java.lang.String argType)
For the last 2 objects in stack, create a parent-child relation by invokeing parent.parentM with the child as parameter ArgType is the parameter expected by addParent ( null use the current object type)


methodSetter

public XmlAction methodSetter(java.lang.String method,
                              int paramC)
If a tag matches, invoke a method on the current object. Parameters can be extracted from sub-elements of the current tag.


methodSetter

public XmlAction methodSetter(java.lang.String method,
                              int paramC,
                              java.lang.String[] paramTypes)
If a tag matches, invoke a method on the current object. Parameters can be extracted from sub-elements of the current tag.


methodParam

public XmlAction methodParam(int ord)
Extract the method param from the body of the tag


methodParam

public XmlAction methodParam(int ord,
                             java.lang.String attrib)
Extract the method param from a tag attribute


popStack

public XmlAction popStack()
Pop the object stack



Copyright © 2000-2001 Apache Software Foundation. All Rights Reserved.