X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Fnext%2FDocBuffer.java;h=b936c0ad1e2c1942c9f5ded6eee8692c91b24b7a;hb=152e6a84d89f748c1dc4877594702732a6147c4f;hp=b2d1f0a15a7972f2b4d31ee76a966a8275f12a69;hpb=6e40b32ee7b4e65f600f6aeb25838d6d40e76838;p=jsvc.git diff --git a/src/dolda/jsvc/next/DocBuffer.java b/src/dolda/jsvc/next/DocBuffer.java index b2d1f0a..b936c0a 100644 --- a/src/dolda/jsvc/next/DocBuffer.java +++ b/src/dolda/jsvc/next/DocBuffer.java @@ -46,7 +46,9 @@ public class DocBuffer { Node c = cursor(cursor); if(c == null) throw(new RuntimeException("No such cursor: `" + cursor + "'")); - c.getParentNode().insertBefore(doc.importNode(n, true), c); + if(n.getOwnerDocument() != doc) + n = doc.importNode(n, true); + c.getParentNode().insertBefore(n, c); } public Element makecursor(String name) { @@ -69,9 +71,25 @@ public class DocBuffer { } public Text text(String text) { + if(text == null) + return(null); return(doc.createTextNode(text)); } + public Node asnode(Object o) { + if(o == null) + return(text("")); + if(o instanceof Node) { + Node n = (Node)o; + if(n.getOwnerDocument() != doc) + return(doc.importNode(n, true)); + return(n); + } + if(o instanceof String) + return(text((String)o)); + throw(new RuntimeException("Cannot convert a " + o.getClass().getName() + " to a DOM node")); + } + public void finalise() { Node n = doc; while(true) {