You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/08/07 09:37:16 UTC

svn commit: r801902 - in /tuscany/java/sca/modules: common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/ databinding-jaxb-axiom/META-INF/ databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/ databinding-jaxb/META-I...

Author: rfeng
Date: Fri Aug  7 07:37:15 2009
New Revision: 801902

URL: http://svn.apache.org/viewvc?rev=801902&view=rev
Log:
Replace the DOMHelper from common-xml module

Removed:
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java
    tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/extension/DOMHelperTestCase.java
Modified:
    tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java
    tuscany/java/sca/modules/databinding-jaxb-axiom/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java
    tuscany/java/sca/modules/databinding-jaxb/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java
    tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java
    tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBindingTestCase.java
    tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTestCase.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBean2DOMNodeTransformer.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMDataBinding.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/SimpleJavaType2Node.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2NodeTransformer.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/String2Node.java
    tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/XMLStreamReader2Node.java
    tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DOM2StAXTestCase.java
    tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java
    tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java
    tuscany/java/sca/modules/implementation-java-runtime/META-INF/MANIFEST.MF
    tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java

Modified: tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java (original)
+++ tuscany/java/sca/modules/common-xml/src/main/java/org/apache/tuscany/sca/common/xml/dom/DOMHelper.java Fri Aug  7 07:37:15 2009
@@ -26,10 +26,12 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.sax.SAXResult;
 import javax.xml.transform.stream.StreamResult;
@@ -97,6 +99,17 @@
         InputSource is = new InputSource(new StringReader(xmlString));
         return builder.parse(is);
     }
+    
+    public Document load(Source source) {
+        Transformer transformer = newTransformer();
+        DOMResult result = new DOMResult(newDocument());
+        try {
+            transformer.transform(source, result);
+        } catch (TransformerException e) {
+            throw new IllegalArgumentException(e);
+        }
+        return (Document)result.getNode();
+    }
 
     public NodeContentHandler createContentHandler(Node root) {
         if (root == null) {

Modified: tuscany/java/sca/modules/databinding-jaxb-axiom/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb-axiom/META-INF/MANIFEST.MF?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb-axiom/META-INF/MANIFEST.MF (original)
+++ tuscany/java/sca/modules/databinding-jaxb-axiom/META-INF/MANIFEST.MF Fri Aug  7 07:37:15 2009
@@ -25,6 +25,7 @@
  org.apache.axiom.om.impl,
  org.apache.axiom.om.impl.builder,
  org.apache.axiom.om.util,
+ org.apache.tuscany.sca.core;version="2.0.0",
  org.apache.tuscany.sca.databinding;version="2.0.0",
  org.apache.tuscany.sca.databinding.impl;version="2.0.0",
  org.apache.tuscany.sca.databinding.jaxb;version="2.0.0",

Modified: tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb-axiom/src/test/java/org/apache/tuscany/databinding/jaxb/axiom/JAXB2OMTestCase.java Fri Aug  7 07:37:15 2009
@@ -26,6 +26,7 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.impl.TransformationContextImpl;
 import org.apache.tuscany.sca.databinding.jaxb.JAXB2Node;
@@ -69,7 +70,7 @@
         System.out.println(sw.toString());
 
         start = System.currentTimeMillis();
-        Node node = new JAXB2Node().transform(po, tContext);
+        Node node = new JAXB2Node(new DefaultExtensionPointRegistry()).transform(po, tContext);
         XMLStreamReader reader = new Node2XMLStreamReader().transform(node, null);
         om = new StAXOMBuilder(reader).getDocumentElement();
         sw = new StringWriter();

Modified: tuscany/java/sca/modules/databinding-jaxb/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/META-INF/MANIFEST.MF?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/META-INF/MANIFEST.MF (original)
+++ tuscany/java/sca/modules/databinding-jaxb/META-INF/MANIFEST.MF Fri Aug  7 07:37:15 2009
@@ -32,7 +32,9 @@
  javax.xml.transform.dom,
  javax.xml.transform.stream,
  org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.common.xml.dom;version="2.0.0",
  org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
+ org.apache.tuscany.sca.core;version="2.0.0",
  org.apache.tuscany.sca.databinding;version="2.0.0",
  org.apache.tuscany.sca.databinding.impl;version="2.0.0",
  org.apache.tuscany.sca.databinding.jaxb;version="2.0.0",

Modified: tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXB2Node.java Fri Aug  7 07:37:15 2009
@@ -21,11 +21,13 @@
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Marshaller;
 
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
+import org.apache.tuscany.sca.databinding.xml.DOMDataBinding;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
@@ -34,7 +36,13 @@
  * @version $Rev$ $Date$
  */
 public class JAXB2Node extends BaseTransformer<Object, Node> implements PullTransformer<Object, Node> {
-
+    private DOMHelper helper;
+    
+    public JAXB2Node(ExtensionPointRegistry registry) {
+        super();
+        helper = DOMHelper.getInstance(registry);
+    }
+    
     public Node transform(Object source, TransformationContext tContext) {
 //        if (source == null) {
 //            return null;
@@ -44,10 +52,10 @@
             Marshaller marshaller = context.createMarshaller();
             // FIXME: The default Marshaller doesn't support
             // marshaller.getNode()
-            Document document = DOMHelper.newDocument();
+            Document document = helper.newDocument();
             Object jaxbElement = JAXBContextHelper.createJAXBElement(context, tContext.getSourceDataType(), source);
             marshaller.marshal(jaxbElement, document);
-            return DOMHelper.adjustElementName(tContext, document.getDocumentElement());
+            return DOMDataBinding.adjustElementName(tContext, document.getDocumentElement());
         } catch (Exception e) {
             throw new TransformationException(e);
         }

Modified: tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBinding.java Fri Aug  7 07:37:15 2009
@@ -26,10 +26,11 @@
 import javax.xml.bind.JAXBElement;
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
 import org.apache.tuscany.sca.databinding.XMLTypeHelper;
 import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
@@ -49,11 +50,13 @@
     
     private JAXBWrapperHandler wrapperHandler;
     private JAXBTypeHelper xmlTypeHelper;
+    private DOMHelper domHelper;
     
-    public JAXBDataBinding() {
+    public JAXBDataBinding(ExtensionPointRegistry registry) {
         super(NAME, JAXBElement.class);
         this.wrapperHandler = new JAXBWrapperHandler();
         this.xmlTypeHelper = new JAXBTypeHelper();
+        this.domHelper = DOMHelper.getInstance(registry);
     }
 
     @Override
@@ -105,7 +108,7 @@
             }
             JAXBContext context = JAXBContextHelper.createJAXBContext(dataType);
             arg = JAXBContextHelper.createJAXBElement(context, dataType, arg);
-            Document doc = DOMHelper.newDocument();
+            Document doc = domHelper.newDocument();
             context.createMarshaller().marshal(arg, doc);
             Object value = context.createUnmarshaller().unmarshal(doc, dataType.getPhysical());
             if (isElement && value instanceof JAXBElement) {

Modified: tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBindingTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBindingTestCase.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBindingTestCase.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBDataBindingTestCase.java Fri Aug  7 07:37:15 2009
@@ -25,6 +25,7 @@
 import javax.xml.bind.JAXBElement;
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
@@ -46,7 +47,7 @@
 
     @Before
     public void setUp() throws Exception {
-        binding = new JAXBDataBinding();
+        binding = new JAXBDataBinding(new DefaultExtensionPointRegistry());
     }
 
     /**

Modified: tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTestCase.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTestCase.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/sca/databinding/jaxb/JAXBTestCase.java Fri Aug  7 07:37:15 2009
@@ -22,6 +22,8 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.impl.TransformationContextImpl;
 import org.apache.tuscany.sca.interfacedef.DataType;
@@ -68,6 +70,8 @@
             + "    </item>"
             + "  </items>"
             + "</ipo:purchaseOrder>";
+    
+    private static ExtensionPointRegistry registry = new DefaultExtensionPointRegistry();
 
     @Test
     public void testTransform() throws Exception {
@@ -85,7 +89,7 @@
         TransformationContext tContext1 = new TransformationContextImpl();
         tContext1.setSourceDataType(sourceDataType);
 
-        JAXB2Node t1 = new JAXB2Node();
+        JAXB2Node t1 = new JAXB2Node(registry);
         Node node = t1.transform(object1, tContext1);
 
         Assert.assertNotNull(node);
@@ -114,7 +118,7 @@
         TransformationContext tContext1 = new TransformationContextImpl();
         tContext1.setSourceDataType(sourceDataType);
 
-        JAXB2Node t1 = new JAXB2Node();
+        JAXB2Node t1 = new JAXB2Node(registry);
         Node node = t1.transform(object1, tContext1);
 
         Assert.assertNotNull(node);
@@ -134,7 +138,7 @@
         tContext1.setSourceDataType(sourceDataType);
 
 
-        JAXB2Node t1 = new JAXB2Node();
+        JAXB2Node t1 = new JAXB2Node(registry);
         PurchaseOrderType po = new ObjectFactory().createPurchaseOrderType();
         Node node = t1.transform(po, tContext1);
 

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBean2DOMNodeTransformer.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBean2DOMNodeTransformer.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBean2DOMNodeTransformer.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/JavaBean2DOMNodeTransformer.java Fri Aug  7 07:37:15 2009
@@ -19,9 +19,9 @@
 package org.apache.tuscany.sca.databinding.javabeans;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -34,15 +34,11 @@
 public class JavaBean2DOMNodeTransformer extends JavaBean2XMLTransformer<Node> {
 
     public static final String COLON = ":";
-    private Document factory;
+    private DOMHelper helper;
     
-    public JavaBean2DOMNodeTransformer() {
+    public JavaBean2DOMNodeTransformer(ExtensionPointRegistry registry) {
         super();
-        try {
-            factory = DOMHelper.newDocument(); 
-        } catch (ParserConfigurationException e) {
-            throw new Java2XMLMapperException(e);
-        }
+        helper = DOMHelper.getInstance(registry);
     }
     
     @Override
@@ -55,16 +51,17 @@
         String qualifedName =
             (qName.getPrefix() == null || qName.getPrefix().length() <= 0) ? qName.getLocalPart()
                 : qName.getPrefix() + COLON + qName.getLocalPart();
-        return factory.createElementNS(qName.getNamespaceURI(), qualifedName);
+        return helper.newDocument().createElementNS(qName.getNamespaceURI(), qualifedName);
     }
 
     @Override
     public void appendText(Node parentElement, String textData) throws Java2XMLMapperException {
+        Document document = helper.newDocument();
         Node textNode;
         if (textData != null) {
-            textNode = factory.createTextNode(textData);
+            textNode = document.createTextNode(textData);
         } else {
-            Attr nil = factory.createAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil");
+            Attr nil = document.createAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil");
             nil.setValue("true");
             textNode = nil;
         }

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMDataBinding.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMDataBinding.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMDataBinding.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMDataBinding.java Fri Aug  7 07:37:15 2009
@@ -21,11 +21,18 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
 import org.apache.tuscany.sca.databinding.impl.BaseDataBinding;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.util.XMLType;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 
 /**
@@ -38,14 +45,17 @@
 
     public static final String ROOT_NAMESPACE = "http://tuscany.apache.org/xmlns/sca/databinding/dom/1.0";
     public static final QName ROOT_ELEMENT = new QName(ROOT_NAMESPACE, "root");
+    
+    private DOMHelper domHelper;
 
-    public DOMDataBinding() {
+    public DOMDataBinding(ExtensionPointRegistry registry) {
         super(NAME, Node.class);
+        this.domHelper = DOMHelper.getInstance(registry);
     }
 
     @Override
     public WrapperHandler getWrapperHandler() {
-        return new DOMWrapperHandler();
+        return new DOMWrapperHandler(domHelper);
     }
 
     @Override
@@ -68,4 +78,49 @@
         }
         return false;
     }
+
+    /**
+     * @param context
+     * @param element
+     */
+    public static Element adjustElementName(TransformationContext context, Element element) {
+        if (context != null) {
+            DataType dataType = context.getTargetDataType();
+            Object logical = dataType == null ? null : dataType.getLogical();
+            if (!(logical instanceof XMLType)) {
+                return element;
+            }
+            XMLType xmlType = (XMLType)logical;
+            QName name = new QName(element.getNamespaceURI(), element.getLocalName());
+            if (xmlType.isElement() && !xmlType.getElementName().equals(name)) {
+                QName newName = xmlType.getElementName();
+                String prefix = newName.getPrefix();
+                String qname = newName.getLocalPart();
+                if (prefix != null && !prefix.equals("")) {
+                    qname = prefix + ":" + qname;
+                }
+                Document doc = element.getOwnerDocument();
+                Element newElement = doc.createElementNS(newName.getNamespaceURI(), qname);
+                // Copy the attributes to the new element
+                NamedNodeMap attrs = element.getAttributes();
+                for (int i = 0; i < attrs.getLength(); i++) {
+                    Attr attr = (Attr)doc.importNode(attrs.item(i), true);
+                    newElement.getAttributes().setNamedItem(attr);
+                }
+    
+                // Move all the children
+                while (element.hasChildNodes()) {
+                    newElement.appendChild(element.getFirstChild());
+                }
+    
+                // Replace the old node with the new node
+                if (element.getParentNode() != null) {
+                    element.getParentNode().replaceChild(newElement, element);
+                }
+    
+                return newElement;
+            }
+        }
+        return element;
+    }
 }

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/DOMWrapperHandler.java Fri Aug  7 07:37:15 2009
@@ -25,11 +25,9 @@
 import java.util.Set;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.tuscany.sca.databinding.TransformationException;
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
 import org.apache.tuscany.sca.databinding.WrapperHandler;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
@@ -41,22 +39,21 @@
 import org.w3c.dom.NodeList;
 
 public class DOMWrapperHandler implements WrapperHandler<Node> {
-
-    public DOMWrapperHandler() {
+    private DOMHelper domHelper;
+    
+    public DOMWrapperHandler(DOMHelper domHelper) {
         super();
+        this.domHelper = domHelper;
     }
 
     public Node create(Operation operation, boolean input) {
-        try {
-            WrapperInfo wrapperInfo = operation.getWrapper();
-            ElementInfo element = input ? wrapperInfo.getInputWrapperElement() : wrapperInfo.getOutputWrapperElement();
-            // Class<?> wrapperClass = input ? wrapperInfo.getInputWrapperClass() : wrapperInfo.getOutputWrapperClass();
-            Document document = DOMHelper.newDocument();
-            QName name = element.getQName();
-            return DOMHelper.createElement(document, name);
-        } catch (ParserConfigurationException e) {
-            throw new TransformationException(e);
-        }
+
+        WrapperInfo wrapperInfo = operation.getWrapper();
+        ElementInfo element = input ? wrapperInfo.getInputWrapperElement() : wrapperInfo.getOutputWrapperElement();
+        // Class<?> wrapperClass = input ? wrapperInfo.getInputWrapperClass() : wrapperInfo.getOutputWrapperClass();
+        Document document = domHelper.newDocument();
+        QName name = element.getQName();
+        return DOMHelper.createElement(document, name);
     }
 
     public void setChildren(Node wrapper,

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/SimpleJavaType2Node.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/SimpleJavaType2Node.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/SimpleJavaType2Node.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/SimpleJavaType2Node.java Fri Aug  7 07:37:15 2009
@@ -19,12 +19,11 @@
 package org.apache.tuscany.sca.databinding.xml;
 
 import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
 
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.TransformationContext;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.apache.tuscany.sca.databinding.impl.Java2SimpleTypeTransformer;
-import org.apache.tuscany.sca.databinding.javabeans.Java2XMLMapperException;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -35,23 +34,19 @@
  * @version $Rev$ $Date$
  */
 public class SimpleJavaType2Node extends Java2SimpleTypeTransformer<Node> {
-
-    private Document factory;
-
-    public SimpleJavaType2Node() {
+    private DOMHelper helper;
+    
+    public SimpleJavaType2Node(ExtensionPointRegistry registry) {
         super();
-        try {
-            factory = DOMHelper.newDocument();
-        } catch (ParserConfigurationException e) {
-            throw new Java2XMLMapperException(e);
-        }
+        helper = DOMHelper.getInstance(registry);
     }
-
+    
     @Override
     protected Node createElement(QName element, String text, TransformationContext context) {
         if (element == null) {
             element = DOMDataBinding.ROOT_ELEMENT;
         }
+        Document factory = helper.newDocument();
         Node root = DOMHelper.createElement(factory, element);
         if (text != null) {
             root.appendChild(factory.createTextNode(text));

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2NodeTransformer.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2NodeTransformer.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2NodeTransformer.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/Source2NodeTransformer.java Fri Aug  7 07:37:15 2009
@@ -19,14 +19,13 @@
 package org.apache.tuscany.sca.databinding.xml;
 
 import javax.xml.transform.Source;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMResult;
 
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 
@@ -37,15 +36,17 @@
  */
 public class Source2NodeTransformer extends BaseTransformer<Source, Node> implements
     PullTransformer<Source, Node> {
-    private static final TransformerFactory FACTORY = TransformerFactory.newInstance();
-
+    private DOMHelper helper;
+    
+    public Source2NodeTransformer(ExtensionPointRegistry registry) {
+        super();
+        helper = DOMHelper.getInstance(registry);
+    }
+    
     public Node transform(Source source, TransformationContext context) {
         try {
-            javax.xml.transform.Transformer transformer = FACTORY.newTransformer();
-            DOMResult result = new DOMResult();
-            transformer.transform(source, result);
-            Document doc = (Document) result.getNode();
-            return DOMHelper.adjustElementName(context, doc.getDocumentElement());
+            Document doc = helper.load(source);
+            return DOMDataBinding.adjustElementName(context, doc.getDocumentElement());
         } catch (Exception e) {
             throw new TransformationException(e);
         }

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/String2Node.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/String2Node.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/String2Node.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/String2Node.java Fri Aug  7 07:37:15 2009
@@ -18,25 +18,25 @@
  */
 package org.apache.tuscany.sca.databinding.xml;
 
-import java.io.StringReader;
-
-import javax.xml.parsers.DocumentBuilder;
-
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.PullTransformer;
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.w3c.dom.Node;
-import org.xml.sax.InputSource;
 
 public class String2Node extends BaseTransformer<String, Node> implements PullTransformer<String, Node> {
-
+    private DOMHelper helper;
+    
+    public String2Node(ExtensionPointRegistry registry) {
+        super();
+        helper = DOMHelper.getInstance(registry);
+    }
+    
     public Node transform(String source, TransformationContext context) {
         try {
-            DocumentBuilder builder = DOMHelper.newDocumentBuilder();
-            InputSource inputSource = new InputSource(new StringReader(source));
-            return builder.parse(inputSource);
+            return helper.load(source);
         } catch (Exception e) {
             throw new TransformationException(e);
         }

Modified: tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/XMLStreamReader2Node.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/XMLStreamReader2Node.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/XMLStreamReader2Node.java (original)
+++ tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/XMLStreamReader2Node.java Fri Aug  7 07:37:15 2009
@@ -26,7 +26,6 @@
 import org.apache.tuscany.sca.databinding.TransformationContext;
 import org.apache.tuscany.sca.databinding.TransformationException;
 import org.apache.tuscany.sca.databinding.impl.BaseTransformer;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.xml.sax.ContentHandler;
@@ -55,7 +54,7 @@
             source.close();
             if (node instanceof Document) {
                 Document doc = (Document)node;
-                return DOMHelper.adjustElementName(context, doc.getDocumentElement());
+                return DOMDataBinding.adjustElementName(context, doc.getDocumentElement());
             } else {
                 return node;
             }

Modified: tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DOM2StAXTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DOM2StAXTestCase.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DOM2StAXTestCase.java (original)
+++ tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DOM2StAXTestCase.java Fri Aug  7 07:37:15 2009
@@ -78,7 +78,7 @@
     
     @Test
     public void testTransformation() throws Exception {
-        String2Node t1 = new String2Node();
+        String2Node t1 = new String2Node(registry);
         Node node = t1.transform(IPO_XML, null);
         Node2XMLStreamReader t2 = new Node2XMLStreamReader();
         XMLStreamReader reader = t2.transform(node, null);
@@ -90,7 +90,7 @@
 
     @Test
     public void testTransformation2() throws Exception {
-        String2Node t1 = new String2Node();
+        String2Node t1 = new String2Node(registry);
         Node node = t1.transform(CRAZY_XML, null);
         Node2XMLStreamReader t2 = new Node2XMLStreamReader();
         XMLStreamReader reader = t2.transform(node, null);
@@ -103,7 +103,7 @@
 
     @Test
     public void testTransformation3() throws Exception {
-        String2Node t1 = new String2Node();
+        String2Node t1 = new String2Node(registry);
         Node node = t1.transform(IPO_XML, null);
         DOMXmlNodeImpl element = new DOMXmlNodeImpl(node);
         XmlTreeStreamReaderImpl reader = new XmlTreeStreamReaderImpl(element);

Modified: tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java (original)
+++ tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/DataPipeTestCase.java Fri Aug  7 07:37:15 2009
@@ -25,9 +25,10 @@
 import java.io.Reader;
 import java.io.Writer;
 
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.databinding.DataPipe;
 import org.apache.tuscany.sca.databinding.DataPipeTransformer;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.apache.tuscany.sca.databinding.impl.PipedTransformer;
 import org.junit.Assert;
 import org.junit.Test;
@@ -79,7 +80,7 @@
         Writer2ReaderDataPipe pipe = new Writer2ReaderDataPipe();
         PipedTransformer<Node, Writer, Reader> transformer =
             new PipedTransformer<Node, Writer, Reader>(node2Writer, pipe);
-        Document document = DOMHelper.newDocument();
+        Document document = DOMHelper.getInstance(new DefaultExtensionPointRegistry()).newDocument();
         Element element = document.createElementNS("http://ns1", "root");
         document.appendChild(element);
         Reader reader = transformer.transform(document, null);

Modified: tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java (original)
+++ tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/Node2StringTestCase.java Fri Aug  7 07:37:15 2009
@@ -18,7 +18,8 @@
  */
 package org.apache.tuscany.sca.databinding.xml;
 
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.junit.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -31,7 +32,7 @@
     
     @Test
     public void testTransformation() throws Exception {
-        Document document = DOMHelper.newDocument();
+        Document document = DOMHelper.getInstance(new DefaultExtensionPointRegistry()).newDocument();
         Element element = document.createElementNS("http://ns1", "test");
         document.appendChild(element);
 

Modified: tuscany/java/sca/modules/implementation-java-runtime/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-java-runtime/META-INF/MANIFEST.MF?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-java-runtime/META-INF/MANIFEST.MF (original)
+++ tuscany/java/sca/modules/implementation-java-runtime/META-INF/MANIFEST.MF Fri Aug  7 07:37:15 2009
@@ -28,6 +28,7 @@
 Bundle-Description: Apache Tuscany SCA Java Implementation Model
 Import-Package: javax.xml.namespace,
  org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.common.xml.dom;version="2.0.0",
  org.apache.tuscany.sca.context;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",
  org.apache.tuscany.sca.core.context;version="2.0.0",

Modified: tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java?rev=801902&r1=801901&r2=801902&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java (original)
+++ tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/injection/JavaPropertyValueObjectFactory.java Fri Aug  7 07:37:15 2009
@@ -25,6 +25,7 @@
 
 import org.apache.tuscany.sca.assembly.ComponentProperty;
 import org.apache.tuscany.sca.assembly.Property;
+import org.apache.tuscany.sca.common.xml.dom.DOMHelper;
 import org.apache.tuscany.sca.context.PropertyValueFactory;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.UtilityExtensionPoint;
@@ -32,7 +33,6 @@
 import org.apache.tuscany.sca.core.factory.ObjectFactory;
 import org.apache.tuscany.sca.databinding.Mediator;
 import org.apache.tuscany.sca.databinding.SimpleTypeMapper;
-import org.apache.tuscany.sca.databinding.impl.DOMHelper;
 import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl;
 import org.apache.tuscany.sca.databinding.xml.DOMDataBinding;
 import org.apache.tuscany.sca.implementation.java.JavaElementImpl;