Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-02-28 10:07:36 +0000
committerEike Stepper2010-02-28 10:07:36 +0000
commite2cfa9dd055a2533ff7282ffa9abcda151a4c751 (patch)
treeab62c14c9d689d1a2b39d619e5ba6c8d3c59d763 /plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf
parent335479690a034b0c1630f1a91ec109ceebae1f1c (diff)
downloadcdo-e2cfa9dd055a2533ff7282ffa9abcda151a4c751.tar.gz
cdo-e2cfa9dd055a2533ff7282ffa9abcda151a4c751.tar.xz
cdo-e2cfa9dd055a2533ff7282ffa9abcda151a4c751.zip
[256936] Support for Offline Mode
https://bugs.eclipse.org/bugs/show_bug.cgi?id=256936
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf')
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java12
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java59
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/LoadBranchesRequest.java60
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/SyncRepositoryRequest.java (renamed from plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CloneRepositoryRequest.java)32
7 files changed, 104 insertions, 80 deletions
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java
index e7abd2bf59..fee17792aa 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientIndication.java
@@ -12,6 +12,7 @@
package org.eclipse.emf.cdo.internal.net4j.protocol;
import org.eclipse.emf.cdo.common.branch.CDOBranchManager;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.CDOListFactory;
@@ -79,6 +80,12 @@ public abstract class CDOClientIndication extends Indication
}
@Override
+ protected CDOCommitInfoManager getCommitInfoManager()
+ {
+ return getSession().getCommitInfoManager();
+ }
+
+ @Override
protected CDORevisionFactory getRevisionFactory()
{
return getSession().getRevisionManager().getFactory();
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
index 6f2f77345d..69f227cb07 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.internal.net4j.protocol;
import org.eclipse.emf.cdo.CDOObject;
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.CDOBranchVersion;
import org.eclipse.emf.cdo.common.commit.CDOCommitData;
@@ -26,7 +27,7 @@ import org.eclipse.emf.cdo.internal.net4j.bundle.OM;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSession;
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
-import org.eclipse.emf.cdo.spi.common.CDOCloningContext;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
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.RevisionInfo;
@@ -122,6 +123,11 @@ public class CDOClientProtocol extends SignalProtocol<CDOSession> implements CDO
return send(new LoadSubBranchesRequest(this, branchID));
}
+ public int loadBranches(int startID, int endID, CDOBranchHandler handler)
+ {
+ return send(new LoadBranchesRequest(this, startID, endID, handler));
+ }
+
public void loadCommitInfos(CDOBranch branch, long startTime, long endTime, CDOCommitInfoHandler handler)
{
send(new LoadCommitInfosRequest(this, branch, startTime, endTime, handler));
@@ -291,9 +297,9 @@ public class CDOClientProtocol extends SignalProtocol<CDOSession> implements CDO
return send(new UnsubscribeRemoteSessionsRequest(this));
}
- public void cloneRepository(CDOCloningContext context)
+ public void syncRepository(CDOReplicationContext context)
{
- send(new CloneRepositoryRequest(this, context));
+ send(new SyncRepositoryRequest(this, context));
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientRequest.java
index e875e56b4f..85f9dbc091 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientRequest.java
@@ -12,6 +12,7 @@
package org.eclipse.emf.cdo.internal.net4j.protocol;
import org.eclipse.emf.cdo.common.branch.CDOBranchManager;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager;
import org.eclipse.emf.cdo.common.id.CDOIDProvider;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
@@ -102,6 +103,12 @@ public abstract class CDOClientRequest<RESULT> extends RequestWithConfirmation<R
}
@Override
+ protected CDOCommitInfoManager getCommitInfoManager()
+ {
+ return getSession().getCommitInfoManager();
+ }
+
+ @Override
protected CDORevisionFactory getRevisionFactory()
{
return getSession().getRevisionManager().getFactory();
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java
index b70472680c..0e1b48ff96 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java
@@ -33,64 +33,7 @@ public class CommitNotificationIndication extends CDOClientIndication
protected void indicating(CDODataInput in) throws IOException
{
InternalCDOSession session = getSession();
- CDOCommitInfo commitInfo = in.readCDOCommitInfo(session.getCommitInfoManager());
+ CDOCommitInfo commitInfo = in.readCDOCommitInfo();
session.handleCommitNotification(commitInfo);
-
- // CDOBranchPoint branchPoint = in.readCDOBranchPoint();
- // if (TRACER.isEnabled())
- // {
- // TRACER.format("Read branchpoint: {0}", branchPoint); //$NON-NLS-1$
- // }
- //
- // CDOPackageUnit[] packageUnits = in.readCDOPackageUnits(null);
- // InternalCDOPackageRegistry packageRegistry = getSession().getPackageRegistry();
- // for (int i = 0; i < packageUnits.length; i++)
- // {
- // packageRegistry.putPackageUnit((InternalCDOPackageUnit)packageUnits[i]);
- // }
- //
- // int size = in.readInt();
- // if (TRACER.isEnabled())
- // {
- // TRACER.format("Reading {0} dirty IDs", size); //$NON-NLS-1$
- // }
- //
- // InternalCDOSession session = getSession();
- // Set<CDOIDAndVersion> dirtyOIDandVersions = new HashSet<CDOIDAndVersion>();
- // for (int i = 0; i < size; i++)
- // {
- // CDOIDAndVersion dirtyOIDandVersion = in.readCDOIDAndVersion();
- // if (TRACER.isEnabled())
- // {
- // TRACER.format("Read dirty ID: {0}", dirtyOIDandVersion); //$NON-NLS-1$
- // }
- //
- // dirtyOIDandVersions.add(dirtyOIDandVersion);
- // }
- //
- // size = in.readInt();
- // if (TRACER.isEnabled())
- // {
- // TRACER.format("Reading {0} Deltas", size); //$NON-NLS-1$
- // }
- //
- // List<CDORevisionDelta> deltas = new ArrayList<CDORevisionDelta>();
- // for (int i = 0; i < size; i++)
- // {
- // CDORevisionDelta revisionDelta = in.readCDORevisionDelta();
- // deltas.add(revisionDelta);
- // }
- //
- // size = in.readInt();
- // if (TRACER.isEnabled())
- // {
- // TRACER.format("Reading {0} Detach Objects", size); //$NON-NLS-1$
- // }
- //
- // List<CDOID> detachedObjects = new ArrayList<CDOID>();
- // for (int i = 0; i < size; i++)
- // {
- // detachedObjects.add(in.readCDOID());
- // }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
index 8a9d66f594..8e6bf4d0c6 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
@@ -16,6 +16,7 @@ package org.eclipse.emf.cdo.internal.net4j.protocol;
import org.eclipse.emf.cdo.common.branch.CDOBranchManager;
import org.eclipse.emf.cdo.common.commit.CDOCommitData;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
import org.eclipse.emf.cdo.common.id.CDOIDMetaRange;
@@ -220,6 +221,12 @@ public class CommitTransactionRequest extends RequestWithMonitoring<CommitTransa
}
@Override
+ protected CDOCommitInfoManager getCommitInfoManager()
+ {
+ return getSession().getCommitInfoManager();
+ }
+
+ @Override
protected CDORevisionFactory getRevisionFactory()
{
return getSession().getRevisionManager().getFactory();
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/LoadBranchesRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/LoadBranchesRequest.java
new file mode 100644
index 0000000000..1a4d278ca6
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/LoadBranchesRequest.java
@@ -0,0 +1,60 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2010 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.net4j.protocol;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
+import org.eclipse.emf.cdo.common.io.CDODataInput;
+import org.eclipse.emf.cdo.common.io.CDODataOutput;
+import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
+
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class LoadBranchesRequest extends CDOClientRequest<Integer>
+{
+ private int startID;
+
+ private int endID;
+
+ private CDOBranchHandler handler;
+
+ public LoadBranchesRequest(CDOClientProtocol protocol, int startID, int endID, CDOBranchHandler handler)
+ {
+ super(protocol, CDOProtocolConstants.SIGNAL_LOAD_BRANCHES);
+ this.startID = startID;
+ this.endID = endID;
+ this.handler = handler;
+ }
+
+ @Override
+ protected void requesting(CDODataOutput out) throws IOException
+ {
+ out.writeInt(startID);
+ out.writeInt(endID);
+ }
+
+ @Override
+ protected Integer confirming(CDODataInput in) throws IOException
+ {
+ int count = 0;
+ while (in.readByte() == CDOProtocolConstants.SYNC_BRANCH)
+ {
+ CDOBranch branch = in.readCDOBranch();
+ handler.handleBranch(branch);
+ ++count;
+ }
+
+ return count;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CloneRepositoryRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/SyncRepositoryRequest.java
index 9468b34371..e03188175e 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CloneRepositoryRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/SyncRepositoryRequest.java
@@ -13,30 +13,28 @@ package org.eclipse.emf.cdo.internal.net4j.protocol;
import org.eclipse.emf.cdo.common.io.CDODataInput;
import org.eclipse.emf.cdo.common.io.CDODataOutput;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
-import org.eclipse.emf.cdo.spi.common.CDOCloningContext;
-import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
+import org.eclipse.emf.cdo.spi.common.CDOReplicationContext;
import java.io.IOException;
/**
* @author Eike Stepper
*/
-public class CloneRepositoryRequest extends CDOClientRequest<Boolean>
+public class SyncRepositoryRequest extends CDOClientRequest<Boolean>
{
- private CDOCloningContext context;
+ private CDOReplicationContext context;
- public CloneRepositoryRequest(CDOClientProtocol protocol, CDOCloningContext context)
+ public SyncRepositoryRequest(CDOClientProtocol protocol, CDOReplicationContext context)
{
- super(protocol, CDOProtocolConstants.SIGNAL_CLONE_REPOSITORY);
+ super(protocol, CDOProtocolConstants.SIGNAL_SYNC_REPOSITORY);
this.context = context;
}
@Override
protected void requesting(CDODataOutput out) throws IOException
{
- out.writeLong(context.getStartTime());
- out.writeLong(context.getEndTime());
- out.writeInt(context.getBranchID());
+ out.writeInt(context.getLastReplicatedBranchID());
+ out.writeLong(context.getLastReplicatedCommitTime());
}
@Override
@@ -47,23 +45,19 @@ public class CloneRepositoryRequest extends CDOClientRequest<Boolean>
byte opcode = in.readByte();
switch (opcode)
{
- case CDOProtocolConstants.CLONING_FINISHED:
+ case CDOProtocolConstants.SYNC_FINISHED:
return true;
- case CDOProtocolConstants.CLONING_PACKAGE:
- context.addPackageUnit(in.readCDOPackageURI());
+ case CDOProtocolConstants.SYNC_BRANCH:
+ context.handleBranch(in.readCDOBranch());
break;
- case CDOProtocolConstants.CLONING_BRANCH:
- context.addBranch(in.readInt());
- break;
-
- case CDOProtocolConstants.CLONING_REVISION:
- context.addRevision((InternalCDORevision)in.readCDORevision());
+ case CDOProtocolConstants.SYNC_COMMIT:
+ context.handleCommitInfo(in.readCDOCommitInfo());
break;
default:
- throw new IOException("Invalid cloning opcode: " + opcode);
+ throw new IOException("Invalid sync opcode: " + opcode);
}
}
}

Back to the top