diff options
author | Eike Stepper | 2010-02-28 10:07:36 +0000 |
---|---|---|
committer | Eike Stepper | 2010-02-28 10:07:36 +0000 |
commit | e2cfa9dd055a2533ff7282ffa9abcda151a4c751 (patch) | |
tree | ab62c14c9d689d1a2b39d619e5ba6c8d3c59d763 /plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf | |
parent | 335479690a034b0c1630f1a91ec109ceebae1f1c (diff) | |
download | cdo-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.java | 7 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java | 12 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientRequest.java | 7 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java | 59 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java | 7 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/LoadBranchesRequest.java | 60 | ||||
-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); } } } |