Class DOMReader
- java.lang.Object
-
- org.eclipse.persistence.internal.oxm.record.XMLReader
-
- org.eclipse.persistence.internal.oxm.record.XMLReaderAdapter
-
- org.eclipse.persistence.internal.oxm.record.DOMReader
-
- All Implemented Interfaces:
XMLReader
- Direct Known Subclasses:
XMLFragmentReader
public class DOMReader extends XMLReaderAdapter
INTERNAL:Purpose: An implementation of XMLReader for parsing DOM Nodes into SAX events.
Responsibilities:
- Walk the DOM tree and report sax events to the provided content handler
- Report lexical events to the lexical handler if it's provided
- Listen for callbacks from the Mapping-Level framework to handle caching nodes for document preservation
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
DOMReader.IndexedAttributeList
Implementation of Attributes - used to pass along a given node's attributes to the startElement method of the reader's content handler.protected static class
DOMReader.LocatorImpl
-
Nested classes/interfaces inherited from class org.eclipse.persistence.internal.oxm.record.XMLReaderAdapter
XMLReaderAdapter.Attribute, XMLReaderAdapter.ExtendedContentHandlerAdapter
-
Nested classes/interfaces inherited from class org.eclipse.persistence.internal.oxm.record.XMLReader
XMLReader.ValidatingContentHandler
-
-
Field Summary
-
Fields inherited from class org.eclipse.persistence.internal.oxm.record.XMLReaderAdapter
contentHandler, lexicalHandler
-
Fields inherited from class org.eclipse.persistence.internal.oxm.record.XMLReader
locator, NAMESPACE_PREFIXES_FEATURE, REPORT_IGNORED_ELEMENT_CONTENT_WHITESPACE_FEATURE, validatingContentHandler
-
-
Constructor Summary
Constructors Constructor Description DOMReader()
DOMReader(Unmarshaller xmlUnmarshaller)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected DOMReader.IndexedAttributeList
buildAttributeList(Element elem)
protected void
endDocument()
Trigger an endDocument event on the contenthandler.protected void
endPrefixMappings(Element elem)
Object
getCurrentObject(CoreAbstractSession session, Mapping selfRecordMapping)
DocumentPreservationPolicy
getDocPresPolicy()
protected String
getQName(Element elem)
protected void
handleChildNodes(NodeList children)
protected void
handleNewNamespaceDeclaration(Element elem, String emptyString, String value)
protected void
handlePrefixedAttribute(Element elem)
Handle prefixed attribute - may need to declare the namespace URI locally.protected void
handleXsiTypeAttribute(Attr attr)
void
newObjectEvent(Object object, Object parent, Mapping selfRecordMapping)
An EclipseLink specific callback into the Reader.void
parse(Node node)
void
parse(Node node, String newURI, String newName)
void
parse(InputSource input)
protected void
processParentNamespaces(Element element)
Process namespace declarations on parent elements if not the root.protected void
reportElementEvents(Element elem)
protected void
reportElementEvents(Element elem, String newUri, String newName)
void
setDocPresPolicy(DocumentPreservationPolicy policy)
protected void
setupLocator(Document doc)
protected void
startDocument()
Trigger a startDocument event on the contenthandler.-
Methods inherited from class org.eclipse.persistence.internal.oxm.record.XMLReaderAdapter
getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getLexicalHandler, getProperty, parse, setContentHandler, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setLexicalHandler, setProperty
-
Methods inherited from class org.eclipse.persistence.internal.oxm.record.XMLReader
convertValueBasedOnSchemaType, getLocator, getMediaType, getNamespaceSeparator, getValidatorHandler, getValue, isInCollection, isNamespaceAware, isNullRecord, isNullRepresentedByXsiNil, setLocator, setNamespaceAware, setNamespaceSeparator, setValidatorHandler
-
-
-
-
Constructor Detail
-
DOMReader
public DOMReader()
-
DOMReader
public DOMReader(Unmarshaller xmlUnmarshaller)
-
-
Method Detail
-
parse
public void parse(InputSource input) throws SAXException
- Specified by:
parse
in interfaceXMLReader
- Overrides:
parse
in classXMLReader
- Throws:
SAXException
-
parse
public void parse(Node node, String newURI, String newName) throws SAXException
- Throws:
SAXException
-
parse
public void parse(Node node) throws SAXException
- Throws:
SAXException
-
processParentNamespaces
protected void processParentNamespaces(Element element) throws SAXException
Process namespace declarations on parent elements if not the root. For each parent node from current to root push each onto a stack, then pop each off, calling startPrefixMapping for each XMLNS attribute. Using a stack ensures that the parent nodes are processed top down.- Parameters:
element
-- Throws:
SAXException
-
reportElementEvents
protected void reportElementEvents(Element elem) throws SAXException
- Throws:
SAXException
-
reportElementEvents
protected void reportElementEvents(Element elem, String newUri, String newName) throws SAXException
- Throws:
SAXException
-
buildAttributeList
protected DOMReader.IndexedAttributeList buildAttributeList(Element elem) throws SAXException
- Throws:
SAXException
-
endPrefixMappings
protected void endPrefixMappings(Element elem) throws SAXException
- Throws:
SAXException
-
getQName
protected String getQName(Element elem) throws SAXException
- Throws:
SAXException
-
handleNewNamespaceDeclaration
protected void handleNewNamespaceDeclaration(Element elem, String emptyString, String value)
-
handleXsiTypeAttribute
protected void handleXsiTypeAttribute(Attr attr) throws SAXException
- Throws:
SAXException
-
handlePrefixedAttribute
protected void handlePrefixedAttribute(Element elem) throws SAXException
Handle prefixed attribute - may need to declare the namespace URI locally.- Throws:
SAXException
-
handleChildNodes
protected void handleChildNodes(NodeList children) throws SAXException
- Throws:
SAXException
-
endDocument
protected void endDocument() throws SAXException
Trigger an endDocument event on the contenthandler.- Throws:
SAXException
-
startDocument
protected void startDocument() throws SAXException
Trigger a startDocument event on the contenthandler.- Throws:
SAXException
-
newObjectEvent
public void newObjectEvent(Object object, Object parent, Mapping selfRecordMapping)
An EclipseLink specific callback into the Reader. This allows Objects to be associated with the XML Nodes they came from.- Overrides:
newObjectEvent
in classXMLReader
-
getCurrentObject
public Object getCurrentObject(CoreAbstractSession session, Mapping selfRecordMapping)
- Overrides:
getCurrentObject
in classXMLReader
-
getDocPresPolicy
public DocumentPreservationPolicy getDocPresPolicy()
-
setDocPresPolicy
public void setDocPresPolicy(DocumentPreservationPolicy policy)
-
setupLocator
protected void setupLocator(Document doc)
-
-