Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2008-09-14 08:35:51 +0000
committerEike Stepper2008-09-14 08:35:51 +0000
commitaa99f9da75d255f23a6ab39ef7a391c96b5ea0ce (patch)
treec2188587ea25bcfa6a76b3f00b15a1465259bb67 /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java
parent3bfea46a9d980073f4d7c32a067e78174e0eef1c (diff)
downloadcdo-aa99f9da75d255f23a6ab39ef7a391c96b5ea0ce.tar.gz
cdo-aa99f9da75d255f23a6ab39ef7a391c96b5ea0ce.tar.xz
cdo-aa99f9da75d255f23a6ab39ef7a391c96b5ea0ce.zip
[247143] Add detach object handling to CDOTransactionHandler
https://bugs.eclipse.org/bugs/show_bug.cgi?id=247143
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java
index 50543e1e73..434592b23f 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOTransactionImpl.java
@@ -13,6 +13,7 @@
* Simon McDuff - http://bugs.eclipse.org/233490
* Simon McDuff - http://bugs.eclipse.org/213402
* Simon McDuff - http://bugs.eclipse.org/246620
+ * Simon McDuff - http://bugs.eclipse.org/247143
**************************************************************************/
package org.eclipse.emf.internal.cdo;
@@ -109,7 +110,10 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
{
synchronized (handlers)
{
- handlers.add(handler);
+ if (!handlers.contains(handler))
+ {
+ handlers.add(handler);
+ }
}
}
@@ -480,6 +484,11 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
*/
public void detachObject(InternalCDOObject object)
{
+ for (CDOTransactionHandler handler : getHandlers())
+ {
+ handler.detachingObject(this, object);
+ }
+
if (object.cdoState() == CDOState.NEW)
{
Map<CDOID, ? extends CDOObject> map = object instanceof CDOResource ? getLastSavepoint().getNewResources()
@@ -502,6 +511,7 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
{
getLastSavepoint().getDetachedObjects().add(object.cdoID());
}
+
}
/**
@@ -621,7 +631,7 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
for (CDOTransactionHandler handler : getHandlers())
{
- handler.addingObject(this, object);
+ handler.attachingObject(this, object);
}
if (object instanceof CDOResourceImpl)

Back to the top