Class XMLFragmentReader
- java.lang.Object
-
- org.eclipse.persistence.internal.oxm.record.XMLReader
-
- org.eclipse.persistence.internal.oxm.record.XMLReaderAdapter
-
- org.eclipse.persistence.internal.oxm.record.DOMReader
-
- org.eclipse.persistence.internal.oxm.record.XMLFragmentReader
-
- All Implemented Interfaces:
org.xml.sax.XMLReader
public class XMLFragmentReader extends DOMReader
Internal:Purpose: An implementation of XMLReader for parsing XMLFragment Nodes into SAX events.
Responsibilities:
- Walk the XMLFragment node's DOM tree and report sax events to the provided content handler
- Report lexical events to the lexical handler if it's provided
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.persistence.internal.oxm.record.DOMReader
DOMReader.IndexedAttributeList, 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 Modifier and Type Field Description protected NamespaceResolvernsresolverprotected java.util.List<NamespaceResolver>nsresolverListprotected java.util.Map<org.w3c.dom.Element,NamespaceResolver>tmpresolverMap-
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 XMLFragmentReader(NamespaceResolver namespaceResolver)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcleanupNamespaceResolvers(org.w3c.dom.Element elem)Remove any temporary namespace resolvers created while processing a given element.protected voidendDocument()Trigger an endDocument event on the contenthandler.protected voidendPrefixMappings(org.w3c.dom.Element elem)If there is a temporary namespace resolver for a given element, each entry contains a prefix that requires an endPrefixMapping event to be triggeredprotected NamespaceResolvergetTempResolver(org.w3c.dom.Element elem)Returns the namespace resolver in the map of temporary namespace resolvers for a given elementprotected voidhandleNewNamespaceDeclaration(org.w3c.dom.Element elem, java.lang.String prefix, java.lang.String namespaceURI)protected voidhandlePrefixedAttribute(org.w3c.dom.Element elem)Handle prefixed attribute - may need to declare the namespace URI locally.protected voidhandleXsiTypeAttribute(org.w3c.dom.Attr attr)voidparse(org.w3c.dom.Node node, java.lang.String uri, java.lang.String name)protected voidprocessParentNamespaces(org.w3c.dom.Element element)Process namespace declarations on parent elements if not the root.protected voidreportElementEvents(org.w3c.dom.Element elem)protected java.lang.StringresolveNamespacePrefix(java.lang.String prefix)Convenience method that iterates over each namespace resolver in the resolver list until it locates a uri for 'prefix' or the final resolver is reached w/o success.protected voidstartDocument()Trigger a startDocument event on the contenthandler.-
Methods inherited from class org.eclipse.persistence.internal.oxm.record.DOMReader
buildAttributeList, getCurrentObject, getDocPresPolicy, getQName, handleChildNodes, newObjectEvent, parse, parse, reportElementEvents, setDocPresPolicy, setupLocator
-
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
-
-
-
-
Field Detail
-
nsresolver
protected NamespaceResolver nsresolver
-
nsresolverList
protected java.util.List<NamespaceResolver> nsresolverList
-
tmpresolverMap
protected java.util.Map<org.w3c.dom.Element,NamespaceResolver> tmpresolverMap
-
-
Constructor Detail
-
XMLFragmentReader
public XMLFragmentReader(NamespaceResolver namespaceResolver)
-
-
Method Detail
-
parse
public void parse(org.w3c.dom.Node node, java.lang.String uri, java.lang.String name) throws org.xml.sax.SAXException
-
reportElementEvents
protected void reportElementEvents(org.w3c.dom.Element elem) throws org.xml.sax.SAXException- Overrides:
reportElementEventsin classDOMReader- Throws:
org.xml.sax.SAXException
-
endDocument
protected void endDocument() throws org.xml.sax.SAXExceptionTrigger an endDocument event on the contenthandler.- Overrides:
endDocumentin classDOMReader- Throws:
org.xml.sax.SAXException
-
startDocument
protected void startDocument() throws org.xml.sax.SAXExceptionTrigger a startDocument event on the contenthandler.- Overrides:
startDocumentin classDOMReader- Throws:
org.xml.sax.SAXException
-
handleNewNamespaceDeclaration
protected void handleNewNamespaceDeclaration(org.w3c.dom.Element elem, java.lang.String prefix, java.lang.String namespaceURI)- Overrides:
handleNewNamespaceDeclarationin classDOMReader
-
handlePrefixedAttribute
protected void handlePrefixedAttribute(org.w3c.dom.Element elem) throws org.xml.sax.SAXExceptionHandle prefixed attribute - may need to declare the namespace URI locally.- Overrides:
handlePrefixedAttributein classDOMReader- Throws:
org.xml.sax.SAXException
-
endPrefixMappings
protected void endPrefixMappings(org.w3c.dom.Element elem) throws org.xml.sax.SAXExceptionIf there is a temporary namespace resolver for a given element, each entry contains a prefix that requires an endPrefixMapping event to be triggered- Overrides:
endPrefixMappingsin classDOMReader- Throws:
org.xml.sax.SAXException
-
getTempResolver
protected NamespaceResolver getTempResolver(org.w3c.dom.Element elem)
Returns the namespace resolver in the map of temporary namespace resolvers for a given element- Parameters:
elem-- Returns:
- the namespace resolver in the map for elem, or a new resolver if none exists
-
cleanupNamespaceResolvers
protected void cleanupNamespaceResolvers(org.w3c.dom.Element elem)
Remove any temporary namespace resolvers created while processing a given element.- Parameters:
elem-
-
resolveNamespacePrefix
protected java.lang.String resolveNamespacePrefix(java.lang.String prefix)
Convenience method that iterates over each namespace resolver in the resolver list until it locates a uri for 'prefix' or the final resolver is reached w/o success.- Parameters:
prefix-- Returns:
- true if a URI exists in one of the resolvers in the list, false otherwise
-
processParentNamespaces
protected void processParentNamespaces(org.w3c.dom.Element element) throws org.xml.sax.SAXExceptionProcess namespace declarations on parent elements if not the root. For each parent node from current to root place puch 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.- Overrides:
processParentNamespacesin classDOMReader- Parameters:
element-- Throws:
org.xml.sax.SAXException
-
handleXsiTypeAttribute
protected void handleXsiTypeAttribute(org.w3c.dom.Attr attr) throws org.xml.sax.SAXException- Overrides:
handleXsiTypeAttributein classDOMReader- Throws:
org.xml.sax.SAXException
-
-