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/02/15 23:03:27 UTC

svn commit: r508187 - in /incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src: main/java/org/apache/tuscany/databinding/sdo/ test/java/org/apache/tuscany/databinding/sdo/

Author: rfeng
Date: Thu Feb 15 14:03:27 2007
New Revision: 508187

URL: http://svn.apache.org/viewvc?view=rev&rev=508187
Log:
[sca-integration-branch] Adding copy() support for SDO databinding w/ some code cleanup

Modified:
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2StringTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReaderTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDODataBindingTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOTransformerTestCaseBase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataBinding.java Thu Feb 15 14:03:27 2007
@@ -28,8 +28,10 @@
 
 import commonj.sdo.DataObject;
 import commonj.sdo.Type;
-import commonj.sdo.helper.TypeHelper;
-import commonj.sdo.helper.XSDHelper;
+import commonj.sdo.helper.CopyHelper;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.impl.HelperProvider;
 
 /**
  * SDO Databinding
@@ -39,7 +41,7 @@
 public class SDODataBinding extends DataBindingExtension {
     public static final String ROOT_NAMESPACE = "commonj.sdo";
     public static final QName ROOT_ELEMENT = new QName(ROOT_NAMESPACE, "dataObject");
-    
+
     private WrapperHandler<Object> wrapperHandler;
 
     public SDODataBinding() {
@@ -52,22 +54,23 @@
         if (javaType == null) {
             return null;
         }
+        HelperContext context = HelperProvider.getDefaultContext();
         // FIXME: Need a better to test dynamic SDO
         if (DataObject.class.isAssignableFrom(javaType)) {
             // Dynamic SDO
             return new DataType<QName>(getName(), javaType, null);
-        }         
+        }
         // FIXME: We need to access HelperContext
-        Type type = TypeHelper.INSTANCE.getType(javaType);
+        Type type = context.getTypeHelper().getType(javaType);
         if (type == null) {
             return null;
         }
         if (type.isDataType()) {
-            // FIXME: Ignore simple types? 
+            // FIXME: Ignore simple types?
             return null;
         }
         String namespace = type.getURI();
-        String name = XSDHelper.INSTANCE.getLocalName(type);
+        String name = context.getXSDHelper().getLocalName(type);
         QName xmlType = new QName(namespace, name);
         DataType<QName> dataType = new DataType<QName>(getName(), javaType, xmlType);
         return dataType;
@@ -80,6 +83,23 @@
 
     public SimpleTypeMapper getSimpleTypeMapper() {
         return new SDOSimpleTypeMapper();
+    }
+
+    @Override
+    public Object copy(Object arg) {
+        HelperContext context = HelperProvider.getDefaultContext();
+        CopyHelper copyHelper = context.getCopyHelper();
+        if (arg instanceof XMLDocument) {
+            XMLDocument document = (XMLDocument)arg;
+            DataObject dataObject = copyHelper.copy(document.getRootObject());
+            return context.getXMLHelper().createDocument(dataObject,
+                                                         document.getRootElementURI(),
+                                                         document.getRootElementName());
+        } else if (arg instanceof DataObject) {
+            return context.getCopyHelper().copy((DataObject)arg);
+        } else {
+            return super.copy(arg);
+        }
     }
 
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2StringTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2StringTestCase.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2StringTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2StringTestCase.java Thu Feb 15 14:03:27 2007
@@ -34,7 +34,7 @@
 public class DataObject2StringTestCase extends SDOTransformerTestCaseBase {
     @Override
     protected DataType<?> getSourceDataType() {
-        return new DataType<QName>(binding, PurchaseOrderType.class, orderQName);
+        return new DataType<QName>(binding, PurchaseOrderType.class, ORDER_QNAME);
     }
 
     @Override
@@ -47,13 +47,14 @@
         Assert.assertTrue(xml.indexOf("<city>San Jose</city>") != -1);
         DataObject po = new String2DataObject().transform(xml, reversedContext);
         Assert.assertTrue(po instanceof PurchaseOrderType);
-        PurchaseOrderType orderType = (PurchaseOrderType) po;
+        PurchaseOrderType orderType = (PurchaseOrderType)po;
         Assert.assertEquals("San Jose", orderType.getBillTo().getCity());
     }
 
     public final void testXML() {
         String xml =
-                "<foo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ipo=\"http://www.example.com/IPO\" xsi:type=\"ipo:USAddress\"/>";
+            "<foo xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " 
+            + "xmlns:ipo=\"http://www.example.com/IPO\" xsi:type=\"ipo:USAddress\"/>";
         DataObject dataObject = new String2DataObject().transform(xml, reversedContext);
         context.setSourceDataType(new DataType<QName>(DataObject.class.getName(), DataObject.class, null));
         xml = new DataObject2String().transform(dataObject, context);

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReaderTestCase.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReaderTestCase.java Thu Feb 15 14:03:27 2007
@@ -35,7 +35,7 @@
 
     @Override
     protected DataType<?> getSourceDataType() {
-        return new DataType<QName>(binding, PurchaseOrderType.class, orderQName);
+        return new DataType<QName>(binding, PurchaseOrderType.class, ORDER_QNAME);
     }
 
     @Override
@@ -47,8 +47,9 @@
         XMLStreamReader reader = new DataObject2XMLStreamReader().transform(dataObject, context);
         while (reader.hasNext()) {
             int event = reader.next();
-            if (event == XMLStreamConstants.START_ELEMENT)
+            if (event == XMLStreamConstants.START_ELEMENT) {
                 break;
+            }
         }
         new XMLStreamReader2DataObject().transform(reader, reversedContext);
     }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java Thu Feb 15 14:03:27 2007
@@ -41,13 +41,21 @@
 
     private QName name = new QName("http://www.osoa.org/xmlns/mock/0.9", "implementation.mock");
 
-    private String xml = "<module name=\"m\" xmlns=\"http://www.osoa.org/xmlns/sca/0.9\" xmlns:mock=\"http://www.osoa.org/xmlns/mock/0.9\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"  xsi:schemaLocation=\"http://www.osoa.org/xmlns/mock/0.9 sca-implementation-mock.xsd http://www.osoa.org/xmlns/sca/0.9 sca-core.xsd \"><component name=\"c\"><mock:implementation.mock myAttr=\"helloworld.HelloWorldImpl\" /></component></module>";
+    private String xml =
+        "<module name=\"m\" xmlns=\"http://www.osoa.org/xmlns/sca/0.9\" " 
+            + "xmlns:mock=\"http://www.osoa.org/xmlns/mock/0.9\" "
+            + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"  "
+            + "xsi:schemaLocation=\"http://www.osoa.org/xmlns/mock/0.9 "
+            + "sca-implementation-mock.xsd http://www.osoa.org/xmlns/sca/0.9 sca-core.xsd \">"
+            + "<component name=\"c\"><mock:implementation.mock myAttr=\"helloworld.HelloWorldImpl\" />"
+            + "</component></module>";
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         URL url = getClass().getClassLoader().getResource("model/sca-implementation-mock.xsd");
-        // URL url = getClass().getClassLoader().getResource("model/sca-core.xsd");
+        // URL url =
+        // getClass().getClassLoader().getResource("model/sca-core.xsd");
         xsdHelper.define(url.openStream(), url.toExternalForm());
     }
 
@@ -59,8 +67,10 @@
             event = reader.nextTag();
         }
         DataObjectLoader loader = new DataObjectLoader(name);
-        DeploymentContext context = new RootDeploymentContext(getClass().getClassLoader(), inputFactory, new CompositeScopeContainer(null), null);
-        ModelDataObject modelObject = (ModelDataObject) loader.load(null, null, reader, context);
+        DeploymentContext context =
+            new RootDeploymentContext(getClass().getClassLoader(), inputFactory, new CompositeScopeContainer(null),
+                                      null);
+        ModelDataObject modelObject = (ModelDataObject)loader.load(null, null, reader, context);
         Assert.assertNotNull(modelObject.getDataObject());
         Assert.assertTrue(modelObject.getDataObject().getString("myAttr").equals("helloworld.HelloWorldImpl"));
     }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDODataBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDODataBindingTestCase.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDODataBindingTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDODataBindingTestCase.java Thu Feb 15 14:03:27 2007
@@ -24,19 +24,23 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.sdo.util.SDOUtil;
 import org.apache.tuscany.spi.model.DataType;
 
 import com.example.ipo.sdo.PurchaseOrderType;
 import com.example.ipo.sdo.SdoFactory;
 import com.example.ipo.sdo.USAddress;
 import commonj.sdo.DataObject;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.impl.HelperProvider;
 
 /**
  * 
  */
 public class SDODataBindingTestCase extends TestCase {
+    protected static final QName ORDER_QNAME = new QName("http://www.example.com/IPO", "purchaseOrder");
     private SDODataBinding binding;
+    private HelperContext context;
 
     /**
      * @see junit.framework.TestCase#setUp()
@@ -44,7 +48,8 @@
     protected void setUp() throws Exception {
         super.setUp();
         binding = new SDODataBinding();
-        SDOUtil.registerStaticTypes(SdoFactory.class);
+        context = HelperProvider.getDefaultContext();
+        SdoFactory.INSTANCE.register(context);
     }
 
     public final void testIntrospect() {
@@ -57,5 +62,40 @@
         dataType = binding.introspect(USAddress.class);
         Assert.assertEquals(USAddress.class, dataType.getPhysical());
         Assert.assertEquals(new QName("http://www.example.com/IPO", "USAddress"), dataType.getLogical());
+    }
+
+    public final void testCopyRoot() {
+        PurchaseOrderType po = SdoFactory.INSTANCE.createPurchaseOrderType();
+        po.setComment("Comment");
+        Object copy = binding.copy(po);
+        assertTrue(copy instanceof PurchaseOrderType);
+        assertTrue(po != copy);
+        assertTrue(context.getEqualityHelper().equal((DataObject)po, (DataObject)copy));
+        assertEquals("Comment", ((PurchaseOrderType)copy).getComment());
+    }
+
+    public final void testCopyNonRoot() {
+        USAddress address = SdoFactory.INSTANCE.createUSAddress();
+        address.setCity("San Jose");
+        Object copy = binding.copy(address);
+        assertTrue(copy instanceof USAddress);
+        assertTrue(address != copy);
+        assertTrue(context.getEqualityHelper().equal((DataObject)address, (DataObject)copy));
+        assertEquals("San Jose", ((USAddress)copy).getCity());
+    }
+
+    public final void testCopyXMLDocument() {
+        PurchaseOrderType po = SdoFactory.INSTANCE.createPurchaseOrderType();
+        po.setComment("Comment");
+        XMLDocument doc =
+            context.getXMLHelper().createDocument((DataObject)po,
+                                                  ORDER_QNAME.getNamespaceURI(),
+                                                  ORDER_QNAME.getLocalPart());
+        Object copy = binding.copy(doc);
+        assertTrue(copy instanceof XMLDocument);
+        XMLDocument docCopy = (XMLDocument)copy;
+        assertTrue(doc != copy);
+        assertTrue(context.getEqualityHelper().equal((DataObject)po, docCopy.getRootObject()));
+        assertEquals("Comment", ((PurchaseOrderType)docCopy.getRootObject()).getComment());
     }
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOTransformerTestCaseBase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOTransformerTestCaseBase.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOTransformerTestCaseBase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/SDOTransformerTestCaseBase.java Thu Feb 15 14:03:27 2007
@@ -37,10 +37,9 @@
  * The base class for SDO-related test cases
  */
 public abstract class SDOTransformerTestCaseBase extends TestCase {
-    protected String binding = DataObject.class.getName();
-
-    protected static final QName orderQName = new QName("http://www.example.com/IPO", "purchaseOrder");
+    protected static final QName ORDER_QNAME = new QName("http://www.example.com/IPO", "purchaseOrder");
 
+    protected String binding = DataObject.class.getName();
     protected TransformationContext context;
     protected TransformationContext reversedContext; 
     protected DataObject dataObject;

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java?view=diff&rev=508187&r1=508186&r2=508187
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReaderTestCase.java Thu Feb 15 14:03:27 2007
@@ -39,7 +39,7 @@
 
     @Override
     protected DataType<?> getSourceDataType() {
-        return new DataType<QName>(XMLDocument.class.getName(), XMLDocument.class, orderQName);
+        return new DataType<QName>(XMLDocument.class.getName(), XMLDocument.class, ORDER_QNAME);
     }
 
     @Override
@@ -49,11 +49,11 @@
 
     public final void testTransform() throws XMLStreamException {
         XMLDocument document =
-                XMLHelper.INSTANCE.createDocument(dataObject, orderQName.getNamespaceURI(), orderQName.getLocalPart());
+                XMLHelper.INSTANCE.createDocument(dataObject, ORDER_QNAME.getNamespaceURI(), ORDER_QNAME.getLocalPart());
         XMLStreamReader reader = new XMLDocument2XMLStreamReader().transform(document, context);
         XMLDocument document2 = new XMLStreamReader2XMLDocument().transform(reader, reversedContext);
-        Assert.assertEquals(orderQName.getNamespaceURI(), document2.getRootElementURI());
-        Assert.assertEquals(orderQName.getLocalPart(), document2.getRootElementName());
+        Assert.assertEquals(ORDER_QNAME.getNamespaceURI(), document2.getRootElementURI());
+        Assert.assertEquals(ORDER_QNAME.getLocalPart(), document2.getRootElementName());
         Assert.assertTrue(document2.getRootObject() instanceof PurchaseOrderType);
     }
 



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