Package org.custommonkey.xmlunit
Class DifferenceEngine
- java.lang.Object
-
- org.custommonkey.xmlunit.DifferenceEngine
-
- All Implemented Interfaces:
DifferenceConstants
public class DifferenceEngine extends java.lang.Object implements DifferenceConstants
Class that has responsibility for comparing Nodes and notifying a DifferenceListener of any differences or dissimilarities that are found. Knows how to compare namespaces and nested child nodes, but currently only compares nodes of type ELEMENT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_TYPE_NODE, PROCESSING_INSTRUCTION_NODE and TEXT_NODE. Nodes of other types (eg ENTITY_NODE) will be skipped.
Examples and more at xmlunit. sourceforge.net
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classDifferenceEngine.DifferenceFoundExceptionMarker exception thrown by the protected compare() method and passed upwards through the call stack to the public compare() method.
-
Field Summary
-
Fields inherited from interface org.custommonkey.xmlunit.DifferenceConstants
ATTR_NAME_NOT_FOUND, ATTR_NAME_NOT_FOUND_ID, ATTR_SEQUENCE, ATTR_SEQUENCE_ID, ATTR_VALUE, ATTR_VALUE_EXPLICITLY_SPECIFIED, ATTR_VALUE_EXPLICITLY_SPECIFIED_ID, ATTR_VALUE_ID, CDATA_VALUE, CDATA_VALUE_ID, CHILD_NODE_NOT_FOUND, CHILD_NODE_NOT_FOUND_ID, CHILD_NODELIST_LENGTH, CHILD_NODELIST_LENGTH_ID, CHILD_NODELIST_SEQUENCE, CHILD_NODELIST_SEQUENCE_ID, COMMENT_VALUE, COMMENT_VALUE_ID, DOCTYPE_NAME, DOCTYPE_NAME_ID, DOCTYPE_PUBLIC_ID, DOCTYPE_PUBLIC_ID_ID, DOCTYPE_SYSTEM_ID, DOCTYPE_SYSTEM_ID_ID, ELEMENT_NUM_ATTRIBUTES, ELEMENT_NUM_ATTRIBUTES_ID, ELEMENT_TAG_NAME, ELEMENT_TAG_NAME_ID, HAS_CHILD_NODES, HAS_CHILD_NODES_ID, HAS_DOCTYPE_DECLARATION, HAS_DOCTYPE_DECLARATION_ID, NAMESPACE_PREFIX, NAMESPACE_PREFIX_ID, NAMESPACE_URI, NAMESPACE_URI_ID, NO_NAMESPACE_SCHEMA_LOCATION, NO_NAMESPACE_SCHEMA_LOCATION_ID, NODE_TYPE, NODE_TYPE_ID, PROCESSING_INSTRUCTION_DATA, PROCESSING_INSTRUCTION_DATA_ID, PROCESSING_INSTRUCTION_TARGET, PROCESSING_INSTRUCTION_TARGET_ID, SCHEMA_LOCATION, SCHEMA_LOCATION_ID, TEXT_VALUE, TEXT_VALUE_ID
-
-
Constructor Summary
Constructors Constructor Description DifferenceEngine(ComparisonController controller)Simple constructor that uses no MatchTracker at all.DifferenceEngine(ComparisonController controller, MatchTracker matchTracker)Simple constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidcompare(java.lang.Object expected, java.lang.Object actual, org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, Difference difference)If the expected and actual values are unequal then inform the listener of a difference and throw a DifferenceFoundException.protected voidcompare(java.lang.Object expected, java.lang.Object actual, org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, Difference difference, XpathNodeTracker controlLoc, XpathNodeTracker testLoc)If the expected and actual values are unequal then inform the listener of a difference and throw a DifferenceFoundException.voidcompare(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, ElementQualifier elementQualifier)Entry point for Node comparison testing.protected voidcompareAttribute(org.w3c.dom.Attr control, org.w3c.dom.Attr test, DifferenceListener listener)Compare two attributesprotected voidcompareCDataSection(org.w3c.dom.CDATASection control, org.w3c.dom.CDATASection test, DifferenceListener listener)Compare two CDATA sections - unused, kept for backwards compatibilityprotected voidcompareComment(org.w3c.dom.Comment control, org.w3c.dom.Comment test, DifferenceListener listener)Compare two commentsprotected voidcompareDocument(org.w3c.dom.Document control, org.w3c.dom.Document test, DifferenceListener listener, ElementQualifier elementQualifier)Compare two Documents for doctype and then element differencesprotected voidcompareDocumentType(org.w3c.dom.DocumentType control, org.w3c.dom.DocumentType test, DifferenceListener listener)Compare two DocumentType nodesprotected voidcompareElement(org.w3c.dom.Element control, org.w3c.dom.Element test, DifferenceListener listener)Compare 2 elements and their attributesprotected voidcompareHasChildNodes(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener)Compare the number of children, and if the same, compare the actual children via their NodeLists.protected voidcompareNode(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, ElementQualifier elementQualifier)First point of call: if nodes are comparable it compares node values then recurses to compare node children.protected booleancompareNodeBasics(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener)Compares node type and node namespace characteristics: basically determines if nodes are comparable furtherprotected voidcompareNodeChildren(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, ElementQualifier elementQualifier)Compare the number of children, and if the same, compare the actual children via their NodeLists.protected voidcompareNodeList(java.util.List controlChildren, java.util.List testChildren, int numNodes, DifferenceListener listener, ElementQualifier elementQualifier)Compare the contents of two node list one by one, assuming that order of children is NOT important: matching begins at same position in test list as control list.protected voidcompareNodeList(org.w3c.dom.NodeList control, org.w3c.dom.NodeList test, int numNodes, DifferenceListener listener, ElementQualifier elementQualifier)Deprecated.Use the version with List arguments insteadprotected voidcompareProcessingInstruction(org.w3c.dom.ProcessingInstruction control, org.w3c.dom.ProcessingInstruction test, DifferenceListener listener)Compare two processing instructionsprotected voidcompareRecognizedXMLSchemaInstanceAttribute(org.w3c.dom.Attr control, org.w3c.dom.Attr test, DifferenceListener listener)Compare two attributesprotected voidcompareText(org.w3c.dom.CharacterData control, org.w3c.dom.CharacterData test, DifferenceListener listener)Compare textprotected voidcompareText(org.w3c.dom.Text control, org.w3c.dom.Text test, DifferenceListener listener)Compare text - unused, kept for backwards compatibilityvoidsetMatchTracker(MatchTracker matchTracker)
-
-
-
Constructor Detail
-
DifferenceEngine
public DifferenceEngine(ComparisonController controller)
Simple constructor that uses no MatchTracker at all.- Parameters:
controller- the instance used to determine whether a Difference detected by this class should halt further comparison or not- See Also:
ComparisonController.haltComparison(Difference)
-
DifferenceEngine
public DifferenceEngine(ComparisonController controller, MatchTracker matchTracker)
Simple constructor- Parameters:
controller- the instance used to determine whether a Difference detected by this class should halt further comparison or notmatchTracker- the instance that is notified on each successful match. May be null.- See Also:
ComparisonController.haltComparison(Difference),MatchTracker.matchFound(Difference)
-
-
Method Detail
-
setMatchTracker
public void setMatchTracker(MatchTracker matchTracker)
- Parameters:
matchTracker- the instance that is notified on each successful match. May be null.
-
compare
public void compare(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, ElementQualifier elementQualifier)Entry point for Node comparison testing.- Parameters:
control- Control XML to comparetest- Test XML to comparelistener- Notified of anydifferencesdetected during node comparison testingelementQualifier- Used to determine which elements qualify for comparison e.g. when a node has repeated child elements that may occur in any sequence and that sequence is not considered important.
-
compareNode
protected void compareNode(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, ElementQualifier elementQualifier) throws DifferenceEngine.DifferenceFoundExceptionFirst point of call: if nodes are comparable it compares node values then recurses to compare node children.- Parameters:
control-test-listener-elementQualifier-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareDocument
protected void compareDocument(org.w3c.dom.Document control, org.w3c.dom.Document test, DifferenceListener listener, ElementQualifier elementQualifier) throws DifferenceEngine.DifferenceFoundExceptionCompare two Documents for doctype and then element differences- Parameters:
control-test-listener-elementQualifier-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareNodeBasics
protected boolean compareNodeBasics(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompares node type and node namespace characteristics: basically determines if nodes are comparable further- Parameters:
control-test-listener-- Returns:
- true if the nodes are comparable further, false otherwise
- Throws:
DifferenceEngine.DifferenceFoundException
-
compareHasChildNodes
protected void compareHasChildNodes(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare the number of children, and if the same, compare the actual children via their NodeLists.- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareNodeChildren
protected void compareNodeChildren(org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, ElementQualifier elementQualifier) throws DifferenceEngine.DifferenceFoundExceptionCompare the number of children, and if the same, compare the actual children via their NodeLists.- Parameters:
control-test-listener-elementQualifier-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareNodeList
protected void compareNodeList(org.w3c.dom.NodeList control, org.w3c.dom.NodeList test, int numNodes, DifferenceListener listener, ElementQualifier elementQualifier) throws DifferenceEngine.DifferenceFoundExceptionDeprecated.Use the version with List arguments insteadCompare the contents of two node list one by one, assuming that order of children is NOT important: matching begins at same position in test list as control list.- Parameters:
control-test-numNodes- convenience parameter because the calling method should know the value alreadylistener-elementQualifier- used to determine which of the child elements in the test NodeList should be compared to the current child element in the control NodeList.- Throws:
DifferenceEngine.DifferenceFoundException
-
compareNodeList
protected void compareNodeList(java.util.List controlChildren, java.util.List testChildren, int numNodes, DifferenceListener listener, ElementQualifier elementQualifier) throws DifferenceEngine.DifferenceFoundExceptionCompare the contents of two node list one by one, assuming that order of children is NOT important: matching begins at same position in test list as control list.- Parameters:
control-test-numNodes- convenience parameter because the calling method should know the value alreadylistener-elementQualifier- used to determine which of the child elements in the test NodeList should be compared to the current child element in the control NodeList.- Throws:
DifferenceEngine.DifferenceFoundException
-
compareElement
protected void compareElement(org.w3c.dom.Element control, org.w3c.dom.Element test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare 2 elements and their attributes- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareRecognizedXMLSchemaInstanceAttribute
protected void compareRecognizedXMLSchemaInstanceAttribute(org.w3c.dom.Attr control, org.w3c.dom.Attr test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare two attributes- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareAttribute
protected void compareAttribute(org.w3c.dom.Attr control, org.w3c.dom.Attr test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare two attributes- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareCDataSection
protected void compareCDataSection(org.w3c.dom.CDATASection control, org.w3c.dom.CDATASection test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare two CDATA sections - unused, kept for backwards compatibility- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareComment
protected void compareComment(org.w3c.dom.Comment control, org.w3c.dom.Comment test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare two comments- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareDocumentType
protected void compareDocumentType(org.w3c.dom.DocumentType control, org.w3c.dom.DocumentType test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare two DocumentType nodes- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareProcessingInstruction
protected void compareProcessingInstruction(org.w3c.dom.ProcessingInstruction control, org.w3c.dom.ProcessingInstruction test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare two processing instructions- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareText
protected void compareText(org.w3c.dom.Text control, org.w3c.dom.Text test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare text - unused, kept for backwards compatibility- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compareText
protected void compareText(org.w3c.dom.CharacterData control, org.w3c.dom.CharacterData test, DifferenceListener listener) throws DifferenceEngine.DifferenceFoundExceptionCompare text- Parameters:
control-test-listener-- Throws:
DifferenceEngine.DifferenceFoundException
-
compare
protected void compare(java.lang.Object expected, java.lang.Object actual, org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, Difference difference) throws DifferenceEngine.DifferenceFoundExceptionIf the expected and actual values are unequal then inform the listener of a difference and throw a DifferenceFoundException.- Parameters:
expected-actual-control-test-listener-differenceType-- Throws:
DifferenceEngine.DifferenceFoundException
-
compare
protected void compare(java.lang.Object expected, java.lang.Object actual, org.w3c.dom.Node control, org.w3c.dom.Node test, DifferenceListener listener, Difference difference, XpathNodeTracker controlLoc, XpathNodeTracker testLoc) throws DifferenceEngine.DifferenceFoundExceptionIf the expected and actual values are unequal then inform the listener of a difference and throw a DifferenceFoundException.- Parameters:
expected-actual-control-test-listener-differenceType-- Throws:
DifferenceEngine.DifferenceFoundException
-
-