You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2007/01/11 18:27:18 UTC
svn commit: r495299 - in /incubator/tuscany/java/sdo/impl/src:
main/java/org/apache/tuscany/sdo/helper/
test/java/org/apache/tuscany/sdo/test/
Author: kelvingoodson
Date: Thu Jan 11 09:27:17 2007
New Revision: 495299
URL: http://svn.apache.org/viewvc?view=rev&rev=495299
Log:
TUSCANY-1021 this is a partial fix, and puts in place the infrastructure for checking equality and making copies of change summaries for shallow and deep operations, but the deep copies/comparisons are at least initially going to be implemented using serialization/deserialization of the change summary. For now the deep operations throw UnsupportedOperationExceptions.
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryPropertyTestCase.java
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java?view=diff&rev=495299&r1=495298&r2=495299
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/CopyHelperImpl.java Thu Jan 11 09:27:17 2007
@@ -20,11 +20,12 @@
package org.apache.tuscany.sdo.helper;
+import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+import commonj.sdo.ChangeSummary;
import commonj.sdo.DataObject;
import commonj.sdo.helper.CopyHelper;
@@ -41,6 +42,20 @@
protected void copyContainment(EReference eReference, EObject eObject, EObject copyEObject)
{
}
+
+ protected void copyAttribute(EAttribute eAttribute, EObject eObject, EObject copyEObject) {
+ if(("ChangeSummaryType".equals(eAttribute.getEType().getName()) && "commonj.sdo".equals(eAttribute.getEType().getEPackage().getNsURI()))) {
+ boolean isLogging = ((ChangeSummary)eObject.eGet(eAttribute)).isLogging();
+ ChangeSummary destSum = (ChangeSummary)copyEObject.eGet(eAttribute);
+ if(isLogging) {
+ if(!destSum.isLogging()) destSum.beginLogging();
+ } else {
+ if(destSum.isLogging()) destSum.endLogging();
+ }
+ } else {
+ super.copyAttribute(eAttribute, eObject, copyEObject);
+ }
+ }
};
EObject result = copier.copy((EObject)dataObject);
copier.copyReferences();
@@ -49,6 +64,21 @@
public DataObject copy(DataObject dataObject)
{
- return (DataObject)EcoreUtil.copy((EObject)dataObject);
+ Copier copier = new Copier()
+ {
+
+ protected void copyAttribute(EAttribute eAttribute, EObject eObject, EObject copyEObject) {
+ if(("ChangeSummaryType".equals(eAttribute.getEType().getName()) && "commonj.sdo".equals(eAttribute.getEType().getEPackage().getNsURI()))) {
+ throw new UnsupportedOperationException("This will be implemented when change summary serialization/deserialization is in place");
+ } else {
+ super.copyAttribute(eAttribute, eObject, copyEObject);
+ }
+ }
+ };
+ EObject result = copier.copy((EObject)dataObject);
+ copier.copyReferences();
+ return (DataObject)result;
}
+
+
}
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java?view=diff&rev=495299&r1=495298&r2=495299
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/EqualityHelperImpl.java Thu Jan 11 09:27:17 2007
@@ -22,6 +22,7 @@
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
@@ -41,11 +42,13 @@
protected boolean haveEqualFeature(EObject eObject1, EObject eObject2, EStructuralFeature feature)
{
if (feature instanceof EAttribute)
- {
- boolean eIsSet = eObject1.eIsSet(feature);
- if (eIsSet != eObject2.eIsSet(feature) || !haveEqualAttribute(eObject1, eObject2, (EAttribute)feature))
- {
- return false;
+ {
+ if(!("ChangeSummaryType".equals(feature.getEType().getName()) && "commonj.sdo".equals(feature.getEType().getEPackage().getNsURI()))) {
+ boolean eIsSet = eObject1.eIsSet(feature);
+ if (eIsSet != eObject2.eIsSet(feature) || !haveEqualAttribute(eObject1, eObject2, (EAttribute)feature))
+ {
+ return false;
+ }
}
}
return true;
@@ -65,6 +68,15 @@
public boolean equal(DataObject dataObject1, DataObject dataObject2)
{
- return EcoreUtil.equals((EObject)dataObject1, (EObject)dataObject2);
- }
+ EcoreUtil.EqualityHelper equalityHelper = new EcoreUtil.EqualityHelper()
+ {
+ protected boolean haveEqualAttribute(EObject eObject1, EObject eObject2, EAttribute attribute) {
+ if(("ChangeSummaryType".equals(attribute.getEType().getName()) && "commonj.sdo".equals(attribute.getEType().getEPackage().getNsURI()))) {
+ throw new UnsupportedOperationException("This will be implemented when change summary serialzation/deserialization is in place");
+ } else {
+ return super.haveEqualAttribute(eObject1, eObject2, attribute);
+ }
+ }
+ };
+ return equalityHelper.equals((EObject)dataObject1, (EObject)dataObject2); }
}
Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryPropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryPropertyTestCase.java?view=diff&rev=495299&r1=495298&r2=495299
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryPropertyTestCase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/ChangeSummaryPropertyTestCase.java Thu Jan 11 09:27:17 2007
@@ -91,12 +91,19 @@
ByteArrayOutputStream baos = new ByteArrayOutputStream();
hc.getXMLHelper().save(quote, TEST_NAMESPACE, "rootQuote", baos);
- //hc.getXMLHelper().save(quote, TEST_NAMESPACE, "rootQuote", System.out);
//assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(TEST_DATA_BEFORE_UNDO)));
- DataObject copyQuote = hc.getCopyHelper().copy(quote);
- assertTrue(hc.getEqualityHelper().equal(quote, copyQuote));
+ try {
+ DataObject copyQuote = hc.getCopyHelper().copy(quote);
+ assertTrue(hc.getEqualityHelper().equal(quote, copyQuote));
+ DataObject shallowCopy = hc.getCopyHelper().copyShallow(quote);
+ assertTrue(hc.getEqualityHelper().equalShallow(quote, shallowCopy));
+ }
+ catch (UnsupportedOperationException e) {
+ // caught expected exception
+ // TODO remove this when the copy is fully implemented
+ }
cs.undoChanges();
@@ -118,4 +125,6 @@
hc.getXSDHelper().define(inputStream, url.toString());
inputStream.close();
}
+
}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org