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