Class AbstractDiffContentCallback

java.lang.Object
com.atlassian.bitbucket.content.AbstractDiffContentCallback
All Implemented Interfaces:
DiffContentCallback

public abstract class AbstractDiffContentCallback extends Object implements DiffContentCallback
Convenience implementation of DiffContentCallback that provides no-op implementations for all methods.
  • Constructor Details

    • AbstractDiffContentCallback

      public AbstractDiffContentCallback()
  • Method Details

    • offerThreads

      public void offerThreads(@Nonnull Stream<CommentThread> threads) throws IOException
      Description copied from interface: DiffContentCallback
      Offers threads for any comments which should be included in the diff to the callback. Threads with both File and line anchors may both be included in the provided stream.

      Note: If this method is going to be invoked, it will always be invoked before the first invocation of DiffContentCallback.onDiffStart(Path, Path). This method will be called at most once. If multiple diffs are going to be output to the callback, the paths of the anchors may reference any of the files whose diffs will follow. Reconciling anchors to diffs is left to the implementation.

      Specified by:
      offerThreads in interface DiffContentCallback
      Parameters:
      threads - a stream of zero or more threads describing comments within the diff or diffs that will be streamed to the callback. It can only be consumed once
      Throws:
      IOException - may be thrown by implementations which perform I/O.
      Since:
      5.0
    • onBinary

      public void onBinary(@Nullable Path src, @Nullable Path dst) throws IOException
      Description copied from interface: DiffContentCallback
      Called to indicate a binary file differs. The exact differences cannot be effectively conveyed, however, so no hunks/segments will be provided for binary files.
      Specified by:
      onBinary in interface DiffContentCallback
      Parameters:
      src - the source binary file
      dst - the destination binary file
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onDiffEnd

      public void onDiffEnd(boolean truncated) throws IOException
      Description copied from interface: DiffContentCallback
      Called upon reaching the end of the current overall diff, indicating no more changes exist for the current source/destination pair.
      Specified by:
      onDiffEnd in interface DiffContentCallback
      Parameters:
      truncated - true if any segment or hunk in the diff had to be truncated; otherwise, false
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onDiffStart

      public void onDiffStart(@Nullable Path src, @Nullable Path dst) throws IOException
      Description copied from interface: DiffContentCallback
      Called to mark the start of an overall diff. The source and destination paths being compared, relative to their containing repository, are provided.
      • For added files, the src path will be null
      • For deleted files, the dst path will be null
      • For all other changes, both paths will be provided
      Specified by:
      onDiffStart in interface DiffContentCallback
      Parameters:
      src - the source file being compared
      dst - the destination file being compared
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onEnd

      public void onEnd(@Nonnull DiffSummary summary) throws IOException
      Description copied from interface: DiffContentCallback
      Called after the final DiffContentCallback.onDiffEnd(boolean), after all diffs have been streamed.
      Specified by:
      onEnd in interface DiffContentCallback
      Parameters:
      summary - ignored
      Throws:
      IOException - may be thrown by derived classes
    • onHunkEnd

      public void onHunkEnd(boolean truncated) throws IOException
      Description copied from interface: DiffContentCallback
      Called upon reaching the end of a hunk of segments within the current overall diff.
      Specified by:
      onHunkEnd in interface DiffContentCallback
      Parameters:
      truncated - true if any segment in the hunk had to be truncated; otherwise, false
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onHunkStart

      public void onHunkStart(int srcLine, int srcSpan, int dstLine, int dstSpan, @Nullable String context) throws IOException
      Description copied from interface: DiffContentCallback
      Called to mark the start of a new hunk within the current overall diff, containing one or more contiguous segments of lines anchored at the provided line numbers in the source and destination files.
      Specified by:
      onHunkStart in interface DiffContentCallback
      Parameters:
      srcLine - the line in the source file at which the hunk starts
      srcSpan - the number of lines spanned by this hunk in the source file
      dstLine - the line in the destination file at which the hunk starts
      dstSpan - the number of lines spanned by this hunk in the destination file
      context - an optional context, such as a method or class name, for the hunk's lines
      Throws:
      IOException - may be thrown by derived classes
      Since:
      5.5
    • onSegmentEnd

      public void onSegmentEnd(boolean truncated) throws IOException
      Description copied from interface: DiffContentCallback
      Called upon reaching the end of a segment within the current hunk, where a segment may end either because lines with a different type were encountered or because there are no more contiguous lines in the hunk.

      Note: Internal restrictions may prevent streaming full segments if they are overly large. For example, if a new file containing tens of thousands of lines is added (or an existing file of such size is deleted), the resulting segment may be truncated.

      Specified by:
      onSegmentEnd in interface DiffContentCallback
      Parameters:
      truncated - true if the overall segment exceeded the maximum allowed lines, indicating one or more lines were omitted from the segment; otherwise false to indicate all lines were sent
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onSegmentLine

      public void onSegmentLine(@Nonnull String line, @Nullable ConflictMarker marker, boolean truncated) throws IOException
      Description copied from interface: DiffContentCallback
      Called to process a line within the current segment.

      Pull request diffs may contain conflicts, if the pull request cannot be merged cleanly. The marker conveys this information.

      Note: Internal restrictions may prevent receiving the full line if it contains too many characters. When this happens truncated will be set to true to indicate the line is not complete.

      Specified by:
      onSegmentLine in interface DiffContentCallback
      Parameters:
      line - a single line of content
      marker - indicates whether the line is conflicted and, if it is, which side of the conflict it's on
      truncated - true if the line exceeded the maximum allowed length and was truncated; otherwise, false to indicate the line is complete
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onSegmentStart

      public void onSegmentStart(@Nonnull DiffSegmentType type) throws IOException
      Description copied from interface: DiffContentCallback
      Called to mark the start of a new segment within the current hunk, containing one or more contiguous lines which all share the same type.
      Specified by:
      onSegmentStart in interface DiffContentCallback
      Parameters:
      type - the shared type for all lines in the new segment
      Throws:
      IOException - may be thrown by implementations which perform I/O.
    • onStart

      public void onStart(@Nonnull DiffContext context) throws IOException
      Description copied from interface: DiffContentCallback
      Specified by:
      onStart in interface DiffContentCallback
      Parameters:
      context - ignored
      Throws:
      IOException - may be thrown by derived classes