# Class AbstractResourceMappingMerger

java.lang.Object
org.eclipse.team.core.mapping.ResourceMappingMerger
org.eclipse.ltk.ui.refactoring.model.AbstractResourceMappingMerger

All Implemented Interfaces:
  `IResourceMappingMerger`

public abstract class AbstractResourceMappingMerger extends ResourceMappingMerger
Partial implementation of a refactoring-aware resource mapping merger.

This class provides support to determine pending refactorings during model merging and model update, and displays a refactoring wizard to apply the refactorings to the local workspace.

Note: this class is designed to be extended by clients. Programming language implementers which need a refactoring-aware resource mapping merger to associated with their model provider may extend this class to implement language-specific project dependency rules.

Since:
  3.2
See Also:
  - `IResourceMappingMerger`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractResourceMappingMerger(ModelProvider provider)`
Creates a new abstract refactoring model merger.

## Method Summary

Modifier and Type
Method
Description
`protected IStatus`
`aboutToPerformMerge(IMergeContext context, IProgressMonitor monitor)`
Hook method which is called before the actual merge process happens.
`protected abstract IProject[]`
`getDependencies(IProject[] projects)`
Returns the dependent projects of the projects associated with the incoming refactorings.
`protected final ModelProvider`
`getModelProvider()`
Return the model provider associated with this merger.
`IStatus`
`merge(IMergeContext context, IProgressMonitor monitor)`
A default implementation of merge that attempts to merge all the mappings in the context.
`protected IStatus`
`mergePerformed(IMergeContext context, IProgressMonitor monitor)`
Hook method which is called after the actual merge process happened.

### Methods inherited from class ResourceMappingMerger

`getMergeRule, validateMerge`

### Methods inherited from class Object

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

## Constructor Details

### AbstractResourceMappingMerger

protected AbstractResourceMappingMerger(ModelProvider provider)
Creates a new abstract refactoring model merger.

Parameters:
  `provider` - the model provider

## Method Details

### aboutToPerformMerge

protected IStatus aboutToPerformMerge(IMergeContext context, IProgressMonitor monitor)
Hook method which is called before the actual merge process happens.

Subclasses may extend this method to perform any special processing. The default implementation checks whether there are any pending refactorings in the merge context and displays a refactoring wizard to let the user perform the pending refactorings before merge.

Returning a status of severity `IStatus.ERROR` will terminate the merge process.

Parameters:
  `context` - the merge context
  `monitor` - the progress monitor to use
Returns:
  a status describing the outcome of the operation

### getDependencies

protected abstract IProject[] getDependencies(IProject[] projects)
Returns the dependent projects of the projects associated with the incoming refactorings.

Subclasses must implement this method to return the dependent projects according to the semantics of the associated programming language. The result of this method is used to decide whether the resource mapping merger should execute the incoming refactorings in order to fix up references in dependent projects.

Parameters:
  `projects` - the projects associated with the incoming refactorings in the synchronization scope.
Returns:
  the dependent projects, or an empty array

### getModelProvider

protected final ModelProvider getModelProvider()
Description copied from class: `ResourceMappingMerger`
Return the model provider associated with this merger.

Specified by:
  `getModelProvider` in class `ResourceMappingMerger`
Returns:
  Return the model provider associated with this merger.

### merge

public IStatus merge(IMergeContext context, IProgressMonitor monitor) throws CoreException
Description copied from class: `ResourceMappingMerger`
A default implementation of merge that attempts to merge all the mappings in the context.

Specified by:
  `merge` in interface `IResourceMappingMerger`
Overrides:
  `merge` in class `ResourceMappingMerger`
Parameters:
  `context` - the context
  `monitor` - a progress monitor
Returns:
  a status indicating whether the merge was successful
Throws:
  `CoreException` - if an error occurred
See Also:
  - `IResourceMappingMerger.merge(org.eclipse.team.core.mapping.IMergeContext, org.eclipse.core.runtime.IProgressMonitor)`

### mergePerformed

protected IStatus mergePerformed(IMergeContext context, IProgressMonitor monitor)
Hook method which is called after the actual merge process happened. This method is only called if `merge(IMergeContext, IProgressMonitor)` returns a status with severity less than `IStatus.ERROR` and a status code unequal to `IMergeStatus.CONFLICTS` or `IMergeStatus.INTERNAL_ERROR`.

Subclasses may extend this method to perform any special processing. The default implementation does nothing.

Parameters:
  `context` - the merge context
  `monitor` - the progress monitor to use
Returns:
  a status describing the outcome of the operation