Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java
index 776eae1ed0..f0016a2b45 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Session.java
@@ -74,7 +74,7 @@ import java.util.concurrent.atomic.AtomicInteger;
/**
* @author Eike Stepper
*/
-public class Session extends Container<IView>implements InternalSession
+public class Session extends Container<IView> implements InternalSession
{
private InternalSessionManager manager;
@@ -402,7 +402,7 @@ public class Session extends Container<IView>implements InternalSession
public void collectContainedRevisions(InternalCDORevision revision, CDOBranchPoint branchPoint, int referenceChunk,
Set<CDOID> revisions, List<CDORevision> additionalRevisions)
{
- InternalCDORevisionManager revisionManager = getManager().getRepository().getRevisionManager();
+ InternalCDORevisionManager revisionManager = manager.getRepository().getRevisionManager();
for (EStructuralFeature feature : revision.getClassInfo().getAllPersistentFeatures())
{
// TODO Clarify feature maps
@@ -577,8 +577,10 @@ public class Session extends Container<IView>implements InternalSession
}
}
- private boolean hasSubscription(CDOID id, InternalView[] views)
+ private boolean isDeltaNeeded(CDOID id, InternalView[] views)
{
+ boolean supportingUnits = manager.getRepository().isSupportingUnits();
+
for (InternalView view : views)
{
try
@@ -587,6 +589,11 @@ public class Session extends Container<IView>implements InternalSession
{
return true;
}
+
+ if (supportingUnits && view.isInOpenUnit(id))
+ {
+ return true;
+ }
}
catch (Exception ex)
{
@@ -788,7 +795,7 @@ public class Session extends Container<IView>implements InternalSession
CDORevisionDelta revisionDelta = (CDORevisionDelta)changedObjects.get(index);
CDOID id = revisionDelta.getID();
- if (changes || hasSubscription(id, views))
+ if (changes || isDeltaNeeded(id, views))
{
if (permissionManager == null)
{

Back to the top