You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2005/11/30 16:42:55 UTC
svn commit: r349966 - in /webservices/axis2/trunk/java/modules:
saaj/src/org/apache/axis2/om/impl/dom/ xml/src/org/apache/axis2/om/
xml/src/org/apache/axis2/om/impl/llom/ xml/test/org/apache/axis2/om/
Author: chinthaka
Date: Wed Nov 30 07:42:30 2005
New Revision: 349966
URL: http://svn.apache.org/viewcvs?rev=349966&view=rev
Log:
implemented cloning ability for OM. This is only implemented in llom and not in "doom" ( DOm on OM :) )
Modified:
webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/om/impl/dom/ElementImpl.java
webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/OMElement.java
webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java
webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/OMElementCloneTest.java
Modified: webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/om/impl/dom/ElementImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/om/impl/dom/ElementImpl.java?rev=349966&r1=349965&r2=349966&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/om/impl/dom/ElementImpl.java (original)
+++ webservices/axis2/trunk/java/modules/saaj/src/org/apache/axis2/om/impl/dom/ElementImpl.java Wed Nov 30 07:42:30 2005
@@ -926,9 +926,13 @@
ElementHelper helper = new ElementHelper(this);
return helper.resolveQName(qname);
}
-
+
+ public OMElement cloneOMElement() {
+ throw new UnsupportedOperationException("Cloning is not supported yet !!");
+ }
+
public NamedNodeMap getAttributes() {
- return this.attributes;
+ return this.attributes;
}
/**
Modified: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/OMElement.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/OMElement.java?rev=349966&r1=349965&r2=349966&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/OMElement.java (original)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/OMElement.java Wed Nov 30 07:42:30 2005
@@ -296,5 +296,12 @@
*/
QName resolveQName(String qname);
+ /**
+ * This method will clone this element. But both elements will be build compleletely. So you will
+ * lose the differed building capability.
+ * @return
+ */
+ public OMElement cloneOMElement();
+
}
Modified: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java?rev=349966&r1=349965&r2=349966&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMElementImpl.java Wed Nov 30 07:42:30 2005
@@ -24,6 +24,7 @@
import org.apache.axis2.om.impl.llom.traverse.OMChildrenIterator;
import org.apache.axis2.om.impl.llom.traverse.OMChildrenQNameIterator;
import org.apache.axis2.om.impl.llom.util.EmptyIterator;
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
import org.apache.axis2.om.util.ElementHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,10 +33,7 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamConstants;
-import javax.xml.stream.XMLOutputFactory;
import java.io.ByteArrayOutputStream;
-import java.io.OutputStream;
-import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
@@ -852,5 +850,11 @@
public QName resolveQName(String qname) {
ElementHelper helper = new ElementHelper(this);
return helper.resolveQName(qname);
+ }
+
+ public OMElement cloneOMElement() {
+ OMElement clonedElement = new StAXOMBuilder(this.getXMLStreamReader(true)).getDocumentElement();
+ clonedElement.build();
+ return clonedElement;
}
}
Modified: webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/OMElementCloneTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/OMElementCloneTest.java?rev=349966&r1=349965&r2=349966&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/OMElementCloneTest.java (original)
+++ webservices/axis2/trunk/java/modules/xml/test/org/apache/axis2/om/OMElementCloneTest.java Wed Nov 30 07:42:30 2005
@@ -36,7 +36,7 @@
File dir = new File(TestConstants.TEST_RESOURCES, TestConstants.SOAP_DIR);
- public void testElementCloning() throws Exception {
+ public void testElementCloningWithoutUsingOMElementMethod() throws Exception {
SOAPEnvelope soapEnvelope =
(SOAPEnvelope) OMTestUtils.getOMBuilder(
new File(dir, TestConstants.SOAPMESSAGE))
@@ -45,6 +45,28 @@
OMElement firstClonedBodyElement = new StAXOMBuilder(body.getXMLStreamReader()).getDocumentElement();
OMElement secondClonedBodyElement = new StAXOMBuilder(body.getXMLStreamReader()).getDocumentElement();
+
+ // first check whether both have the same information
+ assertXMLEqual(newDocument(body.toString()), newDocument(firstClonedBodyElement.toString()));
+ assertXMLEqual(newDocument(body.toString()), newDocument(secondClonedBodyElement.toString()));
+ assertXMLEqual(newDocument(firstClonedBodyElement.toString()), newDocument(secondClonedBodyElement.toString()));
+
+ // lets check some links. They must not be equal
+ assertNotSame(body.getParent(), firstClonedBodyElement.getParent());
+ assertNotSame(body.getParent(), secondClonedBodyElement.getParent());
+ assertNotSame(firstClonedBodyElement.getParent(), secondClonedBodyElement.getParent());
+
+ }
+
+ public void testElementCloningUsingOMElementMethod() throws Exception {
+ SOAPEnvelope soapEnvelope =
+ (SOAPEnvelope) OMTestUtils.getOMBuilder(
+ new File(dir, TestConstants.SOAPMESSAGE))
+ .getDocumentElement();
+ SOAPBody body = soapEnvelope.getBody();
+
+ OMElement firstClonedBodyElement = body.cloneOMElement();
+ OMElement secondClonedBodyElement = body.cloneOMElement();
// first check whether both have the same information
assertXMLEqual(newDocument(body.toString()), newDocument(firstClonedBodyElement.toString()));