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 2007/09/19 02:28:39 UTC

svn commit: r577121 - in /incubator/tuscany/branches/sca-java-1.0: itest/properties/src/main/java/mysca/test/myservice/impl/ itest/properties/src/main/resources/ modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/ modules/...

Author: rfeng
Date: Tue Sep 18 17:28:38 2007
New Revision: 577121

URL: http://svn.apache.org/viewvc?rev=577121&view=rev
Log:
Check in the databinding improvement as it fixes TUSCANY-1735

Added:
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java
      - copied unchanged from r576725, incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/DataObject2Node.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/Node2DataObject.java
      - copied unchanged from r576725, incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/Node2DataObject.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/DataObject2NodeTestCase.java
      - copied unchanged from r576725, incubator/tuscany/java/sca/modules/databinding-sdo/src/test/java/org/apache/tuscany/sca/databinding/sdo/DataObject2NodeTestCase.java
Modified:
    incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/java/mysca/test/myservice/impl/MyServiceImpl.java
    incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/resources/PropertyTest.composite
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/DataObject2NodeInfoTransformer.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2DataObjectTransformer.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java
    incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
    incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java

Modified: incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/java/mysca/test/myservice/impl/MyServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/java/mysca/test/myservice/impl/MyServiceImpl.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/java/mysca/test/myservice/impl/MyServiceImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/java/mysca/test/myservice/impl/MyServiceImpl.java Tue Sep 18 17:28:38 2007
@@ -37,7 +37,7 @@
     protected String year = "2006";
 
     @ComponentName
-    private String componentName;
+    protected String componentName;
 
 
     private Logger logger;

Modified: incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/resources/PropertyTest.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/resources/PropertyTest.composite?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/resources/PropertyTest.composite (original)
+++ incubator/tuscany/branches/sca-java-1.0/itest/properties/src/main/resources/PropertyTest.composite Tue Sep 18 17:28:38 2007
@@ -20,6 +20,7 @@
        xmlns:foo="http://foo" 
        xmlns:cust="http://www.example.com/Customer"
        xmlns:dbsdo="http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0"
+       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://foo"
        name="PropertyTest"
 	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-axiom/src/main/java/org/apache/tuscany/sca/databinding/axiom/OMElementWrapperHandler.java Tue Sep 18 17:28:38 2007
@@ -110,15 +110,21 @@
 
     public Object getChild(OMElement wrapper, ElementInfo childElement, int index, TransformationContext context) {
         int pos = 0;
+        String wrapperNS = wrapper.getQName().getNamespaceURI();
         for (Iterator i = wrapper.getChildElements(); i.hasNext();) {
             OMElement e = (OMElement)i.next();
             if (pos == index) {
                 TypeInfo type = childElement.getType();
-                if (type != null) {
+                if (!childElement.getQName().equals(e.getQName()) && type != null) {
                     OMAttribute attr = e.getAttribute(XSI_TYPE_QNAME);
                     if (attr == null) {
-                        OMNamespace ns =
-                            e.getOMFactory().createOMNamespace(type.getQName().getNamespaceURI(), "_typens_");
+                        String typeNS = type.getQName().getNamespaceURI();
+                        if (wrapperNS != null) {
+                            // FIXME: [rfeng] Workaround for TUSCANY-1713, assuming the type
+                            // namespace is the same as the wrapper
+                            typeNS = wrapperNS;
+                        }
+                        OMNamespace ns = e.getOMFactory().createOMNamespace(typeNS, "_typens_");
                         e.declareNamespace(ns);
                         OMNamespace xsiNS =
                             e.getOMFactory().createOMNamespace(XSI_TYPE_QNAME.getNamespaceURI(),

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/DataObject2NodeInfoTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/DataObject2NodeInfoTransformer.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/DataObject2NodeInfoTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/DataObject2NodeInfoTransformer.java Tue Sep 18 17:28:38 2007
@@ -18,18 +18,7 @@
  */
 package org.apache.tuscany.sca.databinding.saxon;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-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.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMResult;
-import javax.xml.transform.stream.StreamSource;
 
 import net.sf.saxon.om.NodeInfo;
 
@@ -37,10 +26,11 @@
 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 commonj.sdo.DataObject;
+import commonj.sdo.helper.XMLDocument;
 import commonj.sdo.helper.XMLHelper;
-import commonj.sdo.impl.HelperProvider;
 
 /**
  * Transforms SDO DataObject-s to NodeInfo objects needed by Saxon parser
@@ -64,7 +54,8 @@
     }
 
     public NodeInfo transform(DataObject source, TransformationContext context) {
-        XMLHelper helper = HelperProvider.INSTANCE.xmlHelper();
+        // FIXME: Need to create the HelperContext from the transformation context
+        XMLHelper helper = XMLHelper.INSTANCE;
         String name = null;
         if (source.getClass().getInterfaces().length > 0) {
             name = source.getClass().getInterfaces()[0].getSimpleName();
@@ -76,32 +67,15 @@
             name = Character.toLowerCase(name.charAt(0)) + name.substring(1, name.length());
         }
 
-        DOMResult domResult = new DOMResult();
-
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try {
-            helper.save(source, null, name, baos);
-            baos.flush();
-            baos.close();
-        } catch (IOException e) {
-            throw new TransformationException(e);
-        }
-
-        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        Source src = new StreamSource(bais);
-
         try {
-            Transformer transformer = TransformerFactory.newInstance().newTransformer();
-            transformer.transform(src, domResult);
-        } catch (TransformerConfigurationException e) {
-            throw new TransformationException(e);
-        } catch (TransformerFactoryConfigurationError e) {
-            throw new TransformationException(e);
-        } catch (TransformerException e) {
+            DOMResult domResult = new DOMResult(DOMHelper.newDocument());
+            XMLDocument xmlDoc = helper.createDocument(source, null, name);
+            helper.save(xmlDoc, domResult, null);
+            return node2NodeInfoTransformer.transform(domResult.getNode(), context);
+        } catch (Exception e) {
             throw new TransformationException(e);
         }
 
-        return node2NodeInfoTransformer.transform(domResult.getNode(), context);
     }
 
     @Override
@@ -116,7 +90,7 @@
 
     @Override
     public int getWeight() {
-        return 10;
+        return 30 + node2NodeInfoTransformer.getWeight();
     }
 
 }

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/Node2NodeInfoTransformer.java Tue Sep 18 17:28:38 2007
@@ -22,7 +22,6 @@
 
 import net.sf.saxon.Configuration;
 import net.sf.saxon.event.Builder;
-import net.sf.saxon.om.DocumentInfo;
 import net.sf.saxon.om.NodeInfo;
 import net.sf.saxon.trans.XPathException;
 
@@ -30,6 +29,7 @@
 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;
 
 /**
@@ -46,9 +46,10 @@
         if (configuration == null) {
             configuration = new Configuration();
         }
-        DocumentInfo docInfo = null;
+        NodeInfo docInfo = null;
         try {
-        	docInfo = (DocumentInfo)Builder.build(new DOMSource(source), null, configuration);
+            source = DOMHelper.promote(source);
+            docInfo = Builder.build(new DOMSource(source), null, configuration);
         } catch (XPathException e) {
             throw new TransformationException(e);
         }

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2DataObjectTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2DataObjectTransformer.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2DataObjectTransformer.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-saxon/src/main/java/org/apache/tuscany/sca/databinding/saxon/NodeInfo2DataObjectTransformer.java Tue Sep 18 17:28:38 2007
@@ -18,21 +18,15 @@
  */
 package org.apache.tuscany.sca.databinding.saxon;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
 
 import net.sf.saxon.om.NodeInfo;
 
 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.w3c.dom.Document;
 
@@ -59,7 +53,7 @@
 
     public NodeInfo2DataObjectTransformer() {
         this.nodeInfo2NodeTransformer = new NodeInfo2NodeTransformer();
-    }    
+    }
 
     @Override
     protected Class getSourceType() {
@@ -73,7 +67,7 @@
 
     @Override
     public int getWeight() {
-        return 10 + nodeInfo2NodeTransformer.getWeight();
+        return 30 + nodeInfo2NodeTransformer.getWeight();
     }
 
     public DataObject transform(NodeInfo source, TransformationContext context) {
@@ -83,30 +77,12 @@
     }
 
     private DataObject produceResult(Document doc) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        StreamResult streamResult = new StreamResult(baos);
-        try {
-            Transformer transformer = TransformerFactory.newInstance().newTransformer();
-            transformer.transform(new DOMSource(doc), streamResult);
-        } catch (TransformerConfigurationException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        } catch (TransformerFactoryConfigurationError e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        } catch (TransformerException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
         try {
-            baos.flush();
-            baos.close();
+            DataObject resultingObject =
+                XMLHelper.INSTANCE.load(new DOMSource(doc), doc.getDocumentURI(), null).getRootObject();
+            return resultingObject;
         } catch (IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+            throw new TransformationException(e);
         }
-        DataObject resultingObject = XMLHelper.INSTANCE.load(new String(baos.toByteArray())).getRootObject();
-
-        return resultingObject;
     }
 }

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/SDOWrapperHandler.java Tue Sep 18 17:28:38 2007
@@ -107,10 +107,10 @@
      */
     public DataType getWrapperType(ElementInfo element, List<ElementInfo> childElements, TransformationContext context) {
         // FIXME: [rfeng] Temporarily disable the wrapping support for SDO to work around a few issues
-        // in the WSDL-less story
-        if (true) {
-            return null;
-        }
+        // in the WSDL-less story: https://issues.apache.org/jira/browse/TUSCANY-1713
+//        if (true) {
+//            return null;
+//        }
         HelperContext helperContext = SDOContextHelper.getHelperContext(context);
         Type sdoType = getSDOType(helperContext, element);
         if (sdoType != null) {

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding-sdo/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.PullTransformer Tue Sep 18 17:28:38 2007
@@ -23,3 +23,5 @@
 org.apache.tuscany.sca.databinding.sdo.XMLDocument2XMLStreamReader;source=commonj.sdo.helper.XMLDocument,target=javax.xml.stream.XMLStreamReader,weight=10
 org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2DataObject;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.DataObject,weight=15
 org.apache.tuscany.sca.databinding.sdo.XMLStreamReader2XMLDocument;source=javax.xml.stream.XMLStreamReader,target=commonj.sdo.helper.XMLDocument,weight=15
+org.apache.tuscany.sca.databinding.sdo.DataObject2Node;source=commonj.sdo.DataObject,target=org.w3c.dom.Node,weight=40
+org.apache.tuscany.sca.databinding.sdo.Node2DataObject;source=org.w3c.dom.Node,target=commonj.sdo.DataObject,weight=40

Modified: incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java?rev=577121&r1=577120&r2=577121&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/DOMHelper.java Tue Sep 18 17:28:38 2007
@@ -23,8 +23,10 @@
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+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;
 
 /**
@@ -71,6 +73,41 @@
         String qname =
             (prefix != null && prefix.length() > 0) ? prefix + ":" + name.getLocalPart() : name.getLocalPart();
         return document.createElementNS(name.getNamespaceURI(), qname);
+    }
+
+    /**
+     * Wrap an element as a DOM document
+     * @param node
+     * @return
+     */
+    public static Document promote(Node node) {
+        if (node instanceof Document) {
+            return (Document)node;
+        }
+        Element element = (Element)node;
+        Document doc = element.getOwnerDocument();
+        if (doc.getDocumentElement() == element) {
+            return doc;
+        }
+        doc = (Document)element.getOwnerDocument().cloneNode(false);
+        Element schema = (Element)doc.importNode(element, true);
+        doc.appendChild(schema);
+        Node parent = element.getParentNode();
+        while (parent instanceof Element) {
+            Element root = (Element)parent;
+            NamedNodeMap nodeMap = root.getAttributes();
+            for (int i = 0; i < nodeMap.getLength(); i++) {
+                Attr attr = (Attr)nodeMap.item(i);
+                String name = attr.getName();
+                if ("xmlns".equals(name) || name.startsWith("xmlns:")) {
+                    if (schema.getAttributeNode(name) == null) {
+                        schema.setAttributeNodeNS((Attr)doc.importNode(attr, true));
+                    }
+                }
+            }
+            parent = parent.getParentNode();
+        }
+        return doc;
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org