diff options
author | Eike Stepper | 2020-06-30 05:12:02 +0000 |
---|---|---|
committer | Eike Stepper | 2020-06-30 05:12:02 +0000 |
commit | 729a21108038d2b81ce422486059e59a98fb1511 (patch) | |
tree | 7fd6b9f68a5e864b111a07d2d8ad774035a4cded /plugins/org.eclipse.emf.cdo.common/src | |
parent | d9c60321acbeaf75046d95d5fb0e7ee93a55419e (diff) | |
download | cdo-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')
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 |