Interface IStorageMerger

All Known Implementing Classes:
DelegatingStorageMerger

public interface IStorageMerger
This interface defines a single operation for performing a three-way merge on three instances of IStorage. The merged result is written to an output stream.

Clients must implement this interface when contributing new mergers to the org.eclipse.team.core.storageMergers extension point.

Since:
3.2
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Indicates that a change conflict prevented the merge from successful completion (value 1)
    static final int
    Status code describing an internal error (value 2)
    static final int
    Indicates the successful completion of the merge operation (value IStatus.OK)
    static final int
    Indicates that at least one of the encodings associated with the input was unsupported (value 3)
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Return whether this merger can merge the two contributors without an ancestor.
    merge(OutputStream output, String outputEncoding, IStorage ancestor, IStorage target, IStorage other, IProgressMonitor monitor)
    Performs a merge operation on the given storage instances and writes the merge result to the output stream.
  • Field Details

    • OK

      static final int OK
      Indicates the successful completion of the merge operation (value IStatus.OK)
      See Also:
    • CONFLICT

      static final int CONFLICT
      Indicates that a change conflict prevented the merge from successful completion (value 1)
      See Also:
    • INTERNAL_ERROR

      static final int INTERNAL_ERROR
      Status code describing an internal error (value 2)
      See Also:
    • UNSUPPORTED_ENCODING

      static final int UNSUPPORTED_ENCODING
      Indicates that at least one of the encodings associated with the input was unsupported (value 3)
      See Also:
  • Method Details

    • merge

      IStatus merge(OutputStream output, String outputEncoding, IStorage ancestor, IStorage target, IStorage other, IProgressMonitor monitor) throws CoreException
      Performs a merge operation on the given storage instances and writes the merge result to the output stream. On success a status IStatus.OK is returned, on error a status IStatus.ERROR. If the merge operation cannot deal with conflicts, the code of the error status has the value IStreamMerger.CONFLICT. For text oriented mergers the encoding for the input and output is honored if they implement IEncodedStorage. It is the responsibility of callers to close the output stream.

      The provided ancestor may be null if this merger returns true from canMergeWithoutAncestor().

      Parameters:
      output - the byte stream to which the merge result is written; the merger will not close the stream
      outputEncoding - the encoding to use when writing to the output stream
      ancestor - the storage from which the common ancestor is read
      target - the storage containing the target of the merge
      other - the storage containing the target of the merge
      monitor - reports progress of the merge operation
      Returns:
      returns the completion status of the operation
      Throws:
      CoreException - if an error occurs
    • canMergeWithoutAncestor

      boolean canMergeWithoutAncestor()
      Return whether this merger can merge the two contributors without an ancestor. This is typically not possible but may be for some file types (for instances, files that contain a timestamp based list of events).
      Returns:
      whether this merger can merge the two contributors without an ancestor