diff options
author | Eike Stepper | 2010-12-19 12:13:23 +0000 |
---|---|---|
committer | Eike Stepper | 2010-12-19 12:13:23 +0000 |
commit | 156d2ab7789a299f5aa339a5c946431ff15c08da (patch) | |
tree | c9a684fc16565f59150c98338692899dba8155d4 /plugins/org.eclipse.emf.cdo.server.net4j/src/org | |
parent | 914fe21b0f7795f620ee9508b3a2140ef1280fc0 (diff) | |
download | cdo-156d2ab7789a299f5aa339a5c946431ff15c08da.tar.gz cdo-156d2ab7789a299f5aa339a5c946431ff15c08da.tar.xz cdo-156d2ab7789a299f5aa339a5c946431ff15c08da.zip |
[332672] Provide API to query the differences between branches
https://bugs.eclipse.org/bugs/show_bug.cgi?id=332672
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.net4j/src/org')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadMergeDataIndication.java | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadMergeDataIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadMergeDataIndication.java index 6d49e6c56e..9c76bc2487 100644 --- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadMergeDataIndication.java +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LoadMergeDataIndication.java @@ -34,12 +34,16 @@ import java.util.Set; */ public class LoadMergeDataIndication extends CDOServerReadIndicationWithMonitoring { - private CDORevisionAvailabilityInfo ancestorInfo; + private int infos; private CDORevisionAvailabilityInfo targetInfo; private CDORevisionAvailabilityInfo sourceInfo; + private CDORevisionAvailabilityInfo targetBaseInfo; + + private CDORevisionAvailabilityInfo sourceBaseInfo; + public LoadMergeDataIndication(CDOServerProtocol protocol) { super(protocol, CDOProtocolConstants.SIGNAL_LOAD_MERGE_DATA); @@ -48,13 +52,23 @@ public class LoadMergeDataIndication extends CDOServerReadIndicationWithMonitori @Override protected void indicating(CDODataInput in, OMMonitor monitor) throws Exception { - monitor.begin(3); + infos = in.readInt(); + monitor.begin(infos); try { - ancestorInfo = readRevisionAvailabilityInfo(in, monitor.fork()); targetInfo = readRevisionAvailabilityInfo(in, monitor.fork()); sourceInfo = readRevisionAvailabilityInfo(in, monitor.fork()); + + if (infos > 2) + { + targetBaseInfo = readRevisionAvailabilityInfo(in, monitor.fork()); + } + + if (infos > 3) + { + sourceBaseInfo = readRevisionAvailabilityInfo(in, monitor.fork()); + } } finally { @@ -91,12 +105,12 @@ public class LoadMergeDataIndication extends CDOServerReadIndicationWithMonitori @Override protected void responding(CDODataOutput out, OMMonitor monitor) throws Exception { - monitor.begin(5); + monitor.begin(2 + infos); try { InternalRepository repository = getRepository(); - Set<CDOID> ids = repository.getMergeData(ancestorInfo, targetInfo, sourceInfo, monitor.fork()); + Set<CDOID> ids = repository.getMergeData(targetInfo, sourceInfo, targetBaseInfo, sourceBaseInfo, monitor.fork()); out.writeInt(ids.size()); for (CDOID id : ids) @@ -107,9 +121,18 @@ public class LoadMergeDataIndication extends CDOServerReadIndicationWithMonitori monitor.worked(); Set<CDORevisionKey> writtenRevisions = new HashSet<CDORevisionKey>(); - writeRevisionAvailabilityInfo(out, ancestorInfo, writtenRevisions, monitor.fork()); writeRevisionAvailabilityInfo(out, targetInfo, writtenRevisions, monitor.fork()); writeRevisionAvailabilityInfo(out, sourceInfo, writtenRevisions, monitor.fork()); + + if (infos > 2) + { + writeRevisionAvailabilityInfo(out, targetBaseInfo, writtenRevisions, monitor.fork()); + } + + if (infos > 3) + { + writeRevisionAvailabilityInfo(out, sourceBaseInfo, writtenRevisions, monitor.fork()); + } } finally { |