(no commit message)
[utils] / support / general / src / test / java / org / wamblee / xml / XmlUtils.java
index f35b50cfcfbd0992faacdcc6cd91d1f9265693f3..3888e6f77ba2d3cce1652e95e57cf929a9497cc8 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright 2005 the original author or authors.
- *
+ * Copyright 2005-2010 the original author or authors.
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- *
+ * 
  *      http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  */
 package org.wamblee.xml;
 
-import junit.framework.TestCase;
-
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.Element;
-
+import java.io.Serializable;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
+import junit.framework.TestCase;
+
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.DOMReader;
+import org.dom4j.io.DOMWriter;
 
 /**
  * XML test support utilities.
- *
+ * 
  * @author Erik Brakkee
  */
 public final class XmlUtils {
     /**
      * Disabled constructor.
-     *
+     * 
      */
     private XmlUtils() {
         // Empty
@@ -46,22 +49,21 @@ public final class XmlUtils {
      * Checks equality of two XML documents excluding comment and processing
      * nodes and trimming the text of the elements. In case of problems, it
      * provides an xpath-like expression describing where the problem is.
-     *
+     * 
      * @param aMsg
      * @param aExpected
      * @param aActual
      */
     public static void assertEquals(String aMsg,
         org.w3c.dom.Document aExpected, org.w3c.dom.Document aActual) {
-        assertEquals(aMsg, DomUtils.convert(aExpected),
-            DomUtils.convert(aActual));
+        assertEquals(aMsg, convert(aExpected), convert(aActual));
     }
 
     /**
      * Checks equality of two XML documents excluding comment and processing
-     * nodes and trimming the text of the elements.  In case of problems, it
+     * nodes and trimming the text of the elements. In case of problems, it
      * provides an xpath-like expression describing where the problem is.
-     *
+     * 
      * @param aMsg
      * @param aExpected
      * @param aActual
@@ -76,7 +78,7 @@ public final class XmlUtils {
      * Checks equality of two XML elements excluding comment and processing
      * nodes and trimming the text of the elements. In case of problems, it
      * provides an xpath-like expression describing where the problem is.
-     *
+     * 
      * @param aMsg
      * @param aExpected
      * @param aActual
@@ -84,8 +86,8 @@ public final class XmlUtils {
     public static void assertEquals(String aMsg, Element aExpected,
         Element aActual) {
         // Name.
-        TestCase.assertEquals(aMsg + "/name()", aExpected.getName(),
-            aActual.getName());
+        TestCase.assertEquals(aMsg + "/name()", aExpected.getName(), aActual
+            .getName());
 
         // Text
         TestCase.assertEquals(aMsg + "/text()", aExpected.getTextTrim(),
@@ -136,32 +138,63 @@ public final class XmlUtils {
     }
 
     /**
-     * Checks equality of two attributes. In case of problems, it
-     * provides an xpath-like expression describing where the problem is.
-     *
+     * Checks equality of two attributes. In case of problems, it provides an
+     * xpath-like expression describing where the problem is.
+     * 
      * @param aMsg
      * @param aExpected
      * @param aActual
      */
     public static void assertEquals(String aMsg, Attribute aExpected,
         Attribute aActual) {
-        TestCase.assertEquals(aMsg + ":name", aExpected.getName(),
-            aActual.getName());
-        TestCase.assertEquals(aMsg + ":value", aExpected.getValue(),
-            aActual.getValue());
+        TestCase.assertEquals(aMsg + ":name", aExpected.getName(), aActual
+            .getName());
+        TestCase.assertEquals(aMsg + ":value", aExpected.getValue(), aActual
+            .getValue());
     }
 
     /**
      * Comparator which compares attributes by name.
      */
-    private static final class AttributeComparator implements Comparator<Attribute> {
+    private static final class AttributeComparator implements
+        Comparator<Attribute>, Serializable {
+
+        private static final long serialVersionUID = 7897287273519886301L;
+
         /*
          * (non-Javadoc)
-         *
+         * 
          * @see java.util.Comparator#compare(T, T)
          */
         public int compare(Attribute aAttribute1, Attribute aAttribute2) {
             return aAttribute1.getName().compareTo(aAttribute2.getName());
         }
     }
+    
+    /**
+     * Converts a dom4j document into a w3c DOM document.
+     * 
+     * @param aDocument
+     *            Document to convert.
+     * 
+     * @return W3C DOM document.
+     * 
+     */
+    public static org.w3c.dom.Document convert(org.dom4j.Document aDocument)
+        throws DocumentException {
+        return new DOMWriter().write(aDocument);
+    } 
+
+    /**
+     * Converts a W3C DOM document into a dom4j document.
+     * 
+     * @param aDocument
+     *            Document to convert.
+     * 
+     * @return Dom4j document.
+     */
+    public static org.dom4j.Document convert(org.w3c.dom.Document aDocument) {
+        return new DOMReader().read(aDocument);
+    }
+    
 }