Repository: incubator-juneau
Updated Branches:
  refs/heads/master 61d3f3a9c -> 82eca2873


https://issues.apache.org/jira/browse/JUNEAU-2

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/82eca287
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/82eca287
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/82eca287

Branch: refs/heads/master
Commit: 82eca287337afa5040781b5ff10edfe3e22135dd
Parents: 61d3f3a
Author: jamesbognar <[email protected]>
Authored: Thu Aug 4 12:38:17 2016 -0400
Committer: jamesbognar <[email protected]>
Committed: Thu Aug 4 12:38:17 2016 -0400

----------------------------------------------------------------------
 .../test/java/org/apache/juneau/TestUtils.java  | 112 +++++++++++++------
 .../java/org/apache/juneau/jena/CT_Rdf.java     |   6 +-
 2 files changed, 78 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/82eca287/org.apache.juneau/src/test/java/org/apache/juneau/TestUtils.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/TestUtils.java 
b/org.apache.juneau/src/test/java/org/apache/juneau/TestUtils.java
index dda6a97..5820f29 100755
--- a/org.apache.juneau/src/test/java/org/apache/juneau/TestUtils.java
+++ b/org.apache.juneau/src/test/java/org/apache/juneau/TestUtils.java
@@ -277,21 +277,87 @@ public class TestUtils {
         * This method is primarily meant for debugging purposes.
         */
        private static final String sortXml(String xml) throws Exception {
-
-               xml = xml.replaceAll("\\w+\\:", "");  // Strip out all 
namespaces.
+               xml = xml.replaceAll("\\w+\\:", "").replaceAll(">\\s+<", "><"); 
 // Strip out all namespaces and whitespace.
 
                DocumentBuilderFactory dbf = 
DocumentBuilderFactory.newInstance();
-               dbf.setIgnoringElementContentWhitespace(true);
-               dbf.setNamespaceAware(false);
                DocumentBuilder db = dbf.newDocumentBuilder();
                Document doc = db.parse(new InputSource(new StringReader(xml)));
 
-               DOMSource s = new DOMSource(doc);
+               SortedNode n = new SortedNode(doc.getDocumentElement());
+               return n.toString();
+       }
+
+       /**
+        * A sorted node in a DOM tree.
+        */
+       private static class SortedNode implements Comparable<SortedNode> {
+               public String name, text="", attrs="";
+               public List<SortedNode> children = new LinkedList<SortedNode>();
+
+               SortedNode(Element e) {
+                       this.name = e.getNodeName();
+                       NamedNodeMap attrs = e.getAttributes();
+                       if (attrs != null) {
+                               StringBuilder sb = new StringBuilder();
+                               Set<String> attrNames = new TreeSet<String>();
+                               for (int i = 0; i < attrs.getLength(); i++)
+                                       
attrNames.add(attrs.item(i).getNodeName());
+                               for (String n : attrNames) {
+                                       Node node = attrs.getNamedItem(n);
+                                       sb.append(" 
").append(n).append("='").append(node.getNodeValue()).append("'");
+                               }
+                               this.attrs = sb.toString();
+                       }
+                       NodeList nl = e.getChildNodes();
+                       for (int i = 0; i < nl.getLength(); i++) {
+                               Node n = nl.item(i);
+                               if (n instanceof Element)
+                                       children.add(new 
SortedNode((Element)nl.item(i)));
+                               if (n instanceof Text)
+                                       this.text += ((Text)n).getNodeValue();
+                       }
+                       Collections.sort(children);
+               }
+
+               @Override
+               public int compareTo(SortedNode n) {
+                       int i = name.compareTo(n.name);
+                       if (i != 0)
+                               return i;
+                       i = attrs.compareTo(n.attrs);
+                       if (i != 0)
+                               return i;
+                       i = text.compareTo(n.text);
+                       if (i != 0)
+                               return i;
+                       return 0;
+               }
 
-               StringWriter sw = new StringWriter();
-               StreamResult sr = new StreamResult(sw);
-               XML_SORT_TRANSFORMER.transform(s, sr);
-               return sw.toString().replace('"', '\'').replace("\r", "");
+               public String toString() {
+                       return toString(0, new StringBuilder()).toString();
+               }
+
+               public StringBuilder toString(int depth ,StringBuilder sb) {
+                       indent(depth, 
sb).append("<").append(name).append(attrs);
+                       if (children.isEmpty() && text.isEmpty()) {
+                               sb.append("/>\n");
+                               return sb;
+                       }
+                       sb.append(">\n");
+                       if (! text.isEmpty())
+                               indent(depth+1, sb).append(text).append("\n");
+                       for (SortedNode c : children) {
+                               c.toString(depth+1, sb);
+                       }
+                       indent(depth, 
sb).append("</").append(name).append(">\n");
+                       return sb;
+               }
+       }
+
+       private static StringBuilder indent(int depth, StringBuilder sb) {
+               for (int i = 0; i < depth; i++)
+                       sb.append("\t");
+               return sb;
        }
 
        /**
@@ -303,34 +369,6 @@ public class TestUtils {
                assertEquals(sortXml(expected), sortXml(actual));
        }
 
-       private static Transformer XML_SORT_TRANSFORMER;
-       static {
-               try {
-                       String xsl = ""
-                               + "     <xsl:stylesheet version='1.0'"
-                               + "      
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>"
-                               + "      <xsl:output omit-xml-declaration='yes' 
indent='yes'/>"
-                               + "      <xsl:strip-space elements='*'/>"
-                               + "      <xsl:template match='node()|@*'>"
-                               + "       <xsl:copy>"
-                               + "        <xsl:apply-templates select='@*'>"
-                               + "         <xsl:sort select='name()'/>"
-                               + "        </xsl:apply-templates>"
-                               + "        <xsl:apply-templates 
select='node()'>"
-                               + "         <xsl:sort select='name()'/>"
-                               + "         <xsl:sort select='text()'/>"
-                               + "        </xsl:apply-templates>"
-                               + "       </xsl:copy>"
-                               + "      </xsl:template>"
-                               + "     </xsl:stylesheet>";
-                       TransformerFactory tf = 
TransformerFactory.newInstance();
-                       StreamSource ss = new StreamSource(new 
StringReader(xsl));
-                       XML_SORT_TRANSFORMER = tf.newTransformer(ss);
-               } catch (Exception e) {
-                       throw new RuntimeException(e);
-               }
-       }
-
        /**
         * Assert that the object equals the specified string after running it 
through JsonSerializer.DEFAULT_LAX.toString().
         */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/82eca287/org.apache.juneau/src/test/java/org/apache/juneau/jena/CT_Rdf.java
----------------------------------------------------------------------
diff --git a/org.apache.juneau/src/test/java/org/apache/juneau/jena/CT_Rdf.java 
b/org.apache.juneau/src/test/java/org/apache/juneau/jena/CT_Rdf.java
index 54ca8b8..d04cb10 100755
--- a/org.apache.juneau/src/test/java/org/apache/juneau/jena/CT_Rdf.java
+++ b/org.apache.juneau/src/test/java/org/apache/juneau/jena/CT_Rdf.java
@@ -548,7 +548,7 @@ public class CT_Rdf {
                                + "\n      <jp:f3 
resource='http://localhost/f3/1'/>"
                                + "\n   </rdf:Description>"
                                + "\n</rdf:RDF>";
-               // TODO: https://issues.apache.org/jira/browse/JUNEAU-2 
assertXmlEquals(expected, rdfXml);
+               assertXmlEquals(expected, rdfXml);
 
                l = p.parseCollection(rdfXml, LinkedList.class, D.class);
                D[] da = l.toArray(new D[l.size()]);
@@ -564,7 +564,7 @@ public class CT_Rdf {
                                + "\n      <jp:f3 
resource='http://localhost/f3/1'/>"
                                + "\n   </rdf:Description>"
                                + "\n</rdf:RDF>";
-               // TODO: https://issues.apache.org/jira/browse/JUNEAU-2 
assertXmlEquals(expected, rdfXml);
+               assertXmlEquals(expected, rdfXml);
 
                da = p.parse(rdfXml, D[].class);
                rdfXml = s.serialize(da);
@@ -579,7 +579,7 @@ public class CT_Rdf {
                                + "\n      <jp:f3 
resource='http://localhost/f3/1'/>"
                                + "\n   </rdf:Description>"
                                + "\n</rdf:RDF>";
-               // TODO: 
https://issues.apache.org/jira/browse/JUNEAU-2assertXmlEquals(expected, rdfXml);
+               assertXmlEquals(expected, rdfXml);
        }
 
        public static class D {

Reply via email to