Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOOriginSizeProvider.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOOriginSizeProvider.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOOriginSizeProvider.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOOriginSizeProvider.java
index 302190609a..9d37ab7bc7 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOOriginSizeProvider.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/delta/CDOOriginSizeProvider.java
@@ -10,6 +10,8 @@
*/
package org.eclipse.emf.cdo.common.revision.delta;
+import org.eclipse.emf.cdo.common.revision.CDOList;
+
/**
* If the meaning of this type isn't clear, there really should be more of a description here...
*
@@ -19,4 +21,27 @@ package org.eclipse.emf.cdo.common.revision.delta;
public interface CDOOriginSizeProvider
{
public int getOriginSize();
+
+ /**
+ * @author Eike Stepper
+ */
+ public static abstract class Caching implements CDOOriginSizeProvider
+ {
+ private static final int UNKNOWN = -1;
+
+ private int originSize = UNKNOWN;
+
+ public int getOriginSize()
+ {
+ if (originSize == UNKNOWN)
+ {
+ CDOList list = getList();
+ originSize = list.size();
+ }
+
+ return originSize;
+ }
+
+ protected abstract CDOList getList();
+ }
}

Back to the top