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/embedded/EmbeddedClientSessionProtocol.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java1212
1 files changed, 606 insertions, 606 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java
index e1e741d78a..364beb0efe 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedClientSessionProtocol.java
@@ -1,606 +1,606 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.emf.cdo.internal.server.embedded;
-
-import org.eclipse.emf.cdo.CDOObject;
-import org.eclipse.emf.cdo.common.CDOCommonSession.Options.LockNotificationMode;
-import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode;
-import org.eclipse.emf.cdo.common.branch.CDOBranch;
-import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
-import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
-import org.eclipse.emf.cdo.common.branch.CDOBranchPointRange;
-import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
-import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
-import org.eclipse.emf.cdo.common.commit.CDOCommitData;
-import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.id.CDOIDProvider;
-import org.eclipse.emf.cdo.common.lob.CDOLob;
-import org.eclipse.emf.cdo.common.lob.CDOLobInfo;
-import org.eclipse.emf.cdo.common.lock.CDOLockState;
-import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
-import org.eclipse.emf.cdo.common.protocol.CDOAuthenticator;
-import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
-import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
-import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
-import org.eclipse.emf.cdo.common.util.CDOQueryQueue;
-import org.eclipse.emf.cdo.server.StoreThreadLocal;
-import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
-import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
-import org.eclipse.emf.cdo.spi.common.CDOAuthenticationResult;
-import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
-import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
-import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
-import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
-import org.eclipse.emf.cdo.spi.common.revision.RevisionInfo;
-import org.eclipse.emf.cdo.spi.server.InternalCommitContext;
-import org.eclipse.emf.cdo.spi.server.InternalQueryManager;
-import org.eclipse.emf.cdo.spi.server.InternalQueryResult;
-import org.eclipse.emf.cdo.spi.server.InternalRepository;
-import org.eclipse.emf.cdo.spi.server.InternalSession;
-import org.eclipse.emf.cdo.spi.server.InternalTransaction;
-import org.eclipse.emf.cdo.spi.server.InternalView;
-import org.eclipse.emf.cdo.view.CDOView;
-
-import org.eclipse.net4j.util.collection.Pair;
-import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
-import org.eclipse.net4j.util.lifecycle.Lifecycle;
-import org.eclipse.net4j.util.om.monitor.OMMonitor;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.spi.cdo.AbstractQueryIterator;
-import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
-import org.eclipse.emf.spi.cdo.InternalCDOObject;
-import org.eclipse.emf.spi.cdo.InternalCDORemoteSessionManager;
-import org.eclipse.emf.spi.cdo.InternalCDOTransaction;
-import org.eclipse.emf.spi.cdo.InternalCDOTransaction.InternalCDOCommitContext;
-import org.eclipse.emf.spi.cdo.InternalCDOXATransaction.InternalCDOXACommitContext;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * @author Eike Stepper
- * @deprecated Not yet supported.
- */
-@Deprecated
-public class EmbeddedClientSessionProtocol extends Lifecycle implements CDOSessionProtocol
-{
- private EmbeddedClientSession session;
-
- // A separate session protocol instance is required because the getSession() methods are ambiguous!
- private EmbeddedServerSessionProtocol serverSessionProtocol;
-
- private InternalRepository repository;
-
- public EmbeddedClientSessionProtocol(EmbeddedClientSession session)
- {
- this.session = session;
- }
-
- public EmbeddedClientSession getSession()
- {
- return session;
- }
-
- public EmbeddedServerSessionProtocol getServerSessionProtocol()
- {
- return serverSessionProtocol;
- }
-
- public InternalSession openSession(boolean passiveUpdateEnabled)
- {
- repository = session.getRepository();
- activate();
- return serverSessionProtocol.openSession(repository, passiveUpdateEnabled);
- }
-
- public EPackage[] loadPackages(CDOPackageUnit packageUnit)
- {
- throw new UnsupportedOperationException();
- }
-
- public Pair<Integer, Long> createBranch(int branchID, BranchInfo branchInfo)
- {
- throw new UnsupportedOperationException();
- }
-
- public BranchInfo loadBranch(int branchID)
- {
- throw new UnsupportedOperationException();
- }
-
- public SubBranchInfo[] loadSubBranches(int branchID)
- {
- throw new UnsupportedOperationException();
- }
-
- public int loadBranches(int startID, int endID, CDOBranchHandler branchHandler)
- {
- throw new UnsupportedOperationException();
- }
-
- public RepositoryTimeResult getRepositoryTime()
- {
- RepositoryTimeResult result = new RepositoryTimeResult();
- long timeStamp = System.currentTimeMillis();
- result.setRequested(timeStamp);
- result.setIndicated(timeStamp);
- result.setResponded(timeStamp);
- result.setConfirmed(timeStamp);
- return result;
- }
-
- public CDOLockState[] getLockStates(int viewID, Collection<CDOID> ids)
- {
- throw new UnsupportedOperationException();
- }
-
- public void enableLockNotifications(int viewID, boolean enable)
- {
- throw new UnsupportedOperationException();
- }
-
- public void disablePassiveUpdate()
- {
- // serverSessionProtocol.getSession().setPassiveUpdateEnabled(passiveUpdateEnabled);
- // TODO: implement EmbeddedClientSessionProtocol.setPassiveUpdate(idAndVersions, initialChunkSize,
- // passiveUpdateEnabled)
- throw new UnsupportedOperationException();
- }
-
- public void setPassiveUpdateMode(PassiveUpdateMode mode)
- {
- // TODO: implement EmbeddedClientSessionProtocol.setPassiveUpdateMode(mode)
- throw new UnsupportedOperationException();
- }
-
- public void setLockNotificationMode(LockNotificationMode mode)
- {
- throw new UnsupportedOperationException();
- }
-
- public Object loadChunk(InternalCDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
- int fromIndex, int toIndex)
- {
- throw new UnsupportedOperationException();
- }
-
- public void loadCommitInfos(CDOBranch branch, long startTime, long endTime, CDOCommitInfoHandler handler)
- {
- throw new UnsupportedOperationException();
- }
-
- public CDOCommitData loadCommitData(long timeStamp)
- {
- throw new UnsupportedOperationException();
- }
-
- public InternalCDORevision loadRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int referenceChunk)
- {
- try
- {
- InternalSession session = serverSessionProtocol.getSession();
- StoreThreadLocal.setSession(session);
- return repository.getRevisionManager().getRevisionByVersion(id, branchVersion, referenceChunk, true);
- }
- finally
- {
- StoreThreadLocal.release();
- }
- }
-
- public List<InternalCDORevision> loadRevisions(List<RevisionInfo> infos, CDOBranchPoint branchPoint,
- int referenceChunk, int prefetchDepth)
- {
- try
- {
- InternalSession session = serverSessionProtocol.getSession();
- StoreThreadLocal.setSession(session);
-
- List<CDOID> ids = new ArrayList<CDOID>(infos.size());
- for (RevisionInfo info : infos)
- {
- ids.add(info.getID());
- }
-
- // @SuppressWarnings("unchecked")
- // List<InternalCDORevision> revisions = (List<InternalCDORevision>)(List<?>)repository.getRevisionManager()
- // .getRevisions(ids, branchPoint, referenceChunk, prefetchDepth, true);
-
- // TODO: implement EmbeddedClientSessionProtocol.loadRevisions(infos, branchPoint, referenceChunk, prefetchDepth)
- throw new UnsupportedOperationException();
- }
- finally
- {
- StoreThreadLocal.release();
- }
- }
-
- public RefreshSessionResult refresh(long lastUpdateTime,
- Map<CDOBranch, Map<CDOID, InternalCDORevision>> viewedRevisions, int initialChunkSize,
- boolean enablePassiveUpdates)
- {
- throw new UnsupportedOperationException();
- }
-
- public void openView(int viewID, boolean readOnly, CDOBranchPoint branchPoint)
- {
- InternalSession session = serverSessionProtocol.getSession();
- if (readOnly)
- {
- session.openView(viewID, branchPoint);
- }
- else
- {
- session.openTransaction(viewID, branchPoint);
- }
- }
-
- public CDOBranchPoint openView(int viewID, boolean readOnly, String durableLockingID)
- {
- throw new UnsupportedOperationException();
- }
-
- public void switchTarget(int viewID, CDOBranchPoint branchPoint, List<InternalCDOObject> invalidObjects,
- List<CDORevisionKey> allChangedObjects, List<CDOIDAndVersion> allDetachedObjects, OMMonitor monitor)
- {
- // TODO: implement EmbeddedClientSessionProtocol.changeView(viewID, branchPoint, invalidObjects, allChangedObjects,
- // allDetachedObjects, monitor)
- throw new UnsupportedOperationException();
-
- // try
- // {
- // monitor.begin();
- // Async async = monitor.forkAsync();
- //
- // try
- // {
- // InternalView view = serverSessionProtocol.getSession().getView(viewID);
- // if (view != null)
- // {
- // List<CDOID> ids = new ArrayList<CDOID>(invalidObjects.size());
- // for (InternalCDOObject object : invalidObjects)
- // {
- // ids.add(object.cdoID());
- // }
- //
- // view.changeTarget(branchPoint, ids, allChangedObjects, allDetachedObjects);
- // }
- // }
- // finally
- // {
- // async.stop();
- // }
- // }
- // finally
- // {
- // monitor.done();
- // }
- }
-
- public void closeView(int viewID)
- {
- InternalView view = serverSessionProtocol.getSession().getView(viewID);
- if (view != null)
- {
- view.close();
- }
- }
-
- public void changeSubscription(int viewID, List<CDOID> ids, boolean subscribeMode, boolean clear)
- {
- throw new UnsupportedOperationException();
- }
-
- public void query(CDOView view, AbstractQueryIterator<?> query)
- {
- InternalView serverView = serverSessionProtocol.getSession().getView(view.getViewID());
- InternalQueryManager queryManager = repository.getQueryManager();
- InternalQueryResult result = queryManager.execute(serverView, query.getQueryInfo());
-
- query.setQueryID(result.getQueryID());
- CDOQueryQueue<Object> resultQueue = query.getQueue();
-
- try
- {
- while (result.hasNext())
- {
- Object object = result.next();
- resultQueue.add(object);
- }
- }
- catch (RuntimeException ex)
- {
- resultQueue.setException(ex);
- }
- catch (Throwable throwable)
- {
- resultQueue.setException(new RuntimeException(throwable.getMessage(), throwable));
- }
- finally
- {
- resultQueue.close();
- }
- }
-
- public boolean cancelQuery(int queryID)
- {
- repository.getQueryManager().cancel(queryID);
- return true;
- }
-
- public boolean isObjectLocked(CDOView view, CDOObject object, LockType lockType, boolean byOthers)
- {
- throw new UnsupportedOperationException();
- }
-
- @Deprecated
- public LockObjectsResult lockObjects(List<InternalCDORevision> viewedRevisions, int viewID, CDOBranch viewedBranch,
- LockType lockType, long timeout) throws InterruptedException
- {
- throw new UnsupportedOperationException();
- }
-
- /**
- * @since 4.1
- */
- public LockObjectsResult lockObjects2(List<CDORevisionKey> keys, int viewID, CDOBranch viewedBranch, LockType type,
- boolean recursive, long timeout) throws InterruptedException
- {
- throw new UnsupportedOperationException();
- }
-
- @Deprecated
- public void unlockObjects(CDOView view, Collection<CDOID> ids, LockType type)
- {
- throw new UnsupportedOperationException();
- }
-
- public UnlockObjectsResult unlockObjects2(CDOView view, Collection<CDOID> ids, LockType type, boolean recursive)
- {
- throw new UnsupportedOperationException();
- }
-
- public LockObjectsResult delegateLockObjects(String lockAreaID, List<CDORevisionKey> keys, CDOBranch viewedBranch,
- LockType type, boolean recursive, long timeout) throws InterruptedException
- {
- throw new UnsupportedOperationException();
- }
-
- public UnlockObjectsResult delegateUnlockObjects(String lockAreaID, Collection<CDOID> ids, LockType type,
- boolean recursive)
- {
- throw new UnsupportedOperationException();
- }
-
- public String changeLockArea(CDOView view, boolean create)
- {
- throw new UnsupportedOperationException();
- }
-
- public List<byte[]> queryLobs(Set<byte[]> ids)
- {
- // TODO: implement EmbeddedClientSessionProtocol.queryLobs(ids)
- throw new UnsupportedOperationException();
- }
-
- public void loadLob(CDOLobInfo info, Object outputStreamOrWriter)
- {
- // TODO: implement EmbeddedClientSessionProtocol.loadLob(info, out)
- throw new UnsupportedOperationException();
- }
-
- public void handleRevisions(EClass eClass, CDOBranch branch, boolean exactBranch, long timeStamp, boolean exactTime,
- CDORevisionHandler handler)
- {
- // TODO: implement EmbeddedClientSessionProtocol.handleRevisions(eClass, branch, exactBranch, timeStamp, exactTime,
- // handler)
- throw new UnsupportedOperationException();
- }
-
- @Deprecated
- public CommitTransactionResult commitTransaction(int transactionID, String comment, boolean releaseLocks,
- CDOIDProvider idProvider, CDOCommitData commitData, Collection<CDOLob<?>> lobs, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CommitTransactionResult commitTransaction(InternalCDOCommitContext context, OMMonitor monitor)
- {
- monitor.begin(2);
- boolean success = false;
- InternalCommitContext serverCommitContext = null;
- CommitTransactionResult result = null;
-
- try
- {
- InternalCDOTransaction transaction = context.getTransaction();
- CDOCommitData commitData = context.getCommitData();
-
- int transactionID = transaction.getViewID();
- InternalTransaction serverTransaction = (InternalTransaction)serverSessionProtocol.getSession().getView(
- transactionID);
- serverCommitContext = serverTransaction.createCommitContext();
- serverCommitContext.preWrite();
- serverCommitContext.setAutoReleaseLocksEnabled(transaction.options().isAutoReleaseLocksEnabled());
-
- List<CDOPackageUnit> npu = commitData.getNewPackageUnits();
- serverCommitContext.setNewPackageUnits(npu.toArray(new InternalCDOPackageUnit[npu.size()]));
-
- List<CDOIDAndVersion> no = commitData.getNewObjects();
- InternalCDORevision[] array = new InternalCDORevision[no.size()];
- int index = 0;
- for (CDOIDAndVersion object : no)
- {
- InternalCDORevision revision = (InternalCDORevision)object;
- // revision.convertEObjects(clientTransaction);
- array[index++] = revision;
- }
-
- serverCommitContext.setNewObjects(array);
-
- List<CDORevisionKey> rd = commitData.getChangedObjects();
- serverCommitContext.setDirtyObjectDeltas(rd.toArray(new InternalCDORevisionDelta[rd.size()]));
-
- List<CDOIDAndVersion> detachedObjects = commitData.getDetachedObjects();
- serverCommitContext.setDetachedObjects(detachedObjects.toArray(new CDOID[detachedObjects.size()]));
-
- serverCommitContext.write(monitor.fork());
- success = serverCommitContext.getRollbackMessage() == null;
- if (success)
- {
- serverCommitContext.commit(monitor.fork());
- }
- else
- {
- monitor.worked();
- }
-
- // result = new CommitTransactionResult(commitData, serverCommitContext.getBranchPoint().getTimeStamp());
- // for (Entry<CDOID, CDOID> entry : serverCommitContext.getIDMappings().entrySet())
- // {
- // result.addIDMapping(entry.getKey(), entry.getValue());
- // }
- }
- finally
- {
- if (serverCommitContext != null)
- {
- serverCommitContext.postCommit(success);
- }
-
- monitor.done();
- }
-
- return result;
- }
-
- @Deprecated
- public CommitTransactionResult commitDelegation(CDOBranch branch, String userID, String comment,
- CDOCommitData commitData, Map<CDOID, EClass> detachedObjectTypes, Collection<CDOLob<?>> lobs, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CommitTransactionResult commitDelegation(InternalCDOCommitContext context, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CommitTransactionResult commitXATransactionCancel(InternalCDOXACommitContext xaContext, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CommitTransactionResult commitXATransactionPhase1(InternalCDOXACommitContext xaContext, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CommitTransactionResult commitXATransactionPhase2(InternalCDOXACommitContext xaContext, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CommitTransactionResult commitXATransactionPhase3(InternalCDOXACommitContext xaContext, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public List<CDORemoteSession> getRemoteSessions(InternalCDORemoteSessionManager manager, boolean subscribe)
- {
- throw new UnsupportedOperationException();
- }
-
- public Set<Integer> sendRemoteMessage(CDORemoteSessionMessage message, List<CDORemoteSession> recipients)
- {
- throw new UnsupportedOperationException();
- }
-
- public boolean unsubscribeRemoteSessions()
- {
- throw new UnsupportedOperationException();
- }
-
- public void replicateRepository(CDOReplicationContext context, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public void replicateRepositoryRaw(CDORawReplicationContext context, OMMonitor monitor)
- {
- throw new UnsupportedOperationException();
- }
-
- public CDOChangeSetData[] loadChangeSets(CDOBranchPointRange... ranges)
- {
- throw new UnsupportedOperationException();
- }
-
- public Set<CDOID> loadMergeData(CDORevisionAvailabilityInfo targetInfo, CDORevisionAvailabilityInfo sourceInfo,
- CDORevisionAvailabilityInfo targetBaseInfo, CDORevisionAvailabilityInfo sourceBaseInfo)
- {
- throw new UnsupportedOperationException();
- }
-
- public CDOAuthenticationResult handleAuthenticationChallenge(byte[] randomToken) throws Exception
- {
- CDOAuthenticator authenticator = getSession().getAuthenticator();
- if (authenticator == null)
- {
- throw new IllegalStateException("No authenticator configured"); //$NON-NLS-1$
- }
-
- CDOAuthenticationResult result = authenticator.authenticate(randomToken);
- if (result == null)
- {
- throw new SecurityException("Not authenticated"); //$NON-NLS-1$
- }
-
- String userID = result.getUserID();
- if (userID == null)
- {
- throw new SecurityException("No user ID"); //$NON-NLS-1$
- }
-
- byte[] cryptedToken = result.getCryptedToken();
- if (cryptedToken == null)
- {
- throw new SecurityException("No crypted token"); //$NON-NLS-1$
- }
-
- return result;
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- serverSessionProtocol = new EmbeddedServerSessionProtocol(this);
- serverSessionProtocol.activate();
- }
-
- @Override
- protected void doDeactivate() throws Exception
- {
- serverSessionProtocol.deactivate();
- serverSessionProtocol = null;
- super.doDeactivate();
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.internal.server.embedded;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.common.CDOCommonSession.Options.LockNotificationMode;
+import org.eclipse.emf.cdo.common.CDOCommonSession.Options.PassiveUpdateMode;
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
+import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
+import org.eclipse.emf.cdo.common.branch.CDOBranchPointRange;
+import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
+import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
+import org.eclipse.emf.cdo.common.commit.CDOCommitData;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
+import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDProvider;
+import org.eclipse.emf.cdo.common.lob.CDOLob;
+import org.eclipse.emf.cdo.common.lob.CDOLobInfo;
+import org.eclipse.emf.cdo.common.lock.CDOLockState;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.protocol.CDOAuthenticator;
+import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
+import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
+import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
+import org.eclipse.emf.cdo.common.util.CDOQueryQueue;
+import org.eclipse.emf.cdo.server.StoreThreadLocal;
+import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
+import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
+import org.eclipse.emf.cdo.spi.common.CDOAuthenticationResult;
+import org.eclipse.emf.cdo.spi.common.CDORawReplicationContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
+import org.eclipse.emf.cdo.spi.common.commit.CDORevisionAvailabilityInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta;
+import org.eclipse.emf.cdo.spi.common.revision.RevisionInfo;
+import org.eclipse.emf.cdo.spi.server.InternalCommitContext;
+import org.eclipse.emf.cdo.spi.server.InternalQueryManager;
+import org.eclipse.emf.cdo.spi.server.InternalQueryResult;
+import org.eclipse.emf.cdo.spi.server.InternalRepository;
+import org.eclipse.emf.cdo.spi.server.InternalSession;
+import org.eclipse.emf.cdo.spi.server.InternalTransaction;
+import org.eclipse.emf.cdo.spi.server.InternalView;
+import org.eclipse.emf.cdo.view.CDOView;
+
+import org.eclipse.net4j.util.collection.Pair;
+import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
+import org.eclipse.net4j.util.lifecycle.Lifecycle;
+import org.eclipse.net4j.util.om.monitor.OMMonitor;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.spi.cdo.AbstractQueryIterator;
+import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
+import org.eclipse.emf.spi.cdo.InternalCDOObject;
+import org.eclipse.emf.spi.cdo.InternalCDORemoteSessionManager;
+import org.eclipse.emf.spi.cdo.InternalCDOTransaction;
+import org.eclipse.emf.spi.cdo.InternalCDOTransaction.InternalCDOCommitContext;
+import org.eclipse.emf.spi.cdo.InternalCDOXATransaction.InternalCDOXACommitContext;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ * @deprecated Not yet supported.
+ */
+@Deprecated
+public class EmbeddedClientSessionProtocol extends Lifecycle implements CDOSessionProtocol
+{
+ private EmbeddedClientSession session;
+
+ // A separate session protocol instance is required because the getSession() methods are ambiguous!
+ private EmbeddedServerSessionProtocol serverSessionProtocol;
+
+ private InternalRepository repository;
+
+ public EmbeddedClientSessionProtocol(EmbeddedClientSession session)
+ {
+ this.session = session;
+ }
+
+ public EmbeddedClientSession getSession()
+ {
+ return session;
+ }
+
+ public EmbeddedServerSessionProtocol getServerSessionProtocol()
+ {
+ return serverSessionProtocol;
+ }
+
+ public InternalSession openSession(boolean passiveUpdateEnabled)
+ {
+ repository = session.getRepository();
+ activate();
+ return serverSessionProtocol.openSession(repository, passiveUpdateEnabled);
+ }
+
+ public EPackage[] loadPackages(CDOPackageUnit packageUnit)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Pair<Integer, Long> createBranch(int branchID, BranchInfo branchInfo)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public BranchInfo loadBranch(int branchID)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public SubBranchInfo[] loadSubBranches(int branchID)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public int loadBranches(int startID, int endID, CDOBranchHandler branchHandler)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public RepositoryTimeResult getRepositoryTime()
+ {
+ RepositoryTimeResult result = new RepositoryTimeResult();
+ long timeStamp = System.currentTimeMillis();
+ result.setRequested(timeStamp);
+ result.setIndicated(timeStamp);
+ result.setResponded(timeStamp);
+ result.setConfirmed(timeStamp);
+ return result;
+ }
+
+ public CDOLockState[] getLockStates(int viewID, Collection<CDOID> ids)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void enableLockNotifications(int viewID, boolean enable)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void disablePassiveUpdate()
+ {
+ // serverSessionProtocol.getSession().setPassiveUpdateEnabled(passiveUpdateEnabled);
+ // TODO: implement EmbeddedClientSessionProtocol.setPassiveUpdate(idAndVersions, initialChunkSize,
+ // passiveUpdateEnabled)
+ throw new UnsupportedOperationException();
+ }
+
+ public void setPassiveUpdateMode(PassiveUpdateMode mode)
+ {
+ // TODO: implement EmbeddedClientSessionProtocol.setPassiveUpdateMode(mode)
+ throw new UnsupportedOperationException();
+ }
+
+ public void setLockNotificationMode(LockNotificationMode mode)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object loadChunk(InternalCDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
+ int fromIndex, int toIndex)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void loadCommitInfos(CDOBranch branch, long startTime, long endTime, CDOCommitInfoHandler handler)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CDOCommitData loadCommitData(long timeStamp)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public InternalCDORevision loadRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int referenceChunk)
+ {
+ try
+ {
+ InternalSession session = serverSessionProtocol.getSession();
+ StoreThreadLocal.setSession(session);
+ return repository.getRevisionManager().getRevisionByVersion(id, branchVersion, referenceChunk, true);
+ }
+ finally
+ {
+ StoreThreadLocal.release();
+ }
+ }
+
+ public List<InternalCDORevision> loadRevisions(List<RevisionInfo> infos, CDOBranchPoint branchPoint,
+ int referenceChunk, int prefetchDepth)
+ {
+ try
+ {
+ InternalSession session = serverSessionProtocol.getSession();
+ StoreThreadLocal.setSession(session);
+
+ List<CDOID> ids = new ArrayList<CDOID>(infos.size());
+ for (RevisionInfo info : infos)
+ {
+ ids.add(info.getID());
+ }
+
+ // @SuppressWarnings("unchecked")
+ // List<InternalCDORevision> revisions = (List<InternalCDORevision>)(List<?>)repository.getRevisionManager()
+ // .getRevisions(ids, branchPoint, referenceChunk, prefetchDepth, true);
+
+ // TODO: implement EmbeddedClientSessionProtocol.loadRevisions(infos, branchPoint, referenceChunk, prefetchDepth)
+ throw new UnsupportedOperationException();
+ }
+ finally
+ {
+ StoreThreadLocal.release();
+ }
+ }
+
+ public RefreshSessionResult refresh(long lastUpdateTime,
+ Map<CDOBranch, Map<CDOID, InternalCDORevision>> viewedRevisions, int initialChunkSize,
+ boolean enablePassiveUpdates)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void openView(int viewID, boolean readOnly, CDOBranchPoint branchPoint)
+ {
+ InternalSession session = serverSessionProtocol.getSession();
+ if (readOnly)
+ {
+ session.openView(viewID, branchPoint);
+ }
+ else
+ {
+ session.openTransaction(viewID, branchPoint);
+ }
+ }
+
+ public CDOBranchPoint openView(int viewID, boolean readOnly, String durableLockingID)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void switchTarget(int viewID, CDOBranchPoint branchPoint, List<InternalCDOObject> invalidObjects,
+ List<CDORevisionKey> allChangedObjects, List<CDOIDAndVersion> allDetachedObjects, OMMonitor monitor)
+ {
+ // TODO: implement EmbeddedClientSessionProtocol.changeView(viewID, branchPoint, invalidObjects, allChangedObjects,
+ // allDetachedObjects, monitor)
+ throw new UnsupportedOperationException();
+
+ // try
+ // {
+ // monitor.begin();
+ // Async async = monitor.forkAsync();
+ //
+ // try
+ // {
+ // InternalView view = serverSessionProtocol.getSession().getView(viewID);
+ // if (view != null)
+ // {
+ // List<CDOID> ids = new ArrayList<CDOID>(invalidObjects.size());
+ // for (InternalCDOObject object : invalidObjects)
+ // {
+ // ids.add(object.cdoID());
+ // }
+ //
+ // view.changeTarget(branchPoint, ids, allChangedObjects, allDetachedObjects);
+ // }
+ // }
+ // finally
+ // {
+ // async.stop();
+ // }
+ // }
+ // finally
+ // {
+ // monitor.done();
+ // }
+ }
+
+ public void closeView(int viewID)
+ {
+ InternalView view = serverSessionProtocol.getSession().getView(viewID);
+ if (view != null)
+ {
+ view.close();
+ }
+ }
+
+ public void changeSubscription(int viewID, List<CDOID> ids, boolean subscribeMode, boolean clear)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void query(CDOView view, AbstractQueryIterator<?> query)
+ {
+ InternalView serverView = serverSessionProtocol.getSession().getView(view.getViewID());
+ InternalQueryManager queryManager = repository.getQueryManager();
+ InternalQueryResult result = queryManager.execute(serverView, query.getQueryInfo());
+
+ query.setQueryID(result.getQueryID());
+ CDOQueryQueue<Object> resultQueue = query.getQueue();
+
+ try
+ {
+ while (result.hasNext())
+ {
+ Object object = result.next();
+ resultQueue.add(object);
+ }
+ }
+ catch (RuntimeException ex)
+ {
+ resultQueue.setException(ex);
+ }
+ catch (Throwable throwable)
+ {
+ resultQueue.setException(new RuntimeException(throwable.getMessage(), throwable));
+ }
+ finally
+ {
+ resultQueue.close();
+ }
+ }
+
+ public boolean cancelQuery(int queryID)
+ {
+ repository.getQueryManager().cancel(queryID);
+ return true;
+ }
+
+ public boolean isObjectLocked(CDOView view, CDOObject object, LockType lockType, boolean byOthers)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Deprecated
+ public LockObjectsResult lockObjects(List<InternalCDORevision> viewedRevisions, int viewID, CDOBranch viewedBranch,
+ LockType lockType, long timeout) throws InterruptedException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * @since 4.1
+ */
+ public LockObjectsResult lockObjects2(List<CDORevisionKey> keys, int viewID, CDOBranch viewedBranch, LockType type,
+ boolean recursive, long timeout) throws InterruptedException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Deprecated
+ public void unlockObjects(CDOView view, Collection<CDOID> ids, LockType type)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public UnlockObjectsResult unlockObjects2(CDOView view, Collection<CDOID> ids, LockType type, boolean recursive)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public LockObjectsResult delegateLockObjects(String lockAreaID, List<CDORevisionKey> keys, CDOBranch viewedBranch,
+ LockType type, boolean recursive, long timeout) throws InterruptedException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public UnlockObjectsResult delegateUnlockObjects(String lockAreaID, Collection<CDOID> ids, LockType type,
+ boolean recursive)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String changeLockArea(CDOView view, boolean create)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public List<byte[]> queryLobs(Set<byte[]> ids)
+ {
+ // TODO: implement EmbeddedClientSessionProtocol.queryLobs(ids)
+ throw new UnsupportedOperationException();
+ }
+
+ public void loadLob(CDOLobInfo info, Object outputStreamOrWriter)
+ {
+ // TODO: implement EmbeddedClientSessionProtocol.loadLob(info, out)
+ throw new UnsupportedOperationException();
+ }
+
+ public void handleRevisions(EClass eClass, CDOBranch branch, boolean exactBranch, long timeStamp, boolean exactTime,
+ CDORevisionHandler handler)
+ {
+ // TODO: implement EmbeddedClientSessionProtocol.handleRevisions(eClass, branch, exactBranch, timeStamp, exactTime,
+ // handler)
+ throw new UnsupportedOperationException();
+ }
+
+ @Deprecated
+ public CommitTransactionResult commitTransaction(int transactionID, String comment, boolean releaseLocks,
+ CDOIDProvider idProvider, CDOCommitData commitData, Collection<CDOLob<?>> lobs, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CommitTransactionResult commitTransaction(InternalCDOCommitContext context, OMMonitor monitor)
+ {
+ monitor.begin(2);
+ boolean success = false;
+ InternalCommitContext serverCommitContext = null;
+ CommitTransactionResult result = null;
+
+ try
+ {
+ InternalCDOTransaction transaction = context.getTransaction();
+ CDOCommitData commitData = context.getCommitData();
+
+ int transactionID = transaction.getViewID();
+ InternalTransaction serverTransaction = (InternalTransaction)serverSessionProtocol.getSession().getView(
+ transactionID);
+ serverCommitContext = serverTransaction.createCommitContext();
+ serverCommitContext.preWrite();
+ serverCommitContext.setAutoReleaseLocksEnabled(transaction.options().isAutoReleaseLocksEnabled());
+
+ List<CDOPackageUnit> npu = commitData.getNewPackageUnits();
+ serverCommitContext.setNewPackageUnits(npu.toArray(new InternalCDOPackageUnit[npu.size()]));
+
+ List<CDOIDAndVersion> no = commitData.getNewObjects();
+ InternalCDORevision[] array = new InternalCDORevision[no.size()];
+ int index = 0;
+ for (CDOIDAndVersion object : no)
+ {
+ InternalCDORevision revision = (InternalCDORevision)object;
+ // revision.convertEObjects(clientTransaction);
+ array[index++] = revision;
+ }
+
+ serverCommitContext.setNewObjects(array);
+
+ List<CDORevisionKey> rd = commitData.getChangedObjects();
+ serverCommitContext.setDirtyObjectDeltas(rd.toArray(new InternalCDORevisionDelta[rd.size()]));
+
+ List<CDOIDAndVersion> detachedObjects = commitData.getDetachedObjects();
+ serverCommitContext.setDetachedObjects(detachedObjects.toArray(new CDOID[detachedObjects.size()]));
+
+ serverCommitContext.write(monitor.fork());
+ success = serverCommitContext.getRollbackMessage() == null;
+ if (success)
+ {
+ serverCommitContext.commit(monitor.fork());
+ }
+ else
+ {
+ monitor.worked();
+ }
+
+ // result = new CommitTransactionResult(commitData, serverCommitContext.getBranchPoint().getTimeStamp());
+ // for (Entry<CDOID, CDOID> entry : serverCommitContext.getIDMappings().entrySet())
+ // {
+ // result.addIDMapping(entry.getKey(), entry.getValue());
+ // }
+ }
+ finally
+ {
+ if (serverCommitContext != null)
+ {
+ serverCommitContext.postCommit(success);
+ }
+
+ monitor.done();
+ }
+
+ return result;
+ }
+
+ @Deprecated
+ public CommitTransactionResult commitDelegation(CDOBranch branch, String userID, String comment,
+ CDOCommitData commitData, Map<CDOID, EClass> detachedObjectTypes, Collection<CDOLob<?>> lobs, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CommitTransactionResult commitDelegation(InternalCDOCommitContext context, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CommitTransactionResult commitXATransactionCancel(InternalCDOXACommitContext xaContext, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CommitTransactionResult commitXATransactionPhase1(InternalCDOXACommitContext xaContext, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CommitTransactionResult commitXATransactionPhase2(InternalCDOXACommitContext xaContext, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CommitTransactionResult commitXATransactionPhase3(InternalCDOXACommitContext xaContext, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public List<CDORemoteSession> getRemoteSessions(InternalCDORemoteSessionManager manager, boolean subscribe)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Set<Integer> sendRemoteMessage(CDORemoteSessionMessage message, List<CDORemoteSession> recipients)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean unsubscribeRemoteSessions()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void replicateRepository(CDOReplicationContext context, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void replicateRepositoryRaw(CDORawReplicationContext context, OMMonitor monitor)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CDOChangeSetData[] loadChangeSets(CDOBranchPointRange... ranges)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Set<CDOID> loadMergeData(CDORevisionAvailabilityInfo targetInfo, CDORevisionAvailabilityInfo sourceInfo,
+ CDORevisionAvailabilityInfo targetBaseInfo, CDORevisionAvailabilityInfo sourceBaseInfo)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public CDOAuthenticationResult handleAuthenticationChallenge(byte[] randomToken) throws Exception
+ {
+ CDOAuthenticator authenticator = getSession().getAuthenticator();
+ if (authenticator == null)
+ {
+ throw new IllegalStateException("No authenticator configured"); //$NON-NLS-1$
+ }
+
+ CDOAuthenticationResult result = authenticator.authenticate(randomToken);
+ if (result == null)
+ {
+ throw new SecurityException("Not authenticated"); //$NON-NLS-1$
+ }
+
+ String userID = result.getUserID();
+ if (userID == null)
+ {
+ throw new SecurityException("No user ID"); //$NON-NLS-1$
+ }
+
+ byte[] cryptedToken = result.getCryptedToken();
+ if (cryptedToken == null)
+ {
+ throw new SecurityException("No crypted token"); //$NON-NLS-1$
+ }
+
+ return result;
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+ serverSessionProtocol = new EmbeddedServerSessionProtocol(this);
+ serverSessionProtocol.activate();
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ serverSessionProtocol.deactivate();
+ serverSessionProtocol = null;
+ super.doDeactivate();
+ }
+}

Back to the top