From: Wolfgang M. M. <wol...@us...> - 2004-06-27 21:10:47
|
Update of /cvsroot/exist/eXist-1.0/src/org/exist/memtree In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8241/src/org/exist/memtree Modified Files: DocumentImpl.java AttributeImpl.java MemTreeBuilder.java Log Message: Added support for dynamic node constructors in XQuery. Index: MemTreeBuilder.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/memtree/MemTreeBuilder.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** MemTreeBuilder.java 28 May 2004 10:54:11 -0000 1.10 --- MemTreeBuilder.java 27 Jun 2004 21:10:06 -0000 1.11 *************** *** 167,177 **** } ! public void addAttribute(QName qname, String value) { int lastNode = doc.getLastNode(); ! if(doc.nodeKind[lastNode] != Node.ELEMENT_NODE) { ! characters(value); } else { ! doc.addAttribute(lastNode, qname, value); } } --- 167,178 ---- } ! public int addAttribute(QName qname, String value) { int lastNode = doc.getLastNode(); ! if(0 < lastNode && doc.nodeKind[lastNode] != Node.ELEMENT_NODE) { ! lastNode = characters(value); } else { ! lastNode = doc.addAttribute(lastNode, qname, value); } + return lastNode; } Index: AttributeImpl.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/memtree/AttributeImpl.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AttributeImpl.java 2 Mar 2004 08:35:44 -0000 1.3 --- AttributeImpl.java 27 Jun 2004 21:10:06 -0000 1.4 *************** *** 24,27 **** --- 24,28 ---- import org.exist.dom.QName; + import org.exist.xquery.value.Type; import org.w3c.dom.Attr; import org.w3c.dom.DOMException; *************** *** 56,60 **** --- 57,77 ---- return getQName().toString(); } + + /* (non-Javadoc) + * @see org.w3c.dom.Node#getNodeType() + */ + public short getNodeType() { + return Node.ATTRIBUTE_NODE; + } + + + /* (non-Javadoc) + * @see org.exist.memtree.NodeImpl#getType() + */ + public int getType() { + return Type.ATTRIBUTE; + } + /* (non-Javadoc) * @see org.w3c.dom.Node#getLocalName() Index: DocumentImpl.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/memtree/DocumentImpl.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** DocumentImpl.java 28 May 2004 10:54:11 -0000 1.9 --- DocumentImpl.java 27 Jun 2004 21:10:06 -0000 1.10 *************** *** 23,26 **** --- 23,27 ---- import java.util.Arrays; + import org.apache.xerces.dom.AttrNSImpl; import org.exist.dom.NodeProxy; import org.exist.dom.QName; *************** *** 251,254 **** --- 252,259 ---- } + public NodeImpl getAttribute(int nodeNr) throws DOMException { + return new AttributeImpl(this, nodeNr); + } + public NodeImpl getNode(int nodeNr) throws DOMException { if (nodeNr == 0) return this; *************** *** 520,528 **** } } ! private void startNode(NodeImpl node, Receiver receiver) throws SAXException { int nr = node.nodeNumber; ! switch (nodeKind[nr]) { case Node.ELEMENT_NODE: QName nodeName = (QName) document.namePool --- 525,533 ---- } } ! private void startNode(NodeImpl node, Receiver receiver) throws SAXException { int nr = node.nodeNumber; ! switch (node.getNodeType()) { case Node.ELEMENT_NODE: QName nodeName = (QName) document.namePool *************** *** 544,547 **** --- 549,556 ---- document.alphaLen[nr]); break; + case Node.ATTRIBUTE_NODE: + QName attrQName = (QName) document.namePool.get(document.attrName[nr]); + receiver.attribute(attrQName, attrValue[nr]); + break; case Node.COMMENT_NODE: receiver.comment(document.characters, document.alpha[nr], |