Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java85
1 files changed, 15 insertions, 70 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index 3fb781b7de..cd2a989d21 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -43,34 +43,23 @@ import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.internal.cdo.bundle.OM;
-import org.eclipse.emf.internal.cdo.protocol.CDOClientProtocol;
-import org.eclipse.emf.internal.cdo.protocol.LoadLibrariesRequest;
-import org.eclipse.emf.internal.cdo.protocol.OpenSessionRequest;
-import org.eclipse.emf.internal.cdo.protocol.OpenSessionResult;
-import org.eclipse.emf.internal.cdo.protocol.RepositoryTimeRequest;
-import org.eclipse.emf.internal.cdo.protocol.RepositoryTimeResult;
-import org.eclipse.emf.internal.cdo.protocol.SetPassiveUpdateRequest;
-import org.eclipse.emf.internal.cdo.protocol.SyncRevisionRequest;
+import org.eclipse.emf.internal.cdo.net4j.protocol.OpenSessionResult;
+import org.eclipse.emf.internal.cdo.net4j.protocol.RepositoryTimeResult;
import org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl;
import org.eclipse.emf.internal.cdo.util.ModelUtil;
import org.eclipse.emf.internal.cdo.view.CDOAuditImpl;
import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
-import org.eclipse.net4j.channel.IChannel;
import org.eclipse.net4j.util.WrappedException;
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
import org.eclipse.net4j.util.concurrent.QueueRunner;
import org.eclipse.net4j.util.container.Container;
import org.eclipse.net4j.util.event.Event;
-import org.eclipse.net4j.util.event.EventUtil;
-import org.eclipse.net4j.util.event.IListener;
import org.eclipse.net4j.util.event.Notifier;
import org.eclipse.net4j.util.io.ExtendedDataInput;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.io.StringCompressor;
-import org.eclipse.net4j.util.lifecycle.ILifecycle;
-import org.eclipse.net4j.util.lifecycle.LifecycleEventAdapter;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
import org.eclipse.net4j.util.om.trace.ContextTracer;
import org.eclipse.net4j.util.options.IOptions;
@@ -81,6 +70,7 @@ import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
import org.eclipse.emf.spi.cdo.InternalCDOSession;
import org.eclipse.emf.spi.cdo.InternalCDOTransaction;
@@ -102,23 +92,13 @@ import java.util.Set;
/**
* @author Eike Stepper
*/
-public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSession, Repository
+public abstract class CDOSessionImpl extends Container<CDOView> implements InternalCDOSession, Repository
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, CDOSessionImpl.class);
private int sessionID;
- private CDOClientProtocol protocol;
-
- @ExcludeFromDump
- private IListener protocolListener = new LifecycleEventAdapter()
- {
- @Override
- protected void onDeactivated(ILifecycle lifecycle)
- {
- close();
- }
- };
+ private CDOSessionProtocol sessionProtocol;
private String repositoryName;
@@ -167,9 +147,6 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
public CDOSessionImpl()
{
- protocol = new CDOClientProtocol();
- protocol.setInfraStructure(this);
-
packageManager = createPackageManager();
revisionManager = createRevisionManager();
}
@@ -195,15 +172,6 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
return this;
}
- /**
- * @since 2.0
- */
- public String getUserID()
- {
- IChannel channel = protocol.getChannel();
- return channel == null ? null : channel.getUserID();
- }
-
public CDOIDObject createCDOIDObject(ExtendedDataInput in)
{
return cdoidObjectFactory.createCDOIDObject(in);
@@ -217,9 +185,9 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
return cdoidObjectFactory.createCDOIDObject(in);
}
- public CDOClientProtocol getProtocol()
+ public CDOSessionProtocol getSessionProtocol()
{
- return protocol;
+ return sessionProtocol;
}
/**
@@ -276,14 +244,7 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
private RepositoryTimeResult sendRepositoryTimeRequest()
{
- try
- {
- return new RepositoryTimeRequest(protocol).send();
- }
- catch (Exception ex)
- {
- throw WrappedException.wrap(ex);
- }
+ return sessionProtocol.getRepositoryTime();
}
/**
@@ -709,8 +670,7 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
@Override
public String toString()
{
- IChannel channel = protocol.getChannel();
- return MessageFormat.format("CDOSession[{0}/{1}]", channel, repositoryName);
+ return MessageFormat.format("CDOSession[{0}, {1}]", repositoryName, sessionID);
}
/**
@@ -787,10 +747,8 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
}
packageRegistry.setSession(this);
- protocol.open();
- boolean passiveUpdateEnabled = options().isPassiveUpdateEnabled();
- OpenSessionResult result = new OpenSessionRequest(protocol, repositoryName, passiveUpdateEnabled).send();
+ OpenSessionResult result = sessionProtocol.openSession(repositoryName, options().isPassiveUpdateEnabled());
sessionID = result.getSessionID();
repositoryUUID = result.getRepositoryUUID();
repositoryCreationTime = result.getRepositoryCreationTime();
@@ -801,7 +759,6 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
packageManager.addPackageProxies(result.getPackageInfos());
packageManager.activate();
revisionManager.activate();
- EventUtil.addListener(protocol, protocolListener);
}
@Override
@@ -832,10 +789,6 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
packageManager.deactivate();
packageManager = null;
-
- EventUtil.removeListener(protocol, protocolListener);
- protocol.close();
- protocol = null;
super.doDeactivate();
}
@@ -860,7 +813,7 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
missingLibraries.removeAll(existingLibraries);
if (!missingLibraries.isEmpty())
{
- new LoadLibrariesRequest(protocol, missingLibraries, cacheFolder).send();
+ sessionProtocol.loadLibraries(missingLibraries, cacheFolder);
}
}
@@ -948,7 +901,7 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
if (!allRevisions.isEmpty())
{
int initialChunkSize = options().getCollectionLoadingPolicy().getInitialChunkSize();
- return new SyncRevisionRequest(protocol, this, allRevisions, initialChunkSize).send();
+ return sessionProtocol.syncRevisions(allRevisions, initialChunkSize);
}
}
catch (Exception ex)
@@ -1049,18 +1002,10 @@ public class CDOSessionImpl extends Container<CDOView> implements InternalCDOSes
// Need to refresh if we change state
Map<CDOID, CDORevision> allRevisions = getAllRevisions();
-
- try
- {
- if (!allRevisions.isEmpty())
- {
- new SetPassiveUpdateRequest(protocol, CDOSessionImpl.this, allRevisions, collectionLoadingPolicy
- .getInitialChunkSize(), passiveUpdateEnabled).send();
- }
- }
- catch (Exception ex)
+ if (!allRevisions.isEmpty())
{
- throw WrappedException.wrap(ex);
+ int initialChunkSize = collectionLoadingPolicy.getInitialChunkSize();
+ sessionProtocol.setPassiveUpdate(allRevisions, initialChunkSize, passiveUpdateEnabled);
}
fireEvent(new PassiveUpdateEventImpl());

Back to the top