void replay()

in src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java [78:108]


  void replay(GerritApi api)
      throws NoSuchAccountException, NoSuchChangeException, OrmException, IOException,
          RestApiException, ConfigInvalidException {
    for (ChangeMessageInfo msg : changeInfo.messages) {
      ChangeMessage.Key msgKey = new ChangeMessage.Key(change.getId(), msg.id);
      if (resume && db.changeMessages().get(msgKey) != null) {
        // already replayed
        continue;
      }

      Timestamp ts = msg.date;
      PatchSet.Id psId =
          msg._revisionNumber != null ? new PatchSet.Id(change.getId(), msg._revisionNumber) : null;
      if (msg.author != null) {
        Account.Id userId = accountUtil.resolveUser(api, msg.author);
        ChangeNotes notes = changeNotesFactory.createChecked(db, change);
        CurrentUser user = genericUserFactory.create(userId);
        ChangeUpdate update = updateFactory.create(notes, user, ts);
        ChangeMessage cmsg = new ChangeMessage(msgKey, userId, ts, psId);
        cmsg.setMessage(msg.message);
        cmUtil.addChangeMessage(db, update, cmsg);
        update.commit();
      } else {
        // Message create by the GerritPersonIdent user
        ChangeMessage cmsg =
            new ChangeMessage(new ChangeMessage.Key(change.getId(), msg.id), null, ts, psId);
        cmsg.setMessage(msg.message);
        db.changeMessages().insert(Collections.singleton(cmsg));
      }
    }
  }