Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2010-12-19 12:13:23 +0000
committerEike Stepper2010-12-19 12:13:23 +0000
commit156d2ab7789a299f5aa339a5c946431ff15c08da (patch)
treec9a684fc16565f59150c98338692899dba8155d4 /plugins/org.eclipse.emf.cdo.server.net4j/src/org
parent914fe21b0f7795f620ee9508b3a2140ef1280fc0 (diff)
downloadcdo-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.java35
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
{

Back to the top