From: <bo...@us...> - 2010-09-16 15:13:50
|
Revision: 480 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=480&view=rev Author: bodewig Date: 2010-09-16 15:13:39 +0000 (Thu, 16 Sep 2010) Log Message: ----------- avoid double-wrapping of ElementSelectors Modified Paths: -------------- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java Modified: trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java =================================================================== --- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java 2010-09-14 11:30:44 UTC (rev 479) +++ trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/NewDifferenceEngine.java 2010-09-16 15:13:39 UTC (rev 480) @@ -36,6 +36,7 @@ package org.custommonkey.xmlunit; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -53,10 +54,12 @@ import net.sf.xmlunit.diff.DifferenceEvaluator; import net.sf.xmlunit.diff.DifferenceEvaluators; import net.sf.xmlunit.diff.ElementSelector; +import net.sf.xmlunit.diff.ElementSelectors; import net.sf.xmlunit.diff.NodeMatcher; import net.sf.xmlunit.input.CommentLessSource; import net.sf.xmlunit.input.WhitespaceStrippedSource; import net.sf.xmlunit.util.Linqy; +import org.custommonkey.xmlunit.examples.RecursiveElementNameAndTextQualifier; import org.w3c.dom.CDATASection; import org.w3c.dom.Comment; @@ -79,6 +82,17 @@ implements DifferenceConstants, DifferenceEngineContract { private static final Integer ZERO = Integer.valueOf(0); + private static final Map<Class<?>, ElementSelector> KNOWN_SELECTORS; + static { + Map<Class<?>, ElementSelector> m = + new HashMap<Class<?>, ElementSelector>(); + m.put(ElementNameAndTextQualifier.class, + ElementSelectors.byNameAndText); + m.put(ElementQualifier.class, ElementSelectors.byName); + m.put(RecursiveElementNameAndTextQualifier.class, + ElementSelectors.byNameAndTextRec); + KNOWN_SELECTORS = Collections.unmodifiableMap(m); + } private final ComparisonController controller; private MatchTracker matchTracker; @@ -164,7 +178,12 @@ NodeMatcher m = new DefaultNodeMatcher(); if (elementQualifier != null) { - m = new DefaultNodeMatcher(new ElementQualifier2ElementSelector(elementQualifier)); + Class<?> c = elementQualifier.getClass(); + if (KNOWN_SELECTORS.containsKey(c)) { + m = new DefaultNodeMatcher(KNOWN_SELECTORS.get(c)); + } else { + m = new DefaultNodeMatcher(new ElementQualifier2ElementSelector(elementQualifier)); + } } if (!XMLUnit.getCompareUnmatched()) { engine.setNodeMatcher(m); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |