diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java index c80ffcea9a..11350de431 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LockingManagerTest.java @@ -787,6 +787,42 @@ public class LockingManagerTest extends AbstractLockingTest assertWriteLock(false, company); } + /** + * Bug 352191. + */ + public void testLockDetached() throws Exception + { + Company company = getModel1Factory().createCompany(); + + CDOSession session = openSession(); + CDOTransaction transaction = session.openTransaction(); + CDOResource res = transaction.createResource(getResourcePath("/res1")); + res.getContents().add(company); + transaction.commit(); + + res.getContents().remove(0); + assertTransient(company); + + CDOObject cdoObject = CDOUtil.getCDOObject(company); + transaction.lockObjects(Collections.singleton(cdoObject), LockType.WRITE, DEFAULT_TIMEOUT); + + // Verify + CDOTransaction transaction2 = session.openTransaction(); + CDOResource res2 = transaction2.getResource(getResourcePath("/res1")); + Company company2 = (Company)res2.getContents().get(0); + company2.setName("NewName"); + + try + { + transaction2.commit(); + fail("CommitException expected"); + } + catch (CommitException expected) + { + // SUCCESS + } + } + public void testTransactionClose() throws Exception { Company company = getModel1Factory().createCompany(); |