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/CDORevisionHandler.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionHandler.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionHandler.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionHandler.java
index 19efdb499c..e51a317f83 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionHandler.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionHandler.java
@@ -10,6 +10,8 @@
*/
package org.eclipse.emf.cdo.common.revision;
+import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision;
+
/**
* A call-back interface that indicates the ability to <i>handle</i> {@link CDORevision revisions} that are passed from
* other entities.
@@ -26,4 +28,50 @@ public interface CDORevisionHandler
* @since 4.0
*/
public boolean handleRevision(CDORevision revision);
+
+ /**
+ * @author Eike Stepper
+ * @since 4.1
+ */
+ public static class Filtered implements CDORevisionHandler
+ {
+ private final CDORevisionHandler delegate;
+
+ public Filtered(CDORevisionHandler delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public final boolean handleRevision(CDORevision revision)
+ {
+ if (filter(revision))
+ {
+ return true;
+ }
+
+ return delegate.handleRevision(revision);
+ }
+
+ protected boolean filter(CDORevision revision)
+ {
+ return false;
+ }
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Undetached extends Filtered
+ {
+ public Undetached(CDORevisionHandler delegate)
+ {
+ super(delegate);
+ }
+
+ @Override
+ protected boolean filter(CDORevision revision)
+ {
+ return revision instanceof DetachedCDORevision;
+ }
+ }
+ }
}

Back to the top