diff options
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.java | 15 |
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) { |