public final class DOMDifferenceEngine extends AbstractDifferenceEngine
Modifier and Type | Class and Description |
---|---|
private static class |
DOMDifferenceEngine.Attributes |
private class |
DOMDifferenceEngine.ControlAttributePresentComparer |
private class |
DOMDifferenceEngine.NormalAttributeComparer |
private class |
DOMDifferenceEngine.UnmatchedControlNodes |
private class |
DOMDifferenceEngine.UnmatchedTestNodes |
AbstractDifferenceEngine.ComparisonState, AbstractDifferenceEngine.DeferredComparison, AbstractDifferenceEngine.FinishedComparisonState, AbstractDifferenceEngine.OngoingComparisonState
Modifier and Type | Field and Description |
---|---|
private javax.xml.parsers.DocumentBuilderFactory |
documentBuilderFactory |
private static Mapper<org.w3c.dom.Node,javax.xml.namespace.QName> |
QNAME_MAPPER
Maps Nodes to their QNames.
|
Constructor and Description |
---|
DOMDifferenceEngine() |
Modifier and Type | Method and Description |
---|---|
void |
compare(javax.xml.transform.Source control,
javax.xml.transform.Source test)
Compares two pieces of XML and invokes the registered listeners.
|
private AbstractDifferenceEngine.DeferredComparison |
compareAttributeExplicitness(org.w3c.dom.Attr control,
XPathContext controlContext,
org.w3c.dom.Attr test,
XPathContext testContext)
Compares whether two attributes are specified explicitly.
|
private AbstractDifferenceEngine.ComparisonState |
compareAttributes(org.w3c.dom.Attr control,
XPathContext controlContext,
org.w3c.dom.Attr test,
XPathContext testContext)
Compares properties of an attribute.
|
private AbstractDifferenceEngine.ComparisonState |
compareCharacterData(org.w3c.dom.CharacterData control,
XPathContext controlContext,
org.w3c.dom.CharacterData test,
XPathContext testContext)
Compares textual content.
|
private AbstractDifferenceEngine.DeferredComparison |
compareChildren(XPathContext controlContext,
java.lang.Iterable<org.w3c.dom.Node> allControlChildren,
java.lang.Iterable<org.w3c.dom.Node> controlChildren,
XPathContext testContext,
java.lang.Iterable<org.w3c.dom.Node> allTestChildren,
java.lang.Iterable<org.w3c.dom.Node> testChildren) |
private AbstractDifferenceEngine.DeferredComparison |
compareDeclarations(org.w3c.dom.Document control,
XPathContext controlContext,
org.w3c.dom.Document test,
XPathContext testContext)
Compares properties of XML declaration.
|
private AbstractDifferenceEngine.ComparisonState |
compareDocTypes(org.w3c.dom.DocumentType control,
XPathContext controlContext,
org.w3c.dom.DocumentType test,
XPathContext testContext)
Compares properties of the doctype declaration.
|
private AbstractDifferenceEngine.ComparisonState |
compareDocuments(org.w3c.dom.Document control,
XPathContext controlContext,
org.w3c.dom.Document test,
XPathContext testContext)
Compares document node, doctype and XML declaration properties
|
private AbstractDifferenceEngine.ComparisonState |
compareElementAttributes(org.w3c.dom.Element control,
XPathContext controlContext,
org.w3c.dom.Element test,
XPathContext testContext)
Compares element's attributes.
|
private AbstractDifferenceEngine.ComparisonState |
compareElements(org.w3c.dom.Element control,
XPathContext controlContext,
org.w3c.dom.Element test,
XPathContext testContext)
Compares elements node properties, in particular the element's
name and its attributes.
|
private AbstractDifferenceEngine.ComparisonState |
compareNodeLists(java.lang.Iterable<org.w3c.dom.Node> allControlChildren,
java.lang.Iterable<org.w3c.dom.Node> controlSeq,
XPathContext controlContext,
java.lang.Iterable<org.w3c.dom.Node> allTestChildren,
java.lang.Iterable<org.w3c.dom.Node> testSeq,
XPathContext testContext)
Matches nodes of two node lists and invokes compareNode on each pair.
|
(package private) AbstractDifferenceEngine.ComparisonState |
compareNodes(org.w3c.dom.Node control,
XPathContext controlContext,
org.w3c.dom.Node test,
XPathContext testContext)
Recursively compares two XML nodes.
|
private AbstractDifferenceEngine.ComparisonState |
compareProcessingInstructions(org.w3c.dom.ProcessingInstruction control,
XPathContext controlContext,
org.w3c.dom.ProcessingInstruction test,
XPathContext testContext)
Compares properties of a processing instruction.
|
private AbstractDifferenceEngine.ComparisonState |
compareXsiType(org.w3c.dom.Attr controlAttr,
XPathContext controlContext,
org.w3c.dom.Attr testAttr,
XPathContext testContext)
Compares xsi:type attribute values
|
private <T extends org.w3c.dom.Node> |
filterNode(T n) |
private static org.w3c.dom.Attr |
findMatchingAttr(java.util.List<org.w3c.dom.Attr> attrs,
org.w3c.dom.Attr attrToMatch)
Find the attribute with the same namespace and local name as a
given attribute in a list of attributes.
|
private AbstractDifferenceEngine.ComparisonState |
nodeTypeSpecificComparison(org.w3c.dom.Node control,
XPathContext controlContext,
org.w3c.dom.Node test,
XPathContext testContext)
Dispatches to the node type specific comparison if one is
defined for the given combination of nodes.
|
void |
setDocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory f)
Sets the
DocumentBuilderFactory to use when creating a
Document from the Source s to compare. |
private DOMDifferenceEngine.Attributes |
splitAttributes(org.w3c.dom.NamedNodeMap map)
Separates XML namespace related attributes from "normal" attributes.xb
|
private static javax.xml.namespace.QName |
valueAsQName(org.w3c.dom.Attr attribute) |
private XPathContext |
xpathContextFor(org.w3c.dom.Node n) |
addComparisonListener, addDifferenceListener, addMatchListener, compare, getAttributeFilter, getComparisonController, getDifferenceEvaluator, getNamespaceContext, getNodeFilter, getNodeMatcher, getParentXPath, getXPath, setAttributeFilter, setComparisonController, setDifferenceEvaluator, setNamespaceContext, setNodeFilter, setNodeMatcher
private static final Mapper<org.w3c.dom.Node,javax.xml.namespace.QName> QNAME_MAPPER
private javax.xml.parsers.DocumentBuilderFactory documentBuilderFactory
public void setDocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory f)
DocumentBuilderFactory
to use when creating a
Document
from the Source
s to compare.
This is only used if the Source
passed to compare(javax.xml.transform.Source, javax.xml.transform.Source)
is not already a DOMSource
.
public void compare(javax.xml.transform.Source control, javax.xml.transform.Source test)
DifferenceEngine
private XPathContext xpathContextFor(org.w3c.dom.Node n)
AbstractDifferenceEngine.ComparisonState compareNodes(org.w3c.dom.Node control, XPathContext controlContext, org.w3c.dom.Node test, XPathContext testContext)
Performs comparisons common to all node types, then performs the node type specific comparisons and finally recurses into the node's child lists.
Stops as soon as any comparison returns ComparisonResult.CRITICAL.
package private to support tests.
private AbstractDifferenceEngine.ComparisonState nodeTypeSpecificComparison(org.w3c.dom.Node control, XPathContext controlContext, org.w3c.dom.Node test, XPathContext testContext)
private AbstractDifferenceEngine.DeferredComparison compareChildren(XPathContext controlContext, java.lang.Iterable<org.w3c.dom.Node> allControlChildren, java.lang.Iterable<org.w3c.dom.Node> controlChildren, XPathContext testContext, java.lang.Iterable<org.w3c.dom.Node> allTestChildren, java.lang.Iterable<org.w3c.dom.Node> testChildren)
private AbstractDifferenceEngine.ComparisonState compareCharacterData(org.w3c.dom.CharacterData control, XPathContext controlContext, org.w3c.dom.CharacterData test, XPathContext testContext)
private AbstractDifferenceEngine.ComparisonState compareDocuments(org.w3c.dom.Document control, XPathContext controlContext, org.w3c.dom.Document test, XPathContext testContext)
private <T extends org.w3c.dom.Node> T filterNode(T n)
private AbstractDifferenceEngine.ComparisonState compareDocTypes(org.w3c.dom.DocumentType control, XPathContext controlContext, org.w3c.dom.DocumentType test, XPathContext testContext)
private AbstractDifferenceEngine.DeferredComparison compareDeclarations(org.w3c.dom.Document control, XPathContext controlContext, org.w3c.dom.Document test, XPathContext testContext)
private AbstractDifferenceEngine.ComparisonState compareElements(org.w3c.dom.Element control, XPathContext controlContext, org.w3c.dom.Element test, XPathContext testContext)
private AbstractDifferenceEngine.ComparisonState compareElementAttributes(org.w3c.dom.Element control, XPathContext controlContext, org.w3c.dom.Element test, XPathContext testContext)
private AbstractDifferenceEngine.ComparisonState compareProcessingInstructions(org.w3c.dom.ProcessingInstruction control, XPathContext controlContext, org.w3c.dom.ProcessingInstruction test, XPathContext testContext)
private AbstractDifferenceEngine.ComparisonState compareNodeLists(java.lang.Iterable<org.w3c.dom.Node> allControlChildren, java.lang.Iterable<org.w3c.dom.Node> controlSeq, XPathContext controlContext, java.lang.Iterable<org.w3c.dom.Node> allTestChildren, java.lang.Iterable<org.w3c.dom.Node> testSeq, XPathContext testContext)
Also performs CHILD_LOOKUP comparisons for each node that couldn't be matched to one of the "other" list.
private AbstractDifferenceEngine.ComparisonState compareXsiType(org.w3c.dom.Attr controlAttr, XPathContext controlContext, org.w3c.dom.Attr testAttr, XPathContext testContext)
private AbstractDifferenceEngine.ComparisonState compareAttributes(org.w3c.dom.Attr control, XPathContext controlContext, org.w3c.dom.Attr test, XPathContext testContext)
private AbstractDifferenceEngine.DeferredComparison compareAttributeExplicitness(org.w3c.dom.Attr control, XPathContext controlContext, org.w3c.dom.Attr test, XPathContext testContext)
private DOMDifferenceEngine.Attributes splitAttributes(org.w3c.dom.NamedNodeMap map)
private static javax.xml.namespace.QName valueAsQName(org.w3c.dom.Attr attribute)
private static org.w3c.dom.Attr findMatchingAttr(java.util.List<org.w3c.dom.Attr> attrs, org.w3c.dom.Attr attrToMatch)