Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2020-06-30 05:12:02 +0000
committerEike Stepper2020-06-30 05:12:02 +0000
commit729a21108038d2b81ce422486059e59a98fb1511 (patch)
tree7fd6b9f68a5e864b111a07d2d8ad774035a4cded /plugins/org.eclipse.emf.cdo.common/src
parentd9c60321acbeaf75046d95d5fb0e7ee93a55419e (diff)
downloadcdo-729a21108038d2b81ce422486059e59a98fb1511.tar.gz
cdo-729a21108038d2b81ce422486059e59a98fb1511.tar.xz
cdo-729a21108038d2b81ce422486059e59a98fb1511.zip
[564757] Provide a way to unfreeze revisions
https://bugs.eclipse.org/bugs/show_bug.cgi?id=564757
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java26
2 files changed, 31 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
index 246a2e4dee..09dd763359 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOListImpl.java
@@ -110,6 +110,11 @@ public class CDOListImpl extends BasicEList<Object> implements InternalCDOList.C
flags |= FROZEN_FLAG;
}
+ public void unfreeze()
+ {
+ flags &= ~FROZEN_FLAG;
+ }
+
private void checkFrozen()
{
if ((flags & FROZEN_FLAG) != 0)
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
index c38cae2d52..0120906074 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java
@@ -1099,6 +1099,32 @@ public abstract class BaseCDORevision extends AbstractCDORevision
}
/**
+ * @since 4.11
+ */
+ public void unfreeze()
+ {
+ flags &= ~FROZEN_FLAG;
+
+ if (isReadable())
+ {
+ EStructuralFeature[] features = getAllPersistentFeatures();
+ for (int i = 0; i < features.length; i++)
+ {
+ EStructuralFeature feature = features[i];
+ if (feature.isMany())
+ {
+ Object value = doGetValue(i);
+ if (value instanceof CDOListImpl)
+ {
+ CDOListImpl list = (CDOListImpl)value;
+ list.unfreeze();
+ }
+ }
+ }
+ }
+ }
+
+ /**
* @since 4.2
*/
@Override

Back to the top