[352204] [Legacy] Failing event PREPARE in state CLEAN : state machine issue with legacy mode
https://bugs.eclipse.org/bugs/show_bug.cgi?id=352204
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllConfigs.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllConfigs.java
index 88b06ea..6a5f2a2 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllConfigs.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/AllConfigs.java
@@ -220,6 +220,7 @@
testClasses.add(Bugzilla_337587_Test.class);
testClasses.add(Bugzilla_338779_Test.class);
testClasses.add(Bugzilla_338884_Test.class);
+ testClasses.add(Bugzilla_338921_Test.class);
testClasses.add(Bugzilla_339313_Test.class);
testClasses.add(Bugzilla_339461_Test.class);
testClasses.add(Bugzilla_339908_Test.class);
@@ -235,18 +236,17 @@
testClasses.add(Bugzilla_350027_Test.class);
testClasses.add(Bugzilla_351067_Test.class);
testClasses.add(Bugzilla_351096_Test.class);
- testClasses.add(Bugzilla_338921_Test.class);
testClasses.add(Bugzilla_351393_Test.class);
testClasses.add(Bugzilla_351921_Test.class);
+ testClasses.add(Bugzilla_352204_Test.class);
testClasses.add(Bugzilla_352303_Test.class);
testClasses.add(Bugzilla_352832_Test.class);
testClasses.add(Bugzilla_354395_Test.class);
testClasses.add(Bugzilla_355915_Test.class);
testClasses.add(Bugzilla_357441_Test.class);
- testClasses.add(Bugzilla_359966_Test.class);
testClasses.add(Bugzilla_359669_Test.class);
+ testClasses.add(Bugzilla_359966_Test.class);
testClasses.add(Bugzilla_359992_Test.class);
testClasses.add(Bugzilla_363287_Test.class);
- testClasses.add(Bugzilla_352204_Test.class);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_352204_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_352204_Test.java
index 06ee55a..bf3879f 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_352204_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_352204_Test.java
@@ -36,12 +36,12 @@
{
private static final String MODEL_LOCATION_PATH = "myResource";
- public void testChangesImportWithNewLegacyElementsWithCustomFileAndReconstructSavePoints() throws Exception
+ public void testWithReconstructSavepoints() throws Exception
{
importWithNewLegacyElements(true);
}
- public void _testChangesImportWithNewLegacyElementsWithCustomFileAndNotReconstructSavePoints() throws Exception
+ public void testWithoutReconstructSavepoints() throws Exception
{
importWithNewLegacyElements(false);
}
@@ -80,11 +80,6 @@
{
CDOSession session = openSession();
CDOTransaction delegate = session.openTransaction();
- if (fileForStoringChanges == null)
- {
- return new CDOPushTransaction(delegate);
- }
-
return new CDOPushTransaction(delegate, fileForStoringChanges, reconstructSavePoints);
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_359966_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_359966_Test.java
index 153f690..af716e1 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_359966_Test.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_359966_Test.java
@@ -63,12 +63,12 @@
checkDiagramAsCorrectlyBeenModified(transaction);
}
- public void testChangesImportWithNewLegacyElementsWithCustomFileAndReconstructSavePoints() throws Exception
+ public void testWithReconstructSavepoints() throws Exception
{
importWithNewLegacyElements(true);
}
- public void testChangesImportWithNewLegacyElementsWithCustomFileAndNotReconstructSavePoints() throws Exception
+ public void testWithoutReconstructSavepoints() throws Exception
{
importWithNewLegacyElements(false);
}
@@ -120,11 +120,6 @@
{
CDOSession session = openSession();
CDOTransaction delegate = session.openTransaction();
- if (fileForStoringChanges == null)
- {
- return new CDOPushTransaction(delegate);
- }
-
return new CDOPushTransaction(delegate, fileForStoringChanges, reconstructSavePoints);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
index 3d8e63c..2abcad2 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/cdo/eresource/impl/CDOResourceImpl.java
@@ -1290,14 +1290,16 @@
{
if (!FSMUtil.isTransient(this))
{
- InternalCDOObject cdoObject = FSMUtil.adapt(object, cdoView());
+ InternalCDOTransaction transaction = cdoView().toTransaction();
+ InternalCDOObject cdoObject = FSMUtil.adapt(object, transaction);
- if (CDOUtil.isLegacyObject(cdoObject) && cdoObject.cdoState() == CDOState.CLEAN)
+ if (CDOUtil.isLegacyObject(cdoObject) && FSMUtil.isClean(cdoObject))
{
+ // Bug 352204
return;
}
- attached(cdoObject, cdoView().toTransaction());
+ attached(cdoObject, transaction);
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDOLegacyWrapper.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDOLegacyWrapper.java
index 5d6cdd2..ec345ed 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDOLegacyWrapper.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/object/CDOLegacyWrapper.java
@@ -423,9 +423,9 @@
protected void revisionToInstanceContainer()
{
Object containerID = revision.getContainerID();
- EObject oldContainer = instance.eContainer();
InternalEObject container = getEObjectFromPotentialID(view, null, containerID);
+ EObject oldContainer = instance.eContainer();
if (oldContainer != container)
{
setInstanceContainer(container, revision.getContainingFeatureID());
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/FSMUtil.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/FSMUtil.java
index 5a3922b..f951eef 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/FSMUtil.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/spi/cdo/FSMUtil.java
@@ -63,6 +63,15 @@
return state == CDOState.NEW;
}
+ /**
+ * @since 4.1
+ */
+ public static boolean isClean(CDOObject object)
+ {
+ CDOState state = object.cdoState();
+ return state == CDOState.CLEAN;
+ }
+
public static boolean isNative(EObject eObject)
{
return eObject instanceof CDOObjectImpl;