Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon McDuff2008-12-31 18:12:07 +0000
committerSimon McDuff2008-12-31 18:12:07 +0000
commitf2495e877db47f4a789b0456ac76344f7554a76c (patch)
treedab0465bec8076b17f8927c71db64ea4ee8ff9c7
parent911f7840f50a144923c0e32fb915a99aab14484b (diff)
downloadcdo-f2495e877db47f4a789b0456ac76344f7554a76c.tar.gz
cdo-f2495e877db47f4a789b0456ac76344f7554a76c.tar.xz
cdo-f2495e877db47f4a789b0456ac76344f7554a76c.zip
[259401] SavePoints create persistent revisions with version < 1
https://bugs.eclipse.org/bugs/show_bug.cgi?id=259401
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SavePointTest.java5
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java5
2 files changed, 9 insertions, 1 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SavePointTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SavePointTest.java
index 0ce914d488..fc17490cdd 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SavePointTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SavePointTest.java
@@ -41,18 +41,23 @@ public class SavePointTest extends AbstractCDOTest
Category category1 = getModel1Factory().createCategory();
company1.getCategories().add(category1);
+ assertEquals(1, CDOUtil.getCDOObject(company1).cdoRevision().getVersion());
transaction1.setSavepoint();
+ assertEquals(1, CDOUtil.getCDOObject(company1).cdoRevision().getVersion());
Category category2 = getModel1Factory().createCategory();
company1.getCategories().add(category2);
CDOSavepoint savePoint2 = transaction1.setSavepoint();
+ assertEquals(1, CDOUtil.getCDOObject(company1).cdoRevision().getVersion());
Category category3 = getModel1Factory().createCategory();
company1.getCategories().add(category3);
transaction1.setSavepoint();
+ assertEquals(1, CDOUtil.getCDOObject(company1).cdoRevision().getVersion());
transaction1.rollback(savePoint2);
+ assertEquals(1, CDOUtil.getCDOObject(company1).cdoRevision().getVersion());
assertNew(category1, transaction1);
assertNew(company1, transaction1);
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java
index dfcfb13917..a86b079759 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectMerger.java
@@ -28,7 +28,10 @@ public class CDOObjectMerger extends CDORevisionMerger
public void merge(InternalCDOObject object, CDORevisionDelta delta)
{
InternalCDORevision revision = (InternalCDORevision)object.cdoRevision().copy();
- revision.setTransactional();
+ if (!revision.isTransactional())
+ {
+ revision.setTransactional();
+ }
object.cdoInternalSetRevision(revision);
// NEW object should stay that state.

Back to the top