@Override protected IStatus run(IProgressMonitor monitor) { merge.getAndUpdate(m -> m.start()); try { applyChanges(); merge.getAndUpdate(m -> m.completed()); } catch (MergeConflictException e) { merge.getAndUpdate(m -> m.failedWithConflicts(e.getConflicts(), e.toApiError())); } catch (ApiException e) { merge.getAndUpdate(m -> m.failed(e.toApiError())); } catch (RuntimeException e) { merge.getAndUpdate(m -> m.failed(ApiError.Builder.of(e.getMessage()).build())); } finally { // Send a notification event with the final state to the global event bus repository.events().publish(String.format(Merge.ADDRESS_TEMPLATE, repository.id(), merge.get().getId()), merge.get()); } return Statuses.ok(); }
@Override protected void applyChanges() { new AsyncRequest<>(new RepositoryRequest<>(repository.id(), new SyncMergeRequest(getMerge(), commitComment, reviewId))) .execute(repository.events()) .getSync(); } }
@Override protected void applyChanges() { new AsyncRequest<>(new RepositoryRequest<>(repository.id(), new SyncRebaseRequest(getMerge(), commitComment, reviewId))) .execute(repository.events()) .getSync(); } }