Package org.eclipse.emf.cdo.transaction

# 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

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.transaction.CDOMerger

`CDOMerger.ConflictException`

## Method Summary

Modifier and Type
Method
Description
`CDOChangeSetData`
`merge(CDOChangeSet target, CDOChangeSet source, CDORevisionProvider targetBaseProvider, CDORevisionProvider sourceBaseProvider, CDORevisionProvider resultBaseProvider)`
Merges the given target and source change sets using their respective base revisions.

### Methods inherited from interface org.eclipse.emf.cdo.transaction.CDOMerger

`merge`

## 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`