You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by th...@apache.org on 2006/10/11 14:43:53 UTC
svn commit: r462788 - in
/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom:
NodeImpl.java ParentNode.java
Author: thilina
Date: Wed Oct 11 05:43:52 2006
New Revision: 462788
URL: http://svn.apache.org/viewvc?view=rev&rev=462788
Log:
llom child adding support DOOM
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java?view=diff&rev=462788&r1=462787&r2=462788
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java Wed Oct 11 05:43:52 2006
@@ -15,17 +15,25 @@
*/
package org.apache.axiom.om.impl.dom;
+import org.apache.axiom.om.OMComment;
import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMDocType;
+import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.OMProcessingInstruction;
+import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.axiom.om.impl.OMNodeEx;
import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java?view=diff&rev=462788&r1=462787&r2=462788
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java Wed Oct 11 05:43:52 2006
@@ -15,16 +15,25 @@
*/
package org.apache.axiom.om.impl.dom;
+import org.apache.axiom.om.OMComment;
+import org.apache.axiom.om.OMDocType;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMProcessingInstruction;
+import org.apache.axiom.om.OMText;
import org.apache.axiom.om.impl.OMContainerEx;
import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
+import org.apache.axiom.om.impl.llom.OMNodeImpl;
+import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
import org.apache.axiom.om.impl.traverse.OMChildrenQNameIterator;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -53,7 +62,12 @@
// /
public void addChild(OMNode omNode) {
- this.appendChild((Node) omNode);
+ if (omNode.getOMFactory() instanceof OMDOMFactory) {
+ this.appendChild((Node) omNode);
+ } else {
+ addChild(importNode(omNode));
+ }
+
}
public void buildNext() {
@@ -464,8 +478,78 @@
newnode.appendChild(child.cloneNode(true));
}
}
-
return newnode;
-
}
+
+ /**
+ * This method is intended only to be used by Axiom intenals when merging Objects
+ * from different Axiom implementations to the DOOM implementation.
+ *
+ * @param child
+ * @return
+ */
+ protected OMNode importNode(OMNode child) {
+ int type = child.getType();
+ switch (type) {
+ case (OMNode.ELEMENT_NODE): {
+ OMElement childElement = (OMElement) child;
+ OMElement newElement = (new StAXOMBuilder(this.factory,
+ childElement.getXMLStreamReader())).getDocumentElement();
+ newElement.build();
+ return (OMNode) this.ownerNode.importNode((Element) newElement,
+ true);
+ }
+ case (OMNode.TEXT_NODE): {
+ OMText importedText = (OMText) child;
+ OMText newText;
+ if (importedText.isBinary()) {
+ boolean isOptimize = importedText.isOptimized();
+ newText = this.factory.createOMText(importedText
+ .getDataHandler(), isOptimize);
+ } else if (importedText.getNamespace() != null) {
+ newText = this.factory.createOMText(this, importedText
+ .getTextAsQName(), importedText.getType());
+ } else if (importedText.isCharacters()) {
+ newText = new TextImpl((DocumentImpl) this.getOwnerDocument(),
+ importedText.getTextCharacters(), this.factory);
+ } else {
+ newText = new TextImpl((DocumentImpl) this.getOwnerDocument(),
+ importedText.getText(), this.factory);
+ }
+ return newText;
+ }
+
+ case (OMNode.PI_NODE): {
+ OMProcessingInstruction importedPI = (OMProcessingInstruction) child;
+ OMProcessingInstruction newPI = this.factory
+ .createOMProcessingInstruction(this,
+ importedPI.getTarget(), importedPI.getValue());
+ return newPI;
+ }
+ case (OMNode.COMMENT_NODE): {
+ OMComment importedComment = (OMComment) child;
+ OMComment newComment = this.factory.createOMComment(this,
+ importedComment.getValue());
+ DocumentImpl doc;
+ if (this instanceof DocumentImpl) {
+ doc = (DocumentImpl) this;
+ } else {
+ doc = (DocumentImpl) ((ParentNode) this).getOwnerDocument();
+ }
+ newComment = new CommentImpl(doc, importedComment.getValue(),
+ this.factory);
+ return newComment;
+ }
+ case (OMNode.DTD_NODE): {
+ OMDocType importedDocType = (OMDocType) child;
+ OMDocType newDocType = this.factory.createOMDocType(this,
+ importedDocType.getValue());
+ return newDocType;
+ }
+ default: {
+ throw new UnsupportedOperationException(
+ "Not Implemented Yet for the given node type");
+ }
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org