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