Author: chinthaka
Date: Mon Sep 11 07:41:40 2006
New Revision: 442233

URL: http://svn.apache.org/viewvc?view=rev&rev=442233
Log:
Adding a method to import nodes as a util method. Whether to move this to 
OMElement interface is still under discussion in 
http://issues.apache.org/jira/browse/WSCOMMONS-90

Added:
    
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/util/
    
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/util/OMElementHelperTest.java
Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java?view=diff&rev=442233&r1=442232&r2=442233
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/util/ElementHelper.java
 Mon Sep 11 07:41:40 2006
@@ -15,16 +15,15 @@
  */
 package org.apache.axiom.om.util;
 
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.*;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
-import java.util.Iterator;
-import java.net.URLDecoder;
 import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Iterator;
+
 /**
  * Helper class to provide extra utility stuff against elements.
  * The code is designed to work with any element implementation.
@@ -36,6 +35,7 @@
 
     /**
      * Constructs and binds to an element.
+     *
      * @param element element to work with
      */
     public ElementHelper(OMElement element) {
@@ -135,6 +135,26 @@
                     "Href attribute not found in XOP:Include element");
         }
         return contentID;
+    }
+
+    /**
+     * Some times two OMElements needs to be added to the same object tree. 
But in Axiom, a single tree should always
+     * contain object created from the same type of factory (eg: 
LinkedListImplFactory, DOMFactory, etc.,). If one OMElement
+     * is created from a different factory than that of the factory which was 
used to create the object in the existing
+     * tree, we need to convert the new OMElement to match to the factory of 
existing object tree.
+     * This method will oonvert omElement to the given omFactory.
+     *
+     */
+    public static OMElement importOMElement(OMElement omElement, OMFactory 
omFactory) {
+        // first check whether the given OMElement has the same omFactory
+        if (omElement.getOMFactory().getClass().isInstance(omFactory)) {
+            return omElement;
+        }else {
+            OMElement documentElement = new StAXOMBuilder(omFactory, 
omElement.getXMLStreamReader()).getDocumentElement();
+            documentElement.build();
+            return documentElement;
+        }
+
     }
 
 }

Added: 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/util/OMElementHelperTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/util/OMElementHelperTest.java?view=auto&rev=442233
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/util/OMElementHelperTest.java
 (added)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/util/OMElementHelperTest.java
 Mon Sep 11 07:41:40 2006
@@ -0,0 +1,57 @@
+package org.apache.axiom.om.util;
+
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.dom.DOOMAbstractFactory;
+import org.custommonkey.xmlunit.XMLTestCase;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class OMElementHelperTest extends XMLTestCase {
+
+    private String testXMLFilePath = "test-resources/soap/soapmessage.xml";
+
+
+
+    public void testImportOMElement() {
+        try {
+            XMLStreamReader xmlStreamReader = 
XMLInputFactory.newInstance().createXMLStreamReader(new 
FileInputStream(testXMLFilePath));
+            OMElement documentElement = new 
StAXOMBuilder(OMAbstractFactory.getOMFactory(), 
xmlStreamReader).getDocumentElement();
+
+            // first lets try to import an element created from llom in to 
llom factory. This should return the same element
+            assertTrue(ElementHelper.importOMElement(documentElement, 
OMAbstractFactory.getOMFactory()) == documentElement);
+
+            // then lets pass in an OMElement created using llom and pass 
DOOMFactory
+            OMElement importedElement = 
ElementHelper.importOMElement(documentElement, 
DOOMAbstractFactory.getOMFactory());
+            assertTrue(importedElement != documentElement);
+            
assertTrue(importedElement.getOMFactory().getClass().isInstance(DOOMAbstractFactory.getOMFactory()));
+
+        } catch (XMLStreamException e) {
+            e.printStackTrace();
+            fail();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            fail();
+        }
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to