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 int CONFLICT
      Indicates that a change conflict prevented the merge from successful completion (value 1)
      static int INTERNAL_ERROR
      Status code describing an internal error (value 2)
      static int OK
      Indicates the successful completion of the merge operation (value IStatus.OK)
      static int UNSUPPORTED_ENCODING
      Indicates that at least one of the encodings associated with the input was unsupported (value 3)
    • Field Detail

      • OK

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

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

        static final int INTERNAL_ERROR
        Status code describing an internal error (value 2)
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
    • Method Detail

      • 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