diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java | 722 |
1 files changed, 0 insertions, 722 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java deleted file mode 100644 index 447fdf4f1b..0000000000 --- a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/ChangeApiImpl.java +++ /dev/null @@ -1,722 +0,0 @@ -// Copyright (C) 2013 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.gerrit.server.api.changes; - -import static com.google.gerrit.server.api.ApiUtil.asRestApiException; - -import com.google.gerrit.common.Nullable; -import com.google.gerrit.extensions.api.changes.AbandonInput; -import com.google.gerrit.extensions.api.changes.AddReviewerInput; -import com.google.gerrit.extensions.api.changes.AddReviewerResult; -import com.google.gerrit.extensions.api.changes.AssigneeInput; -import com.google.gerrit.extensions.api.changes.ChangeApi; -import com.google.gerrit.extensions.api.changes.ChangeEditApi; -import com.google.gerrit.extensions.api.changes.Changes; -import com.google.gerrit.extensions.api.changes.FixInput; -import com.google.gerrit.extensions.api.changes.HashtagsInput; -import com.google.gerrit.extensions.api.changes.IncludedInInfo; -import com.google.gerrit.extensions.api.changes.MoveInput; -import com.google.gerrit.extensions.api.changes.RebaseInput; -import com.google.gerrit.extensions.api.changes.RestoreInput; -import com.google.gerrit.extensions.api.changes.RevertInput; -import com.google.gerrit.extensions.api.changes.ReviewerApi; -import com.google.gerrit.extensions.api.changes.ReviewerInfo; -import com.google.gerrit.extensions.api.changes.RevisionApi; -import com.google.gerrit.extensions.api.changes.SubmittedTogetherInfo; -import com.google.gerrit.extensions.api.changes.SubmittedTogetherOption; -import com.google.gerrit.extensions.client.ListChangesOption; -import com.google.gerrit.extensions.common.AccountInfo; -import com.google.gerrit.extensions.common.ChangeInfo; -import com.google.gerrit.extensions.common.CommentInfo; -import com.google.gerrit.extensions.common.CommitMessageInput; -import com.google.gerrit.extensions.common.EditInfo; -import com.google.gerrit.extensions.common.MergePatchSetInput; -import com.google.gerrit.extensions.common.PureRevertInfo; -import com.google.gerrit.extensions.common.RobotCommentInfo; -import com.google.gerrit.extensions.common.SuggestedReviewerInfo; -import com.google.gerrit.extensions.restapi.IdString; -import com.google.gerrit.extensions.restapi.Response; -import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.server.StarredChangesUtil; -import com.google.gerrit.server.StarredChangesUtil.IllegalLabelException; -import com.google.gerrit.server.change.Abandon; -import com.google.gerrit.server.change.ChangeIncludedIn; -import com.google.gerrit.server.change.ChangeJson; -import com.google.gerrit.server.change.ChangeResource; -import com.google.gerrit.server.change.Check; -import com.google.gerrit.server.change.CreateMergePatchSet; -import com.google.gerrit.server.change.DeleteAssignee; -import com.google.gerrit.server.change.DeleteChange; -import com.google.gerrit.server.change.DeletePrivate; -import com.google.gerrit.server.change.GetAssignee; -import com.google.gerrit.server.change.GetHashtags; -import com.google.gerrit.server.change.GetPastAssignees; -import com.google.gerrit.server.change.GetPureRevert; -import com.google.gerrit.server.change.GetTopic; -import com.google.gerrit.server.change.Ignore; -import com.google.gerrit.server.change.Index; -import com.google.gerrit.server.change.ListChangeComments; -import com.google.gerrit.server.change.ListChangeDrafts; -import com.google.gerrit.server.change.ListChangeRobotComments; -import com.google.gerrit.server.change.ListReviewers; -import com.google.gerrit.server.change.MarkAsReviewed; -import com.google.gerrit.server.change.MarkAsUnreviewed; -import com.google.gerrit.server.change.Move; -import com.google.gerrit.server.change.PostHashtags; -import com.google.gerrit.server.change.PostPrivate; -import com.google.gerrit.server.change.PostReviewers; -import com.google.gerrit.server.change.PutAssignee; -import com.google.gerrit.server.change.PutMessage; -import com.google.gerrit.server.change.PutTopic; -import com.google.gerrit.server.change.Rebase; -import com.google.gerrit.server.change.Restore; -import com.google.gerrit.server.change.Revert; -import com.google.gerrit.server.change.Reviewers; -import com.google.gerrit.server.change.Revisions; -import com.google.gerrit.server.change.SetPrivateOp; -import com.google.gerrit.server.change.SetReadyForReview; -import com.google.gerrit.server.change.SetWorkInProgress; -import com.google.gerrit.server.change.SubmittedTogether; -import com.google.gerrit.server.change.SuggestChangeReviewers; -import com.google.gerrit.server.change.Unignore; -import com.google.gerrit.server.change.WorkInProgressOp; -import com.google.gwtorm.server.OrmException; -import com.google.inject.Inject; -import com.google.inject.Provider; -import com.google.inject.assistedinject.Assisted; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -class ChangeApiImpl implements ChangeApi { - interface Factory { - ChangeApiImpl create(ChangeResource change); - } - - private final Changes changeApi; - private final Reviewers reviewers; - private final Revisions revisions; - private final ReviewerApiImpl.Factory reviewerApi; - private final RevisionApiImpl.Factory revisionApi; - private final SuggestChangeReviewers suggestReviewers; - private final ListReviewers listReviewers; - private final ChangeResource change; - private final Abandon abandon; - private final Revert revert; - private final Restore restore; - private final CreateMergePatchSet updateByMerge; - private final Provider<SubmittedTogether> submittedTogether; - private final Rebase.CurrentRevision rebase; - private final DeleteChange deleteChange; - private final GetTopic getTopic; - private final PutTopic putTopic; - private final ChangeIncludedIn includedIn; - private final PostReviewers postReviewers; - private final ChangeJson.Factory changeJson; - private final PostHashtags postHashtags; - private final GetHashtags getHashtags; - private final PutAssignee putAssignee; - private final GetAssignee getAssignee; - private final GetPastAssignees getPastAssignees; - private final DeleteAssignee deleteAssignee; - private final ListChangeComments listComments; - private final ListChangeRobotComments listChangeRobotComments; - private final ListChangeDrafts listDrafts; - private final ChangeEditApiImpl.Factory changeEditApi; - private final Check check; - private final Index index; - private final Move move; - private final PostPrivate postPrivate; - private final DeletePrivate deletePrivate; - private final Ignore ignore; - private final Unignore unignore; - private final MarkAsReviewed markAsReviewed; - private final MarkAsUnreviewed markAsUnreviewed; - private final SetWorkInProgress setWip; - private final SetReadyForReview setReady; - private final PutMessage putMessage; - private final GetPureRevert getPureRevert; - private final StarredChangesUtil stars; - - @Inject - ChangeApiImpl( - Changes changeApi, - Reviewers reviewers, - Revisions revisions, - ReviewerApiImpl.Factory reviewerApi, - RevisionApiImpl.Factory revisionApi, - SuggestChangeReviewers suggestReviewers, - ListReviewers listReviewers, - Abandon abandon, - Revert revert, - Restore restore, - CreateMergePatchSet updateByMerge, - Provider<SubmittedTogether> submittedTogether, - Rebase.CurrentRevision rebase, - DeleteChange deleteChange, - GetTopic getTopic, - PutTopic putTopic, - ChangeIncludedIn includedIn, - PostReviewers postReviewers, - ChangeJson.Factory changeJson, - PostHashtags postHashtags, - GetHashtags getHashtags, - PutAssignee putAssignee, - GetAssignee getAssignee, - GetPastAssignees getPastAssignees, - DeleteAssignee deleteAssignee, - ListChangeComments listComments, - ListChangeRobotComments listChangeRobotComments, - ListChangeDrafts listDrafts, - ChangeEditApiImpl.Factory changeEditApi, - Check check, - Index index, - Move move, - PostPrivate postPrivate, - DeletePrivate deletePrivate, - Ignore ignore, - Unignore unignore, - MarkAsReviewed markAsReviewed, - MarkAsUnreviewed markAsUnreviewed, - SetWorkInProgress setWip, - SetReadyForReview setReady, - PutMessage putMessage, - GetPureRevert getPureRevert, - StarredChangesUtil stars, - @Assisted ChangeResource change) { - this.changeApi = changeApi; - this.revert = revert; - this.reviewers = reviewers; - this.revisions = revisions; - this.reviewerApi = reviewerApi; - this.revisionApi = revisionApi; - this.suggestReviewers = suggestReviewers; - this.listReviewers = listReviewers; - this.abandon = abandon; - this.restore = restore; - this.updateByMerge = updateByMerge; - this.submittedTogether = submittedTogether; - this.rebase = rebase; - this.deleteChange = deleteChange; - this.getTopic = getTopic; - this.putTopic = putTopic; - this.includedIn = includedIn; - this.postReviewers = postReviewers; - this.changeJson = changeJson; - this.postHashtags = postHashtags; - this.getHashtags = getHashtags; - this.putAssignee = putAssignee; - this.getAssignee = getAssignee; - this.getPastAssignees = getPastAssignees; - this.deleteAssignee = deleteAssignee; - this.listComments = listComments; - this.listChangeRobotComments = listChangeRobotComments; - this.listDrafts = listDrafts; - this.changeEditApi = changeEditApi; - this.check = check; - this.index = index; - this.move = move; - this.postPrivate = postPrivate; - this.deletePrivate = deletePrivate; - this.ignore = ignore; - this.unignore = unignore; - this.markAsReviewed = markAsReviewed; - this.markAsUnreviewed = markAsUnreviewed; - this.setWip = setWip; - this.setReady = setReady; - this.putMessage = putMessage; - this.getPureRevert = getPureRevert; - this.stars = stars; - this.change = change; - } - - @Override - public String id() { - return Integer.toString(change.getId().get()); - } - - @Override - public RevisionApi current() throws RestApiException { - return revision("current"); - } - - @Override - public RevisionApi revision(int id) throws RestApiException { - return revision(String.valueOf(id)); - } - - @Override - public RevisionApi revision(String id) throws RestApiException { - try { - return revisionApi.create(revisions.parse(change, IdString.fromDecoded(id))); - } catch (Exception e) { - throw asRestApiException("Cannot parse revision", e); - } - } - - @Override - public ReviewerApi reviewer(String id) throws RestApiException { - try { - return reviewerApi.create(reviewers.parse(change, IdString.fromDecoded(id))); - } catch (Exception e) { - throw asRestApiException("Cannot parse reviewer", e); - } - } - - @Override - public void abandon() throws RestApiException { - abandon(new AbandonInput()); - } - - @Override - public void abandon(AbandonInput in) throws RestApiException { - try { - abandon.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot abandon change", e); - } - } - - @Override - public void restore() throws RestApiException { - restore(new RestoreInput()); - } - - @Override - public void restore(RestoreInput in) throws RestApiException { - try { - restore.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot restore change", e); - } - } - - @Override - public void move(String destination) throws RestApiException { - MoveInput in = new MoveInput(); - in.destinationBranch = destination; - move(in); - } - - @Override - public void move(MoveInput in) throws RestApiException { - try { - move.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot move change", e); - } - } - - @Override - public void setPrivate(boolean value, @Nullable String message) throws RestApiException { - try { - SetPrivateOp.Input input = new SetPrivateOp.Input(message); - if (value) { - postPrivate.apply(change, input); - } else { - deletePrivate.apply(change, input); - } - } catch (Exception e) { - throw asRestApiException("Cannot change private status", e); - } - } - - @Override - public void setWorkInProgress(@Nullable String message) throws RestApiException { - try { - setWip.apply(change, new WorkInProgressOp.Input(message)); - } catch (Exception e) { - throw asRestApiException("Cannot set work in progress state", e); - } - } - - @Override - public void setReadyForReview(@Nullable String message) throws RestApiException { - try { - setReady.apply(change, new WorkInProgressOp.Input(message)); - } catch (Exception e) { - throw asRestApiException("Cannot set ready for review state", e); - } - } - - @Override - public ChangeApi revert() throws RestApiException { - return revert(new RevertInput()); - } - - @Override - public ChangeApi revert(RevertInput in) throws RestApiException { - try { - return changeApi.id(revert.apply(change, in)._number); - } catch (Exception e) { - throw asRestApiException("Cannot revert change", e); - } - } - - @Override - public ChangeInfo createMergePatchSet(MergePatchSetInput in) throws RestApiException { - try { - return updateByMerge.apply(change, in).value(); - } catch (Exception e) { - throw asRestApiException("Cannot update change by merge", e); - } - } - - @Override - public List<ChangeInfo> submittedTogether() throws RestApiException { - SubmittedTogetherInfo info = - submittedTogether( - EnumSet.noneOf(ListChangesOption.class), EnumSet.noneOf(SubmittedTogetherOption.class)); - return info.changes; - } - - @Override - public SubmittedTogetherInfo submittedTogether(EnumSet<SubmittedTogetherOption> options) - throws RestApiException { - return submittedTogether(EnumSet.noneOf(ListChangesOption.class), options); - } - - @Override - public SubmittedTogetherInfo submittedTogether( - EnumSet<ListChangesOption> listOptions, EnumSet<SubmittedTogetherOption> submitOptions) - throws RestApiException { - try { - return submittedTogether - .get() - .addListChangesOption(listOptions) - .addSubmittedTogetherOption(submitOptions) - .applyInfo(change); - } catch (Exception e) { - throw asRestApiException("Cannot query submittedTogether", e); - } - } - - @Deprecated - @Override - public void publish() throws RestApiException { - throw new UnsupportedOperationException("draft workflow is discontinued"); - } - - @Override - public void rebase() throws RestApiException { - rebase(new RebaseInput()); - } - - @Override - public void rebase(RebaseInput in) throws RestApiException { - try { - rebase.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot rebase change", e); - } - } - - @Override - public void delete() throws RestApiException { - try { - deleteChange.apply(change, null); - } catch (Exception e) { - throw asRestApiException("Cannot delete change", e); - } - } - - @Override - public String topic() throws RestApiException { - return getTopic.apply(change); - } - - @Override - public void topic(String topic) throws RestApiException { - PutTopic.Input in = new PutTopic.Input(); - in.topic = topic; - try { - putTopic.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot set topic", e); - } - } - - @Override - public IncludedInInfo includedIn() throws RestApiException { - try { - return includedIn.apply(change); - } catch (Exception e) { - throw asRestApiException("Could not extract IncludedIn data", e); - } - } - - @Override - public AddReviewerResult addReviewer(String reviewer) throws RestApiException { - AddReviewerInput in = new AddReviewerInput(); - in.reviewer = reviewer; - return addReviewer(in); - } - - @Override - public AddReviewerResult addReviewer(AddReviewerInput in) throws RestApiException { - try { - return postReviewers.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot add change reviewer", e); - } - } - - @Override - public SuggestedReviewersRequest suggestReviewers() throws RestApiException { - return new SuggestedReviewersRequest() { - @Override - public List<SuggestedReviewerInfo> get() throws RestApiException { - return ChangeApiImpl.this.suggestReviewers(this); - } - }; - } - - @Override - public SuggestedReviewersRequest suggestReviewers(String query) throws RestApiException { - return suggestReviewers().withQuery(query); - } - - private List<SuggestedReviewerInfo> suggestReviewers(SuggestedReviewersRequest r) - throws RestApiException { - try { - suggestReviewers.setQuery(r.getQuery()); - suggestReviewers.setLimit(r.getLimit()); - return suggestReviewers.apply(change); - } catch (Exception e) { - throw asRestApiException("Cannot retrieve suggested reviewers", e); - } - } - - @Override - public List<ReviewerInfo> reviewers() throws RestApiException { - try { - return listReviewers.apply(change); - } catch (Exception e) { - throw asRestApiException("Cannot retrieve reviewers", e); - } - } - - @Override - public ChangeInfo get(EnumSet<ListChangesOption> s) throws RestApiException { - try { - return changeJson.create(s).format(change); - } catch (Exception e) { - throw asRestApiException("Cannot retrieve change", e); - } - } - - @Override - public ChangeInfo get() throws RestApiException { - return get(EnumSet.complementOf(EnumSet.of(ListChangesOption.CHECK))); - } - - @Override - public EditInfo getEdit() throws RestApiException { - return edit().get().orElse(null); - } - - @Override - public ChangeEditApi edit() throws RestApiException { - return changeEditApi.create(change); - } - - @Override - public void setMessage(String msg) throws RestApiException { - CommitMessageInput in = new CommitMessageInput(); - in.message = msg; - setMessage(in); - } - - @Override - public void setMessage(CommitMessageInput in) throws RestApiException { - try { - putMessage.apply(change, in); - } catch (Exception e) { - throw asRestApiException("Cannot edit commit message", e); - } - } - - @Override - public ChangeInfo info() throws RestApiException { - return get(EnumSet.noneOf(ListChangesOption.class)); - } - - @Override - public void setHashtags(HashtagsInput input) throws RestApiException { - try { - postHashtags.apply(change, input); - } catch (Exception e) { - throw asRestApiException("Cannot post hashtags", e); - } - } - - @Override - public Set<String> getHashtags() throws RestApiException { - try { - return getHashtags.apply(change).value(); - } catch (Exception e) { - throw asRestApiException("Cannot get hashtags", e); - } - } - - @Override - public AccountInfo setAssignee(AssigneeInput input) throws RestApiException { - try { - return putAssignee.apply(change, input); - } catch (Exception e) { - throw asRestApiException("Cannot set assignee", e); - } - } - - @Override - public AccountInfo getAssignee() throws RestApiException { - try { - Response<AccountInfo> r = getAssignee.apply(change); - return r.isNone() ? null : r.value(); - } catch (Exception e) { - throw asRestApiException("Cannot get assignee", e); - } - } - - @Override - public List<AccountInfo> getPastAssignees() throws RestApiException { - try { - return getPastAssignees.apply(change).value(); - } catch (Exception e) { - throw asRestApiException("Cannot get past assignees", e); - } - } - - @Override - public AccountInfo deleteAssignee() throws RestApiException { - try { - Response<AccountInfo> r = deleteAssignee.apply(change, null); - return r.isNone() ? null : r.value(); - } catch (Exception e) { - throw asRestApiException("Cannot delete assignee", e); - } - } - - @Override - public Map<String, List<CommentInfo>> comments() throws RestApiException { - try { - return listComments.apply(change); - } catch (Exception e) { - throw asRestApiException("Cannot get comments", e); - } - } - - @Override - public Map<String, List<RobotCommentInfo>> robotComments() throws RestApiException { - try { - return listChangeRobotComments.apply(change); - } catch (Exception e) { - throw asRestApiException("Cannot get robot comments", e); - } - } - - @Override - public Map<String, List<CommentInfo>> drafts() throws RestApiException { - try { - return listDrafts.apply(change); - } catch (Exception e) { - throw asRestApiException("Cannot get drafts", e); - } - } - - @Override - public ChangeInfo check() throws RestApiException { - try { - return check.apply(change).value(); - } catch (Exception e) { - throw asRestApiException("Cannot check change", e); - } - } - - @Override - public ChangeInfo check(FixInput fix) throws RestApiException { - try { - // TODO(dborowitz): Convert to RetryingRestModifyView. Needs to plumb BatchUpdate.Factory into - // ConsistencyChecker. - return check.apply(change, fix).value(); - } catch (Exception e) { - throw asRestApiException("Cannot check change", e); - } - } - - @Override - public void index() throws RestApiException { - try { - index.apply(change, new Index.Input()); - } catch (Exception e) { - throw asRestApiException("Cannot index change", e); - } - } - - @Override - public void ignore(boolean ignore) throws RestApiException { - // TODO(dborowitz): Convert to RetryingRestModifyView. Needs to plumb BatchUpdate.Factory into - // StarredChangesUtil. - try { - if (ignore) { - this.ignore.apply(change, new Ignore.Input()); - } else { - unignore.apply(change, new Unignore.Input()); - } - } catch (OrmException | IllegalLabelException e) { - throw asRestApiException("Cannot ignore change", e); - } - } - - @Override - public boolean ignored() throws RestApiException { - try { - return stars.isIgnored(change); - } catch (OrmException e) { - throw asRestApiException("Cannot check if ignored", e); - } - } - - @Override - public void markAsReviewed(boolean reviewed) throws RestApiException { - // TODO(dborowitz): Convert to RetryingRestModifyView. Needs to plumb BatchUpdate.Factory into - // StarredChangesUtil. - try { - if (reviewed) { - markAsReviewed.apply(change, new MarkAsReviewed.Input()); - } else { - markAsUnreviewed.apply(change, new MarkAsUnreviewed.Input()); - } - } catch (OrmException | IllegalLabelException e) { - throw asRestApiException( - "Cannot mark change as " + (reviewed ? "reviewed" : "unreviewed"), e); - } - } - - @Override - public PureRevertInfo pureRevert() throws RestApiException { - return pureRevert(null); - } - - @Override - public PureRevertInfo pureRevert(@Nullable String claimedOriginal) throws RestApiException { - try { - return getPureRevert.setClaimedOriginal(claimedOriginal).apply(change); - } catch (Exception e) { - throw asRestApiException("Cannot compute pure revert", e); - } - } -} |