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);
}
}