# Class SynchronizationOperation

java.lang.Object
org.eclipse.core.runtime.jobs.JobChangeAdapter
org.eclipse.team.ui.TeamOperation
org.eclipse.team.ui.mapping.SynchronizationOperation

All Implemented Interfaces:
  `IJobChangeListener, IRunnableWithProgress`

public abstract class SynchronizationOperation extends TeamOperation
This operation class can be used by model providers when performing merge operations triggered from a synchronize participant page associated with a synchronization or merge context.

This class may be subclasses by clients.

Since:
  3.2
See Also:
  - `ISynchronizationContext`
  - `IMergeContext`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`SynchronizationOperation(ISynchronizePageConfiguration configuration, Object[] elements)`
Create a synchronize operation that operations on the given elements

## Method Summary

Modifier and Type
Method
Description
`protected abstract void`
`execute(IProgressMonitor monitor)`
Execute the operation.
`ISynchronizePageConfiguration`
`getConfiguration()`
Return the configuration for the page from which this operation was launched.
`protected ISynchronizationContext`
`getContext()`
Return the synchronization context associated with this action.
`Object[]`
`getElements()`
Return the model elements that are the target of this operation.
`SaveableComparison`
`getSaveable()`
Return the saveable that this operation will write its results to or `null` if the operation does not buffer its results.
`final void`
`run(IProgressMonitor monitor)`
Runs this operation.
`boolean`
`shouldRun()`
Make `shouldRun` public so the result can be used to provide handler enablement

### Methods inherited from class TeamOperation

`belongsTo, canRunAsJob, getGotoAction, getJobName, getKeepOperation, getOperationIcon, getPart, getSchedulingRule, getShell, isKeepOneProgressServiceEntry, isPostponeAutobuild, isSameFamilyAs, isUserInitiated, run`

### Methods inherited from class JobChangeAdapter

`aboutToRun, awake, done, running, scheduled, sleeping`

### Methods inherited from class Object

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

## Constructor Details

### SynchronizationOperation

protected SynchronizationOperation(ISynchronizePageConfiguration configuration, Object[] elements)
Create a synchronize operation that operations on the given elements

Parameters:
  `configuration` - the configuration for the page the operation is associated with
  `elements` - the elements to be operated on

## Method Details

### getConfiguration

public ISynchronizePageConfiguration getConfiguration()
Return the configuration for the page from which this operation was launched.

Returns:
  the configuration for the page from which this operation was launched

### getContext

protected ISynchronizationContext getContext()
Return the synchronization context associated with this action.

Returns:
  the synchronization context associated with this action

### getElements

public Object[] getElements()
Return the model elements that are the target of this operation.

Returns:
  the model elements that are the target of this operation

### shouldRun

public boolean shouldRun()
Make `shouldRun` public so the result can be used to provide handler enablement

Overrides:
  `shouldRun` in class `TeamOperation`
Returns:
  whether the operation should be run.

### getSaveable

public SaveableComparison getSaveable()
Return the saveable that this operation will write its results to or `null` if the operation does not buffer its results. By default, `null` is returned but subclasses may override.

Returns:
  the saveable that this operation will write its results to or `null`

### run

public final void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
Description copied from interface: `IRunnableWithProgress`
Runs this operation. Progress should be reported to the given progress monitor. This method is usually invoked by an `IRunnableContext`'s `run` method, which supplies the progress monitor. A request to cancel the operation should be honored and acknowledged by throwing `InterruptedException`.

Parameters:
  `monitor` - the progress monitor to use to display progress and receive requests for cancelation
Throws:
  `InvocationTargetException` - if the run method must propagate a checked exception, it should wrap it inside an `InvocationTargetException`; runtime exceptions are automatically wrapped in an `InvocationTargetException` by the calling context
  `InterruptedException` - if the operation detects a request to cancel, using `IProgressMonitor.isCanceled()`, it should exit by throwing `InterruptedException`
See Also:
  - `IRunnableContext.run(boolean, boolean, IRunnableWithProgress)`

### execute

protected abstract void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
Execute the operation. Subclasses should implement the operations behavior in the execute method. Clients should call either `TeamOperation.run()` or `run(IProgressMonitor)` to invoke the operation.

Parameters:
  `monitor` - a progress monitor
Throws:
  `InvocationTargetException` - if an error occurs
  `InterruptedException` - if operation is interrupted