diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraftComment.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraftComment.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraftComment.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraftComment.java index 5032e573eb..898f634cf6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraftComment.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraftComment.java @@ -24,7 +24,6 @@ import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; import com.google.gerrit.extensions.restapi.Url; import com.google.gerrit.reviewdb.client.Comment; @@ -34,9 +33,12 @@ import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.CommentsUtil; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.patch.PatchListCache; +import com.google.gerrit.server.patch.PatchListNotAvailableException; import com.google.gerrit.server.update.BatchUpdate; import com.google.gerrit.server.update.BatchUpdateOp; import com.google.gerrit.server.update.ChangeContext; +import com.google.gerrit.server.update.RetryHelper; +import com.google.gerrit.server.update.RetryingRestModifyView; import com.google.gerrit.server.update.UpdateException; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -45,9 +47,9 @@ import com.google.inject.Singleton; import java.util.Collections; @Singleton -public class CreateDraftComment implements RestModifyView<RevisionResource, DraftInput> { +public class CreateDraftComment + extends RetryingRestModifyView<RevisionResource, DraftInput, Response<CommentInfo>> { private final Provider<ReviewDb> db; - private final BatchUpdate.Factory updateFactory; private final Provider<CommentJson> commentJson; private final CommentsUtil commentsUtil; private final PatchSetUtil psUtil; @@ -56,13 +58,13 @@ public class CreateDraftComment implements RestModifyView<RevisionResource, Draf @Inject CreateDraftComment( Provider<ReviewDb> db, - BatchUpdate.Factory updateFactory, + RetryHelper retryHelper, Provider<CommentJson> commentJson, CommentsUtil commentsUtil, PatchSetUtil psUtil, PatchListCache patchListCache) { + super(retryHelper); this.db = db; - this.updateFactory = updateFactory; this.commentJson = commentJson; this.commentsUtil = commentsUtil; this.psUtil = psUtil; @@ -70,7 +72,8 @@ public class CreateDraftComment implements RestModifyView<RevisionResource, Draf } @Override - public Response<CommentInfo> apply(RevisionResource rsrc, DraftInput in) + protected Response<CommentInfo> applyImpl( + BatchUpdate.Factory updateFactory, RevisionResource rsrc, DraftInput in) throws RestApiException, UpdateException, OrmException { if (Strings.isNullOrEmpty(in.path)) { throw new BadRequestException("path must be non-empty"); @@ -105,7 +108,8 @@ public class CreateDraftComment implements RestModifyView<RevisionResource, Draf @Override public boolean updateChange(ChangeContext ctx) - throws ResourceNotFoundException, OrmException, UnprocessableEntityException { + throws ResourceNotFoundException, OrmException, UnprocessableEntityException, + PatchListNotAvailableException { PatchSet ps = psUtil.get(ctx.getDb(), ctx.getNotes(), psId); if (ps == null) { throw new ResourceNotFoundException("patch set not found: " + psId); @@ -122,7 +126,7 @@ public class CreateDraftComment implements RestModifyView<RevisionResource, Draf commentsUtil.putComments( ctx.getDb(), ctx.getUpdate(psId), Status.DRAFT, Collections.singleton(comment)); - ctx.bumpLastUpdatedOn(false); + ctx.dontBumpLastUpdatedOn(); return true; } } |