Package org.eclipse.emf.compare.merge

## Class AdditiveResourceAttachmentChangeMerger

- java.lang.Object
- - org.eclipse.emf.compare.merge.AbstractMerger
  - - org.eclipse.emf.compare.merge.ResourceAttachmentChangeMerger
    - - org.eclipse.emf.compare.merge.AdditiveResourceAttachmentChangeMerger

All Implemented Interfaces:
  `IMergeCriterionAware`, `IMergeOptionAware`, `IMerger`, `IMerger2`

    public class AdditiveResourceAttachmentChangeMerger
    extends ResourceAttachmentChangeMerger

This specific implementation of `AbstractMerger` will be used to merge resource attachment changes in an additive merge context.

Since:
  3.4

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.eclipse.emf.compare.merge.IMerger

`IMerger.Registry, IMerger.Registry2, IMerger.RegistryImpl`

### Field Summary

### Fields inherited from class org.eclipse.emf.compare.merge.AbstractMerger

`mergeOptions, SUB_DIFF_AWARE_OPTION`

### Constructor Summary

Constructors
`AdditiveResourceAttachmentChangeMerger()` The constructor specify the context where this merger can be used.

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `apply​(IMergeCriterion criterion)` Default implementation of apply for mergers that extends this class.
`void` `copyRightToLeft​(Diff target, Monitor monitor)` Executes the copy from right to left.
`Set<Diff>` `getDirectMergeDependencies​(Diff diff, boolean mergeRightToLeft)` Retrieves the set of directly required diffs needed in order to merge the current one.
`Set<Diff>` `getDirectResultingMerges​(Diff diff, boolean mergeRightToLeft)` Returns all differences that will be merged because of our merging the given `target` difference.

### Methods inherited from class org.eclipse.emf.compare.merge.ResourceAttachmentChangeMerger

`accept, addInTarget, computeTargetURI, deleteFormerResourceIfNecessary, deleteResource, findInsertionIndex, findOrCreateTargetResource, getMatchResource, isMergerFor, move, mustDelete, reject, removeFromTarget`

### Methods inherited from class org.eclipse.emf.compare.merge.AbstractMerger

`addAt, copyDiff, copyLeftToRight, createCopy, getDirectResultingRejections, getImpliedMerges, getLogicallyResultingMerges, getMergeOptions, getMergerDelegate, getMergerDelegate, getRanking, getRegistry, isAccepting, isAdd, isInTerminalState, isSet, isUnset, mergeDiff, setMergeOptions, setRanking, setRegistry`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AdditiveResourceAttachmentChangeMerger

    public AdditiveResourceAttachmentChangeMerger()

The constructor specify the context where this merger can be used.

### Method Detail

#### apply

    public boolean apply​(IMergeCriterion criterion)

Description copied from class: `AbstractMerger`
Default implementation of apply for mergers that extends this class. Will accept `null` or AdditiveMergeCriterion.INSTANCE.

Specified by:
  `apply` in interface `IMergeCriterionAware`
Overrides:
  `apply` in class `ResourceAttachmentChangeMerger`
Parameters:
  `criterion` - The merge criterion
Returns:
  `true` if the given criterion is null or is AdditiveMergeCriterion.INSTANCE.

#### copyRightToLeft

    public void copyRightToLeft​(Diff target,
                                Monitor monitor)

Description copied from class: `AbstractMerger`
Executes the copy from right to left.

Specified by:
  `copyRightToLeft` in interface `IMerger`
Overrides:
  `copyRightToLeft` in class `AbstractMerger`
Parameters:
  `target` - The difference to handle.
  `monitor` - Monitor.
See Also:
  `IMerger.copyRightToLeft(org.eclipse.emf.compare.Diff, org.eclipse.emf.common.util.Monitor)`

#### getDirectMergeDependencies

    public Set<Diff> getDirectMergeDependencies​(Diff diff,
                                                boolean mergeRightToLeft)

Description copied from class: `AbstractMerger`
Retrieves the set of directly required diffs needed in order to merge the current one. This may includes the diff's `requirements` or any other diff that we need to merge before the given one.

Specified by:
  `getDirectMergeDependencies` in interface `IMerger2`
Overrides:
  `getDirectMergeDependencies` in class `AbstractMerger`
Parameters:
  `diff` - The diff which direct requirements we need.
  `mergeRightToLeft` - The direction in which we're considering a merge.
Returns:
  The set of directly required diffs in order to merge the current one.

#### getDirectResultingMerges

    public Set<Diff> getDirectResultingMerges​(Diff diff,
                                              boolean mergeRightToLeft)

Description copied from class: `AbstractMerger`
Returns all differences that will be merged because of our merging the given `target` difference. This may include the diff's `implications`, the diff's `equivalences`, the diff's `refinements` or any other diff that we need to merge together with the given diff.

Specified by:
  `getDirectResultingMerges` in interface `IMerger2`
Overrides:
  `getDirectResultingMerges` in class `AbstractMerger`
Parameters:
  `diff` - The difference we're considering merging.
  `mergeRightToLeft` - The direction in which we're considering a merge.
Returns:
  The Set of all differences that will be merged because we've merged `target`.