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 | 37 |
1 files changed, 24 insertions, 13 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 7d2f49ccc2..3d9ab3be9b 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 @@ -22,9 +22,11 @@ import org.eclipse.emf.cdo.protocol.model.CDOClassRef; import org.eclipse.emf.cdo.server.ISession; import org.eclipse.emf.cdo.server.ISessionViewsEvent; import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.IView.Type; import org.eclipse.net4j.internal.util.container.SingleDeltaContainerEvent; import org.eclipse.net4j.internal.util.event.Notifier; +import org.eclipse.net4j.util.ImplementationError; import org.eclipse.net4j.util.container.IContainerDelta; import org.eclipse.net4j.util.container.IContainerDelta.Kind; @@ -87,27 +89,36 @@ public class Session extends Notifier implements ISession, CDOIDProvider public void notifyViewsChanged(Session session, int viewID, byte kind) { - switch (kind) - { - case CDOProtocolConstants.VIEW_ADDED: - { - View view = new View(this, viewID); - views.put(viewID, view); - fireEvent(new ViewsEvent(view, IContainerDelta.Kind.ADDED)); - break; - } - - case CDOProtocolConstants.VIEW_REMOVED: + if (kind == CDOProtocolConstants.VIEW_CLOSED) { View view = views.remove(viewID); if (view != null) { fireEvent(new ViewsEvent(view, IContainerDelta.Kind.REMOVED)); } - - break; } + else + { + IView.Type viewType = getViewType(kind); + View view = new View(this, viewID, viewType); + views.put(viewID, view); + fireEvent(new ViewsEvent(view, IContainerDelta.Kind.ADDED)); + } + } + + private Type getViewType(byte kind) + { + switch (kind) + { + case CDOProtocolConstants.VIEW_TRANSACTION: + return Type.TRANSACTION; + case CDOProtocolConstants.VIEW_READONLY: + return Type.READONLY; + case CDOProtocolConstants.VIEW_AUDIT: + return Type.AUDIT; } + + throw new ImplementationError("Invalid kind: " + kind); } public void notifyInvalidation(long timeStamp, CDORevisionImpl[] dirtyObjects) |