Interface CDOMergerBaseAware

All Superinterfaces:
CDOMerger
All Known Implementing Classes:
DefaultCDOMerger, DefaultCDOMerger.PerFeature, DefaultCDOMerger.PerFeature.ManyValued, DefaultCDOMerger.PerFeature.ManyValuedOld

public interface CDOMergerBaseAware extends CDOMerger
Extends CDOMerger with support for merge operations whose target and source change sets may have different causal base revisions.

A base-aware merger receives separate revision providers for the target and source bases from which the respective change sets were produced, as well as a result base against which the merged change set is to be expressed. The causal providers define delta decoding, while the result provider defines the identity and coordinate system of returned goals. This is particularly important for re-merge scenarios where a revision or feature value may have been visible to one side but not to the other.

Since:
4.30
Author:
Eike Stepper
  • Method Details

    • merge

      CDOChangeSetData merge(CDOChangeSet target, CDOChangeSet source, CDORevisionProvider targetBaseProvider, CDORevisionProvider sourceBaseProvider, CDORevisionProvider resultBaseProvider) throws CDOMerger.ConflictException
      Merges the given target and source change sets using their respective base revisions.

      targetBaseProvider and sourceBaseProvider define the causal base states in whose coordinate systems the target and source changes must be interpreted. They may represent different branch points. resultBaseProvider defines the state against which the returned CDOChangeSetData is expressed.

      In particular, the absence of an object or feature value from one side's causal base does not by itself imply that the side removed it; the side may simply never have observed it. Implementations must not first rebase an endpoint snapshot to the result base if that would manufacture such a removal.

      Parameters:
      target - the target change set.
      source - the source change set.
      targetBaseProvider - provides revisions from the base of the target change set.
      sourceBaseProvider - provides revisions from the base of the source change set.
      resultBaseProvider - provides revisions from the base against which the merge result is expressed.
      Returns:
      the merged change set.
      Throws:
      CDOMerger.ConflictException