Class Comment

  • Direct Known Subclasses:
    RobotComment

    public class Comment
    extends Object
    This class represents inline comments in NoteDb. This means it determines the JSON format for inline comments in the revision notes that NoteDb uses to persist inline comments.

    Changing fields in this class changes the storage format of inline comments in NoteDb and may require a corresponding data migration (adding new optional fields is generally okay).

    PatchLineComment historically represented comments in ReviewDb. There are a few notable differences:

    • PatchLineComment knows the comment status (published or draft). For comments in NoteDb the status is determined by the branch in which they are stored (published comments are stored in the change meta ref; draft comments are store in refs/draft-comments branches in All-Users). Hence Comment doesn't need to contain the status, but the status is implicitly known by where the comments are read from.
    • PatchLineComment knows the change ID. For comments in NoteDb, the change ID is determined by the branch in which they are stored (the ref name contains the change ID). Hence Comment doesn't need to contain the change ID, but the change ID is implicitly known by where the comments are read from.

    For all utility classes and middle layer functionality using Comment over PatchLineComment is preferred, as ReviewDb is gone so PatchLineComment is slated for deletion as well. This means Comment should be used everywhere and only for storing inline comment in ReviewDb a conversion to PatchLineComment is done. Converting Comments to PatchLineComments and vice verse is done by CommentsUtil#toPatchLineComments(Change.Id, PatchLineComment.Status, Iterable) and CommentsUtil#toComments(String, Iterable).