public class AbstractDOMParser extends AbstractXMLDocumentParser
getDocument
method. The actual pipeline is defined in
parser configuration.Modifier and Type | Field and Description |
---|---|
protected static RuntimeException |
ABORT
If the user stops the process, this exception will be thrown.
|
protected static String |
CORE_DOCUMENT_CLASS_NAME |
protected static String |
CREATE_CDATA_NODES_FEATURE
Feature id: create cdata nodes.
|
protected static String |
CREATE_ENTITY_REF_NODES
Feature id: create entity ref nodes.
|
protected static String |
CURRENT_ELEMENT_NODE |
protected static String |
DEFAULT_DOCUMENT_CLASS_NAME
Default document class name.
|
protected static String |
DEFER_NODE_EXPANSION
Feature id: defer node expansion.
|
protected static String |
DOCUMENT_CLASS_NAME
Property id: document class name.
|
protected Stack |
fBaseURIStack
Base uri stack
|
protected boolean |
fCreateCDATANodes
Create cdata nodes.
|
protected boolean |
fCreateEntityRefNodes
Create entity reference nodes.
|
protected CDATASection |
fCurrentCDATASection |
protected int |
fCurrentCDATASectionIndex |
protected EntityImpl |
fCurrentEntityDecl |
protected Node |
fCurrentNode
Current node.
|
protected int |
fCurrentNodeIndex |
protected boolean |
fDeferNodeExpansion |
protected DeferredDocumentImpl |
fDeferredDocumentImpl |
protected int |
fDeferredEntityDecl |
protected Document |
fDocument
The document.
|
protected String |
fDocumentClassName
The document class name to use.
|
protected CoreDocumentImpl |
fDocumentImpl
The default Xerces document implementation, if used.
|
protected int |
fDocumentIndex |
protected DocumentType |
fDocumentType
The document type node.
|
protected int |
fDocumentTypeIndex |
protected LSParserFilter |
fDOMFilter |
protected DOMErrorHandlerWrapper |
fErrorHandler
DOM L3 error handler
|
protected boolean |
fFilterReject
LSParserFilter: specifies that element with given QNAME and all its children
must be rejected
|
protected boolean |
fFirstChunk
True if saw the first chunk of characters
|
protected boolean |
fInCDATASection
True if inside CDATA section.
|
protected boolean |
fIncludeComments
Include Comments.
|
protected boolean |
fIncludeIgnorableWhitespace
Include ignorable whitespace.
|
protected boolean |
fInDTD
True if inside DTD.
|
protected boolean |
fInDTDExternalSubset
True if inside DTD external subset.
|
protected boolean |
fInEntityRef
LSParserFilter: true if inside entity reference
|
protected StringBuffer |
fInternalSubset
Internal subset buffer.
|
protected boolean |
fNamespaceAware |
protected QName |
fRejectedElement
LSParserFilter: the QNAME of rejected element
|
protected QName |
fRoot
Root element name
|
protected Stack |
fSkippedElemStack
LSParserFilter: store qnames of skipped elements
|
protected boolean |
fStorePSVI
Whether to store PSVI information in DOM tree.
|
protected StringBuffer |
fStringBuffer
Character buffer
|
protected static String |
INCLUDE_COMMENTS_FEATURE
Feature id: include comments.
|
protected static String |
INCLUDE_IGNORABLE_WHITESPACE
Feature id: include ignorable whitespace.
|
protected static String |
NAMESPACES
Feature id: namespace.
|
protected static String |
PSVI_DOCUMENT_CLASS_NAME |
fDocumentSource, fDTDContentModelSource, fDTDSource
ENTITY_RESOLVER, ERROR_HANDLER, fConfiguration
CONDITIONAL_IGNORE, CONDITIONAL_INCLUDE
OCCURS_ONE_OR_MORE, OCCURS_ZERO_OR_MORE, OCCURS_ZERO_OR_ONE, SEPARATOR_CHOICE, SEPARATOR_SEQUENCE
Modifier | Constructor and Description |
---|---|
protected |
AbstractDOMParser(XMLParserConfiguration config)
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
abort() |
void |
attributeDecl(String elementName,
String attributeName,
String type,
String[] enumeration,
String defaultType,
XMLString defaultValue,
XMLString nonNormalizedDefaultValue,
Augmentations augs)
An attribute declaration.
|
void |
characters(XMLString text,
Augmentations augs)
Character content.
|
void |
comment(XMLString text,
Augmentations augs)
A comment.
|
protected Attr |
createAttrNode(QName attrQName) |
protected Element |
createElementNode(QName element) |
void |
doctypeDecl(String rootElement,
String publicId,
String systemId,
Augmentations augs)
Notifies of the presence of the DOCTYPE line in the document.
|
void |
dropDocumentReferences()
Drops all references to the last DOM which was built by this parser.
|
void |
elementDecl(String name,
String contentModel,
Augmentations augs)
An element declaration.
|
void |
emptyElement(QName element,
XMLAttributes attributes,
Augmentations augs)
An empty element.
|
void |
endAttlist(Augmentations augs)
The end of an attribute list.
|
void |
endCDATA(Augmentations augs)
The end of a CDATA section.
|
void |
endConditional(Augmentations augs)
The end of a conditional section.
|
void |
endDocument(Augmentations augs)
The end of the document.
|
void |
endDTD(Augmentations augs)
The end of the DTD.
|
void |
endElement(QName element,
Augmentations augs)
The end of an element.
|
void |
endExternalSubset(Augmentations augs)
The end of the DTD external subset.
|
void |
endGeneralEntity(String name,
Augmentations augs)
This method notifies the end of a general entity.
|
void |
endParameterEntity(String name,
Augmentations augs)
This method notifies the end of a parameter entity.
|
void |
externalEntityDecl(String name,
XMLResourceIdentifier identifier,
Augmentations augs)
An external entity declaration.
|
Document |
getDocument()
Returns the DOM document object.
|
protected String |
getDocumentClassName()
This method retreives the name of current document class.
|
protected void |
handleBaseURI(int node)
Record baseURI information for the Element (by adding xml:base attribute)
or for the ProcessingInstruction (by setting a baseURI field)
Deferred DOM.
|
protected void |
handleBaseURI(Node node)
Record baseURI information for the Element (by adding xml:base attribute)
or for the ProcessingInstruction (by setting a baseURI field)
Non deferred DOM.
|
void |
ignorableWhitespace(XMLString text,
Augmentations augs)
Ignorable whitespace.
|
void |
ignoredCharacters(XMLString text,
Augmentations augs)
Characters within an IGNORE conditional section.
|
void |
internalEntityDecl(String name,
XMLString text,
XMLString nonNormalizedText,
Augmentations augs)
An internal entity declaration.
|
void |
notationDecl(String name,
XMLResourceIdentifier identifier,
Augmentations augs)
A notation declaration
|
void |
processingInstruction(String target,
XMLString data,
Augmentations augs)
A processing instruction.
|
void |
reset()
Resets the parser state.
|
protected void |
setCharacterData(boolean sawChars) |
protected void |
setDocumentClassName(String documentClassName)
This method allows the programmer to decide which document
factory to use when constructing the DOM tree.
|
void |
setLocale(Locale locale)
Set the locale to use for messages.
|
void |
startAttlist(String elementName,
Augmentations augs)
The start of an attribute list.
|
void |
startCDATA(Augmentations augs)
The start of a CDATA section.
|
void |
startConditional(short type,
Augmentations augs)
The start of a conditional section.
|
void |
startDocument(XMLLocator locator,
String encoding,
NamespaceContext namespaceContext,
Augmentations augs)
The start of the document.
|
void |
startDTD(XMLLocator locator,
Augmentations augs)
The start of the DTD.
|
void |
startElement(QName element,
XMLAttributes attributes,
Augmentations augs)
The start of an element.
|
void |
startExternalSubset(XMLResourceIdentifier identifier,
Augmentations augs)
The start of the DTD external subset.
|
void |
startGeneralEntity(String name,
XMLResourceIdentifier identifier,
String encoding,
Augmentations augs)
This method notifies the start of a general entity.
|
void |
startParameterEntity(String name,
XMLResourceIdentifier identifier,
String encoding,
Augmentations augs)
This method notifies of the start of a parameter entity.
|
void |
textDecl(String version,
String encoding,
Augmentations augs)
Notifies of the presence of a TextDecl line in an entity.
|
void |
unparsedEntityDecl(String name,
XMLResourceIdentifier identifier,
String notation,
Augmentations augs)
An unparsed entity declaration.
|
void |
xmlDecl(String version,
String encoding,
String standalone,
Augmentations augs)
Notifies of the presence of an XMLDecl line in the document.
|
any, element, empty, endContentModel, endGroup, getDocumentSource, getDTDContentModelSource, getDTDSource, occurrence, pcdata, separator, setDocumentSource, setDTDContentModelSource, setDTDSource, startContentModel, startGroup
protected static final String NAMESPACES
protected static final String CREATE_ENTITY_REF_NODES
protected static final String INCLUDE_COMMENTS_FEATURE
protected static final String CREATE_CDATA_NODES_FEATURE
protected static final String INCLUDE_IGNORABLE_WHITESPACE
protected static final String DEFER_NODE_EXPANSION
protected static final String DOCUMENT_CLASS_NAME
protected static final String CURRENT_ELEMENT_NODE
protected static final String DEFAULT_DOCUMENT_CLASS_NAME
protected static final String CORE_DOCUMENT_CLASS_NAME
protected static final String PSVI_DOCUMENT_CLASS_NAME
protected static final RuntimeException ABORT
protected DOMErrorHandlerWrapper fErrorHandler
protected boolean fInDTD
protected boolean fCreateEntityRefNodes
protected boolean fIncludeIgnorableWhitespace
protected boolean fIncludeComments
protected boolean fCreateCDATANodes
protected Document fDocument
protected CoreDocumentImpl fDocumentImpl
protected boolean fStorePSVI
protected String fDocumentClassName
protected DocumentType fDocumentType
protected Node fCurrentNode
protected CDATASection fCurrentCDATASection
protected EntityImpl fCurrentEntityDecl
protected int fDeferredEntityDecl
protected final StringBuffer fStringBuffer
protected StringBuffer fInternalSubset
protected boolean fDeferNodeExpansion
protected boolean fNamespaceAware
protected DeferredDocumentImpl fDeferredDocumentImpl
protected int fDocumentIndex
protected int fDocumentTypeIndex
protected int fCurrentNodeIndex
protected int fCurrentCDATASectionIndex
protected boolean fInDTDExternalSubset
protected QName fRoot
protected boolean fInCDATASection
protected boolean fFirstChunk
protected boolean fFilterReject
protected Stack fBaseURIStack
protected final QName fRejectedElement
protected Stack fSkippedElemStack
protected boolean fInEntityRef
protected LSParserFilter fDOMFilter
protected AbstractDOMParser(XMLParserConfiguration config)
protected String getDocumentClassName()
protected void setDocumentClassName(String documentClassName)
documentClassName
- The fully qualified class name of the
document factory to use when constructing
the DOM tree.getDocumentClassName()
,
DEFAULT_DOCUMENT_CLASS_NAME
public Document getDocument()
public final void dropDocumentReferences()
public void reset() throws XNIException
reset
in class AbstractXMLDocumentParser
SAXException
- Thrown on initialization error.XNIException
public void setLocale(Locale locale)
locale
- The locale object to use for localization of messages.public void startGeneralEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs) throws XNIException
Note: This method is not called for entity references appearing as part of attribute values.
startGeneralEntity
in interface XMLDocumentHandler
startGeneralEntity
in class AbstractXMLDocumentParser
name
- The name of the general entity.identifier
- The resource identifier.encoding
- The auto-detected IANA encoding name of the entity
stream. This value will be null in those situations
where the entity encoding is not auto-detected (e.g.
internal entities or a document entity that is
parsed from a java.io.Reader).augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void textDecl(String version, String encoding, Augmentations augs) throws XNIException
Note: This method will never be called for the document entity; it is only called for external general entities referenced in document content.
Note: This method is not called for entity references appearing as part of attribute values.
textDecl
in interface XMLDocumentHandler
textDecl
in interface XMLDTDHandler
textDecl
in class AbstractXMLDocumentParser
version
- The XML version, or null if not specified.encoding
- The IANA encoding name of the entity.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void comment(XMLString text, Augmentations augs) throws XNIException
comment
in interface XMLDocumentHandler
comment
in interface XMLDTDHandler
comment
in class AbstractXMLDocumentParser
text
- The text in the comment.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by application to signal an error.public void processingInstruction(String target, XMLString data, Augmentations augs) throws XNIException
Typically, a processing instruction's data will contain a series of pseudo-attributes. These pseudo-attributes follow the form of element attributes but are not parsed or presented to the application as anything other than text. The application is responsible for parsing the data.
processingInstruction
in interface XMLDocumentHandler
processingInstruction
in interface XMLDTDHandler
processingInstruction
in class AbstractXMLDocumentParser
target
- The target.data
- The data or null if none specified.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void startDocument(XMLLocator locator, String encoding, NamespaceContext namespaceContext, Augmentations augs) throws XNIException
startDocument
in interface XMLDocumentHandler
startDocument
in class AbstractXMLDocumentParser
locator
- The system identifier of the entity if the entity
is external, null otherwise.encoding
- The auto-detected IANA encoding name of the entity
stream. This value will be null in those situations
where the entity encoding is not auto-detected (e.g.
internal entities or a document entity that is
parsed from a java.io.Reader).namespaceContext
- The namespace context in effect at the
start of this document.
This object represents the current context.
Implementors of this class are responsible
for copying the namespace bindings from the
the current context (and its parent contexts)
if that information is important.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void xmlDecl(String version, String encoding, String standalone, Augmentations augs) throws XNIException
xmlDecl
in interface XMLDocumentHandler
xmlDecl
in class AbstractXMLDocumentParser
version
- The XML version.encoding
- The IANA encoding name of the document, or null if
not specified.standalone
- The standalone value, or null if not specified.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void doctypeDecl(String rootElement, String publicId, String systemId, Augmentations augs) throws XNIException
doctypeDecl
in interface XMLDocumentHandler
doctypeDecl
in class AbstractXMLDocumentParser
rootElement
- The name of the root element.publicId
- The public identifier if an external DTD or null
if the external DTD is specified using SYSTEM.systemId
- The system identifier if an external DTD, null
otherwise.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void startElement(QName element, XMLAttributes attributes, Augmentations augs) throws XNIException
startElement
in interface XMLDocumentHandler
startElement
in class AbstractXMLDocumentParser
element
- The name of the element.attributes
- The element attributes.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void emptyElement(QName element, XMLAttributes attributes, Augmentations augs) throws XNIException
emptyElement
in interface XMLDocumentHandler
emptyElement
in class AbstractXMLDocumentParser
element
- The name of the element.attributes
- The element attributes.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void characters(XMLString text, Augmentations augs) throws XNIException
characters
in interface XMLDocumentHandler
characters
in class AbstractXMLDocumentParser
text
- The content.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void ignorableWhitespace(XMLString text, Augmentations augs) throws XNIException
ignorableWhitespace
in interface XMLDocumentHandler
ignorableWhitespace
in class AbstractXMLDocumentParser
text
- The ignorable whitespace.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void endElement(QName element, Augmentations augs) throws XNIException
endElement
in interface XMLDocumentHandler
endElement
in class AbstractXMLDocumentParser
element
- The name of the element.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void startCDATA(Augmentations augs) throws XNIException
startCDATA
in interface XMLDocumentHandler
startCDATA
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void endCDATA(Augmentations augs) throws XNIException
endCDATA
in interface XMLDocumentHandler
endCDATA
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void endDocument(Augmentations augs) throws XNIException
endDocument
in interface XMLDocumentHandler
endDocument
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.public void endGeneralEntity(String name, Augmentations augs) throws XNIException
Note: This method is not called for entity references appearing as part of attribute values.
endGeneralEntity
in interface XMLDocumentHandler
endGeneralEntity
in class AbstractXMLDocumentParser
name
- The name of the entity.augs
- Additional information that may include infoset augmentationsXNIException
- Thrown by handler to signal an error.protected final void handleBaseURI(Node node)
node
- protected final void handleBaseURI(int node)
node
- public void startDTD(XMLLocator locator, Augmentations augs) throws XNIException
startDTD
in interface XMLDTDHandler
startDTD
in class AbstractXMLDocumentParser
locator
- The document locator, or null if the document
location cannot be reported during the parsing of
the document DTD. However, it is strongly
recommended that a locator be supplied that can
at least report the base system identifier of the
DTD.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void endDTD(Augmentations augs) throws XNIException
endDTD
in interface XMLDTDHandler
endDTD
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void startConditional(short type, Augmentations augs) throws XNIException
startConditional
in interface XMLDTDHandler
startConditional
in class AbstractXMLDocumentParser
type
- The type of the conditional section. This value will
either be CONDITIONAL_INCLUDE or CONDITIONAL_IGNORE.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.XMLDTDHandler.CONDITIONAL_INCLUDE
,
XMLDTDHandler.CONDITIONAL_IGNORE
public void endConditional(Augmentations augs) throws XNIException
endConditional
in interface XMLDTDHandler
endConditional
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void startExternalSubset(XMLResourceIdentifier identifier, Augmentations augs) throws XNIException
startExternalSubset
in interface XMLDTDHandler
startExternalSubset
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset
augmentations.identifier
- The resource identifier.XNIException
- Thrown by handler to signal an error.public void endExternalSubset(Augmentations augs) throws XNIException
endExternalSubset
in interface XMLDTDHandler
endExternalSubset
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void internalEntityDecl(String name, XMLString text, XMLString nonNormalizedText, Augmentations augs) throws XNIException
internalEntityDecl
in interface XMLDTDHandler
internalEntityDecl
in class AbstractXMLDocumentParser
name
- The name of the entity. Parameter entity names start with
'%', whereas the name of a general entity is just the
entity name.text
- The value of the entity.nonNormalizedText
- The non-normalized value of the entity. This
value contains the same sequence of characters that was in
the internal entity declaration, without any entity
references expanded.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void externalEntityDecl(String name, XMLResourceIdentifier identifier, Augmentations augs) throws XNIException
externalEntityDecl
in interface XMLDTDHandler
externalEntityDecl
in class AbstractXMLDocumentParser
name
- The name of the entity. Parameter entity names start
with '%', whereas the name of a general entity is just
the entity name.identifier
- An object containing all location information
pertinent to this notation.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void startParameterEntity(String name, XMLResourceIdentifier identifier, String encoding, Augmentations augs) throws XNIException
startParameterEntity
in interface XMLDTDHandler
startParameterEntity
in class AbstractXMLDocumentParser
name
- The name of the parameter entity.identifier
- The resource identifier.encoding
- The auto-detected IANA encoding name of the entity
stream. This value will be null in those situations
where the entity encoding is not auto-detected (e.g.
internal parameter entities).augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void endParameterEntity(String name, Augmentations augs) throws XNIException
endParameterEntity
in interface XMLDTDHandler
endParameterEntity
in class AbstractXMLDocumentParser
name
- The name of the parameter entity.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void unparsedEntityDecl(String name, XMLResourceIdentifier identifier, String notation, Augmentations augs) throws XNIException
unparsedEntityDecl
in interface XMLDTDHandler
unparsedEntityDecl
in class AbstractXMLDocumentParser
name
- The name of the entity.identifier
- An object containing all location information
pertinent to this entity.notation
- The name of the notation.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void notationDecl(String name, XMLResourceIdentifier identifier, Augmentations augs) throws XNIException
notationDecl
in interface XMLDTDHandler
notationDecl
in class AbstractXMLDocumentParser
name
- The name of the notation.identifier
- An object containing all location information
pertinent to this notation.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void ignoredCharacters(XMLString text, Augmentations augs) throws XNIException
ignoredCharacters
in interface XMLDTDHandler
ignoredCharacters
in class AbstractXMLDocumentParser
text
- The ignored text.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void elementDecl(String name, String contentModel, Augmentations augs) throws XNIException
elementDecl
in interface XMLDTDHandler
elementDecl
in class AbstractXMLDocumentParser
name
- The name of the element.contentModel
- The element content model.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void attributeDecl(String elementName, String attributeName, String type, String[] enumeration, String defaultType, XMLString defaultValue, XMLString nonNormalizedDefaultValue, Augmentations augs) throws XNIException
attributeDecl
in interface XMLDTDHandler
attributeDecl
in class AbstractXMLDocumentParser
elementName
- The name of the element that this attribute
is associated with.attributeName
- The name of the attribute.type
- The attribute type. This value will be one of
the following: "CDATA", "ENTITY", "ENTITIES",
"ENUMERATION", "ID", "IDREF", "IDREFS",
"NMTOKEN", "NMTOKENS", or "NOTATION".enumeration
- If the type has the value "ENUMERATION" or
"NOTATION", this array holds the allowed attribute
values; otherwise, this array is null.defaultType
- The attribute default type. This value will be
one of the following: "#FIXED", "#IMPLIED",
"#REQUIRED", or null.defaultValue
- The attribute default value, or null if no
default value is specified.nonNormalizedDefaultValue
- The attribute default value with no normalization
performed, or null if no default value is specified.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void startAttlist(String elementName, Augmentations augs) throws XNIException
startAttlist
in interface XMLDTDHandler
startAttlist
in class AbstractXMLDocumentParser
elementName
- The name of the element that this attribute
list is associated with.augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.public void endAttlist(Augmentations augs) throws XNIException
endAttlist
in interface XMLDTDHandler
endAttlist
in class AbstractXMLDocumentParser
augs
- Additional information that may include infoset
augmentations.XNIException
- Thrown by handler to signal an error.protected void setCharacterData(boolean sawChars)
public void abort()
LSParser.abort()
Copyright © 2012 JBoss by Red Hat. All Rights Reserved.