summaryrefslogtreecommitdiffstats
path: root/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java')
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java43
1 files changed, 12 insertions, 31 deletions
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java
index bdad745b6f..ce89f9dd8c 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/Xutil.java
@@ -45,18 +45,15 @@ import org.w3c.dom.NodeList;
* Just for fun, a little bit of magic code and utility functions to help work with XML DOM.
*/
class Xutil {
- static class NodeBuilder {
- String ns;
- String name;
- NodeBuilder[] children;
- String text;
+ interface NodeBuilder {
+ Node build(Document doc);
}
/**
* Convert a name and a list of children to a document element.
*/
static Element xdom(String ns, String name, final NodeBuilder... nodes) {
- return (Element)node(elem(ns, name, nodes), db.newDocument());
+ return (Element)elem(ns, name, nodes).build(db.newDocument());
}
/**
@@ -64,21 +61,17 @@ class Xutil {
*/
static NodeBuilder elem(final String uri, final String n, final NodeBuilder... nodes) {
return new NodeBuilder() {
- {
- this.ns = uri;
- this.name = n;
- this.children = nodes;
+ public Node build(Document doc) {
+ final Element e = doc.createElementNS(uri, n);
+ for(final NodeBuilder n: nodes)
+ e.appendChild(n.build(doc));
+ return e;
}
};
}
static NodeBuilder elem(final String n, final NodeBuilder... nodes) {
- return new NodeBuilder() {
- {
- this.name = n;
- this.children = nodes;
- }
- };
+ return elem(null, n, nodes);
}
/**
@@ -86,8 +79,8 @@ class Xutil {
*/
static NodeBuilder text(final String t) {
return new NodeBuilder() {
- {
- this.text = t;
+ public Node build(final Document doc) {
+ return doc.createTextNode(t);
}
};
}
@@ -102,18 +95,6 @@ class Xutil {
}
}
- private static Element link(final Element e, final Document doc, final NodeBuilder... nodes) {
- for(final NodeBuilder c: nodes)
- e.appendChild(node(c, doc));
- return e;
- }
-
- private static Node node(NodeBuilder node, Document doc) {
- if(node.text != null)
- return doc.createTextNode(node.text);
- return link(doc.createElementNS(node.ns, node.name), doc, node.children);
- }
-
/**
* Convert an element to XML.
*/
@@ -144,7 +125,7 @@ class Xutil {
}
/**
- * A pure Java FP-style alternative to xpath.
+ * A pure Java FP-style alternative to xpath for DOM.
*/
interface Mapper<T> {
T map(final Element e);