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.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)
Overrides:
setDocumentLocator in class org.xml.sax.HandlerBase

startDocument

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

endDocument

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

error

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

startElement

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

endElement

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

characters

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

ignorableWhitespace

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

processingInstruction

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

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

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

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

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.
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)
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)
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 Apache Software Foundation. All Rights Reserved.