diff options
author | Eike Stepper | 2021-11-03 03:56:00 +0000 |
---|---|---|
committer | Eike Stepper | 2021-11-03 03:56:00 +0000 |
commit | a44e2799d89eb22157a9d0728b1669f71869b311 (patch) | |
tree | e873fc50e8283e3d2d230b67ef20c643dbef6e32 /plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common | |
parent | f6c85b9891c94597ae4edc556a11738239ce64b6 (diff) | |
download | cdo-a44e2799d89eb22157a9d0728b1669f71869b311.tar.gz cdo-a44e2799d89eb22157a9d0728b1669f71869b311.tar.xz cdo-a44e2799d89eb22157a9d0728b1669f71869b311.zip |
[576969] Revisions in the CDORevisionCache should be interned
https://bugs.eclipse.org/bugs/show_bug.cgi?id=576969
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common')
3 files changed, 29 insertions, 1 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/AbstractCDORevisionCache.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/AbstractCDORevisionCache.java index cae86fce8a..ead694053a 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/AbstractCDORevisionCache.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/AbstractCDORevisionCache.java @@ -18,6 +18,7 @@ import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.branch.CDOBranchVersion; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.common.revision.CDORevisionInterner; import org.eclipse.emf.cdo.common.revision.CDORevisionKey; import org.eclipse.emf.cdo.internal.common.bundle.OM; import org.eclipse.emf.cdo.spi.common.branch.CDOBranchUtil; @@ -48,6 +49,8 @@ public abstract class AbstractCDORevisionCache extends Lifecycle implements Inte private static boolean disableGC; + private static boolean warnAboutDeprecation = true; + @ExcludeFromDump private final CleanableReferenceQueue<InternalCDORevision> referenceQueue = new CleanableReferenceQueue<InternalCDORevision>() { @@ -222,6 +225,24 @@ public abstract class AbstractCDORevisionCache extends Lifecycle implements Inte } } + @Deprecated + @Override + public void addRevision(CDORevision revision) + { + addRevision(revision, this); + } + + static void addRevision(CDORevision revision, CDORevisionInterner interner) + { + if (warnAboutDeprecation) + { + warnAboutDeprecation = false; + OM.LOG.warn("As of CDO 4.15 use internRevision() instead of addRevision()"); + } + + interner.internRevision(revision); + } + /** * @author Eike Stepper */ diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java index b5ab6b26eb..1a48acad6f 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDORevisionManagerImpl.java @@ -608,7 +608,7 @@ public class CDORevisionManagerImpl extends Lifecycle implements InternalCDORevi @Override public void addRevision(CDORevision revision) { - internRevision(revision); + AbstractCDORevisionCache.addRevision(revision, this); } @Override diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/NOOPRevisionCache.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/NOOPRevisionCache.java index 208d531e72..d32aa4bb11 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/NOOPRevisionCache.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/NOOPRevisionCache.java @@ -98,6 +98,13 @@ public class NOOPRevisionCache extends Lifecycle implements InternalCDORevisionC return null; } + @Deprecated + @Override + public void addRevision(CDORevision revision) + { + AbstractCDORevisionCache.addRevision(revision, this); + } + @Override public CDORevision internRevision(CDORevision revision) { |