public ChangeInfoDto getMRByNumber()

in ddm-rrm-gerrit-integration/src/main/java/com/epam/digital/data/platform/management/gerritintegration/service/GerritServiceImpl.java [143:172]


  public ChangeInfoDto getMRByNumber(String number) {
    String query = String.format("project:%s+%s", gerritPropertiesConfig.getRepository(), number);
    Changes changes = gerritApi.changes();

    try {
      var changeInfos = changes.query(query).get();
      if (changeInfos.isEmpty()) {
        throw new GerritChangeNotFoundException("Could not get change info for " + number + " MR");
      }
      ChangeApi changeApi = changes.id(changeInfos.get(0).changeId);
      ChangeInfo changeInfo = changeApi.get();
      ChangeInfoDto changeInfoDto = gerritMapper.toChangeInfoDto(changeInfo);
      changeInfoDto.setMergeable(changeApi.current().mergeable().mergeable);
      String currentRevision = changeInfo.currentRevision;
      RevisionInfo revisionInfo = changeInfo.revisions.get(currentRevision);
      changeInfoDto.setRefs(revisionInfo.ref);
      return changeInfoDto;
    } catch (HttpStatusException ex) {
      if (ex.getStatusCode() == HttpStatus.NOT_FOUND.value()) {
        throw new GerritChangeNotFoundException("Could not found candidate with number " + number,
            ex);
      } else {
        throw new GerritCommunicationException(
            "Something went wrong wile getting candidate with number " + number, ex);
      }
    } catch (RestApiException ex) {
      throw new GerritCommunicationException(
          "Something went wrong wile getting candidate with number " + number, ex);
    }
  }