Module org.eclipse.persistence.core
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:
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 List<NamespaceResolver>nsresolverListprotected Map<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(Element elem)Remove any temporary namespace resolvers created while processing a given element.protected voidendDocument()Trigger an endDocument event on the contenthandler.protected voidendPrefixMappings(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(Element elem)Returns the namespace resolver in the map of temporary namespace resolvers for a given elementprotected voidhandleNewNamespaceDeclaration(Element elem, String prefix, String namespaceURI)protected voidhandlePrefixedAttribute(Element elem)Handle prefixed attribute - may need to declare the namespace URI locally.protected voidhandleXsiTypeAttribute(Attr attr)voidparse(Node node, String uri, String name)protected voidprocessParentNamespaces(Element element)Process namespace declarations on parent elements if not the root.protected voidreportElementEvents(Element elem)protected StringresolveNamespacePrefix(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 List<NamespaceResolver> nsresolverList
-
tmpresolverMap
protected Map<Element,NamespaceResolver> tmpresolverMap
-
-
Constructor Detail
-
XMLFragmentReader
public XMLFragmentReader(NamespaceResolver namespaceResolver)
-
-
Method Detail
-
parse
public void parse(Node node, String uri, String name) throws SAXException
- Overrides:
parsein classDOMReader- Throws:
SAXException
-
reportElementEvents
protected void reportElementEvents(Element elem) throws SAXException
- Overrides:
reportElementEventsin classDOMReader- Throws:
SAXException
-
endDocument
protected void endDocument() throws SAXExceptionTrigger an endDocument event on the contenthandler.- Overrides:
endDocumentin classDOMReader- Throws:
SAXException
-
startDocument
protected void startDocument() throws SAXExceptionTrigger a startDocument event on the contenthandler.- Overrides:
startDocumentin classDOMReader- Throws:
SAXException
-
handleNewNamespaceDeclaration
protected void handleNewNamespaceDeclaration(Element elem, String prefix, String namespaceURI)
- Overrides:
handleNewNamespaceDeclarationin classDOMReader
-
handlePrefixedAttribute
protected void handlePrefixedAttribute(Element elem) throws SAXException
Handle prefixed attribute - may need to declare the namespace URI locally.- Overrides:
handlePrefixedAttributein classDOMReader- Throws:
SAXException
-
endPrefixMappings
protected void endPrefixMappings(Element elem) throws SAXException
If 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:
SAXException
-
getTempResolver
protected NamespaceResolver getTempResolver(Element elem)
Returns the namespace resolver in the map of temporary namespace resolvers for a given element- Returns:
- the namespace resolver in the map for elem, or a new resolver if none exists
-
cleanupNamespaceResolvers
protected void cleanupNamespaceResolvers(Element elem)
Remove any temporary namespace resolvers created while processing a given element.
-
resolveNamespacePrefix
protected String resolveNamespacePrefix(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.- Returns:
- true if a URI exists in one of the resolvers in the list, false otherwise
-
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 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- Throws:
SAXException
-
handleXsiTypeAttribute
protected void handleXsiTypeAttribute(Attr attr) throws SAXException
- Overrides:
handleXsiTypeAttributein classDOMReader- Throws:
SAXException
-
-