From df134a834a34b457fd35f3f843c7989f9f570846 Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Mon, 11 Nov 2013 19:18:54 +0100 Subject: [PATCH] Cleanup implementation of REST views - specify return type if possible - remove unnecessary throw declarations - convert some of the thrown exceptions to RestExceptions - do not throw Exception but specific exceptions - sort throw declarations (first RestExceptions, then other exceptions) Having explicit return types and exceptions makes it easier to programatically invoke the REST views, e.g. if a plugin wants to add a REST view that wraps a Gerrit core REST view. Change-Id: I5c59553b6cfad457f7ec037cceb08936247bf8e8 Signed-off-by: Edwin Kempin --- .../gerrit/server/account/AddSshKey.java | 5 +- .../gerrit/server/account/CreateAccount.java | 2 +- .../gerrit/server/account/CreateEmail.java | 4 +- .../gerrit/server/account/DeleteActive.java | 2 +- .../gerrit/server/account/DeleteEmail.java | 2 +- .../gerrit/server/account/DeleteSshKey.java | 2 +- .../server/account/GetCapabilities.java | 6 +- .../server/account/GetHttpPassword.java | 3 +- .../gerrit/server/account/PutActive.java | 2 +- .../gerrit/server/account/PutEmail.java | 3 +- .../gerrit/server/account/StarredChanges.java | 2 +- .../server/api/changes/ChangeApiImpl.java | 3 - .../google/gerrit/server/change/Abandon.java | 7 +- .../gerrit/server/change/CherryPick.java | 13 +- .../gerrit/server/change/CreateDraft.java | 4 +- .../gerrit/server/change/DeleteDraft.java | 3 +- .../server/change/DeleteDraftChange.java | 2 +- .../server/change/DeleteDraftPatchSet.java | 6 +- .../gerrit/server/change/DeleteReviewer.java | 2 +- .../gerrit/server/change/EditMessage.java | 4 +- .../google/gerrit/server/change/Files.java | 27 ++-- .../gerrit/server/change/GetChange.java | 7 +- .../gerrit/server/change/GetComment.java | 2 +- .../gerrit/server/change/GetCommit.java | 16 ++- .../gerrit/server/change/GetDetail.java | 4 +- .../google/gerrit/server/change/GetDiff.java | 132 ++++++++++-------- .../google/gerrit/server/change/GetDraft.java | 6 +- .../gerrit/server/change/GetRelated.java | 2 +- .../gerrit/server/change/GetReview.java | 4 +- .../gerrit/server/change/GetReviewer.java | 5 +- .../google/gerrit/server/change/GetTopic.java | 3 +- .../gerrit/server/change/IncludedIn.java | 4 +- .../google/gerrit/server/change/Index.java | 2 +- .../gerrit/server/change/ListDrafts.java | 7 +- .../gerrit/server/change/ListReviewers.java | 6 +- .../gerrit/server/change/Mergeable.java | 6 +- .../gerrit/server/change/PostReview.java | 6 +- .../gerrit/server/change/PostReviewers.java | 5 +- .../google/gerrit/server/change/Publish.java | 12 +- .../google/gerrit/server/change/PutDraft.java | 11 +- .../google/gerrit/server/change/PutTopic.java | 12 +- .../google/gerrit/server/change/Restore.java | 6 +- .../google/gerrit/server/change/Revert.java | 7 +- .../google/gerrit/server/change/Reviewed.java | 4 +- .../google/gerrit/server/change/Submit.java | 3 +- .../gerrit/server/change/TestSubmitRule.java | 4 +- .../gerrit/server/change/TestSubmitType.java | 5 +- .../server/config/ListCapabilities.java | 7 +- .../gerrit/server/config/ListTopMenus.java | 2 +- .../server/group/AddIncludedGroups.java | 9 +- .../gerrit/server/group/AddMembers.java | 4 +- .../gerrit/server/group/CreateGroup.java | 5 +- .../server/group/DeleteIncludedGroups.java | 9 +- .../gerrit/server/group/DeleteMembers.java | 7 +- .../gerrit/server/group/ListGroups.java | 6 +- .../gerrit/server/group/PutDescription.java | 9 +- .../google/gerrit/server/group/PutGroup.java | 3 +- .../gerrit/server/plugins/DisablePlugin.java | 5 +- .../gerrit/server/plugins/EnablePlugin.java | 5 +- .../gerrit/server/plugins/GetStatus.java | 5 +- .../gerrit/server/plugins/InstallPlugin.java | 5 +- .../gerrit/server/plugins/ListPlugins.java | 7 +- .../gerrit/server/plugins/ReloadPlugin.java | 5 +- .../gerrit/server/project/CreateProject.java | 3 +- .../gerrit/server/project/DeleteBranch.java | 2 +- .../server/project/DeleteDashboard.java | 9 +- .../gerrit/server/project/GetDashboard.java | 9 +- .../gerrit/server/project/GetDescription.java | 2 +- .../gerrit/server/project/GetParent.java | 2 +- .../gerrit/server/project/GetProject.java | 3 +- .../gerrit/server/project/ListDashboards.java | 2 +- .../gerrit/server/project/PutDescription.java | 9 +- .../gerrit/server/project/PutProject.java | 3 +- .../gerrit/server/project/SetDashboard.java | 5 +- .../server/project/SetDefaultDashboard.java | 19 +-- .../gerrit/server/project/SetParent.java | 5 +- .../sshd/commands/SetReviewersCommand.java | 2 - 77 files changed, 287 insertions(+), 266 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/AddSshKey.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/AddSshKey.java index 2cff009f4e..0b40c81127 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/AddSshKey.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/AddSshKey.java @@ -19,9 +19,7 @@ import com.google.common.io.ByteSource; import com.google.gerrit.common.errors.InvalidSshKeyException; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.RawInput; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.reviewdb.client.AccountSshKey; @@ -57,8 +55,7 @@ public class AddSshKey implements RestModifyView { @Override public Response apply(AccountResource rsrc, Input input) - throws AuthException, MethodNotAllowedException, BadRequestException, - ResourceConflictException, OrmException, IOException { + throws AuthException, BadRequestException, OrmException, IOException { if (self.get() != rsrc.getUser() && !self.get().getCapabilities().canAdministrateServer()) { throw new AuthException("not allowed to add SSH keys"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java index 340746efdf..3b03c3a064 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateAccount.java @@ -89,7 +89,7 @@ public class CreateAccount implements RestModifyView { } @Override - public Object apply(TopLevelResource rsrc, Input input) + public Response apply(TopLevelResource rsrc, Input input) throws BadRequestException, ResourceConflictException, UnprocessableEntityException, OrmException { if (input == null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateEmail.java index 4fda74c93e..9a5a864936 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateEmail.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/CreateEmail.java @@ -78,8 +78,8 @@ public class CreateEmail implements RestModifyView { } @Override - public Object apply(AccountResource rsrc, Input input) throws AuthException, - BadRequestException, ResourceConflictException, + public Response apply(AccountResource rsrc, Input input) + throws AuthException, BadRequestException, ResourceConflictException, ResourceNotFoundException, OrmException, EmailException, MethodNotAllowedException { if (self.get() != rsrc.getUser() diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java index d44bc2ccf2..438265506a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteActive.java @@ -43,7 +43,7 @@ public class DeleteActive implements RestModifyView { } @Override - public Object apply(AccountResource rsrc, Input input) + public Response apply(AccountResource rsrc, Input input) throws ResourceNotFoundException, OrmException { Account a = dbProvider.get().accounts().get(rsrc.getUser().getAccountId()); if (a == null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteEmail.java index 4b38b9f4e4..b38c49b315 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteEmail.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteEmail.java @@ -48,7 +48,7 @@ public class DeleteEmail implements RestModifyView } @Override - public Object apply(AccountResource.Email rsrc, Input input) + public Response apply(AccountResource.Email rsrc, Input input) throws AuthException, ResourceNotFoundException, ResourceConflictException, MethodNotAllowedException, OrmException { if (self.get() != rsrc.getUser() diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteSshKey.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteSshKey.java index cf60df1f17..bbba48a2f9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteSshKey.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/DeleteSshKey.java @@ -40,7 +40,7 @@ public class DeleteSshKey implements } @Override - public Object apply(AccountResource.SshKey rsrc, Input input) + public Response apply(AccountResource.SshKey rsrc, Input input) throws OrmException { dbProvider.get().accountSshKeys() .deleteKeys(Collections.singleton(rsrc.getSshKey().getKey())); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GetCapabilities.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GetCapabilities.java index 615d09e989..8634045f6e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GetCapabilities.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GetCapabilities.java @@ -36,7 +36,6 @@ import com.google.gerrit.common.data.PermissionRange; import com.google.gerrit.extensions.config.CapabilityDefinition; import com.google.gerrit.extensions.registration.DynamicMap; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.BinaryResult; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.CurrentUser; @@ -79,8 +78,7 @@ class GetCapabilities implements RestReadView { } @Override - public Object apply(AccountResource resource) - throws BadRequestException, Exception { + public Object apply(AccountResource resource) throws AuthException { if (self.get() != resource.getUser() && !self.get().getCapabilities().canAdministrateServer()) { throw new AuthException("restricted to administrator"); @@ -178,7 +176,7 @@ class GetCapabilities implements RestReadView { static class CheckOne implements RestReadView { @Override - public Object apply(Capability resource) { + public BinaryResult apply(Capability resource) { return BinaryResult.create("ok\n"); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/GetHttpPassword.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/GetHttpPassword.java index 8eaf4b3b49..7fc82f990e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/GetHttpPassword.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/GetHttpPassword.java @@ -18,7 +18,6 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.CurrentUser; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; @@ -33,7 +32,7 @@ public class GetHttpPassword implements RestReadView { @Override public String apply(AccountResource rsrc) throws AuthException, - ResourceNotFoundException, OrmException { + ResourceNotFoundException { if (self.get() != rsrc.getUser() && !self.get().getCapabilities().canAdministrateServer()) { throw new AuthException("not allowed to get http password"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/PutActive.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/PutActive.java index a860fdadd1..f1b5151a36 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/PutActive.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/PutActive.java @@ -43,7 +43,7 @@ public class PutActive implements RestModifyView { } @Override - public Object apply(AccountResource rsrc, Input input) + public Response apply(AccountResource rsrc, Input input) throws ResourceNotFoundException, OrmException { Account a = dbProvider.get().accounts().get(rsrc.getUser().getAccountId()); if (a == null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/PutEmail.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/PutEmail.java index b79d8dc4f9..ba12bbf8eb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/PutEmail.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/PutEmail.java @@ -15,12 +15,13 @@ package com.google.gerrit.server.account; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.account.CreateEmail.Input; public class PutEmail implements RestModifyView { @Override - public Object apply(AccountResource.Email rsrc, Input input) + public Response apply(AccountResource.Email rsrc, Input input) throws ResourceConflictException { throw new ResourceConflictException("email exists"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/StarredChanges.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/StarredChanges.java index b560911916..b8984ab2fa 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/StarredChanges.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/StarredChanges.java @@ -157,7 +157,7 @@ class StarredChanges implements @Override public Response apply(AccountResource.StarredChange rsrc, EmptyInput in) - throws AuthException, OrmException { + throws AuthException { if (self.get() != rsrc.getUser()) { throw new AuthException("not allowed update starred changes"); } 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 index bbc147fe36..855b0c12b2 100644 --- 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 @@ -28,7 +28,6 @@ import com.google.gerrit.server.change.ChangeResource; import com.google.gerrit.server.change.Restore; import com.google.gerrit.server.change.Revert; import com.google.gerrit.server.change.Revisions; -import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; @@ -138,8 +137,6 @@ class ChangeApiImpl implements ChangeApi { throw new RestApiException("Cannot revert change", e); } catch (IOException e) { throw new RestApiException("Cannot revert change", e); - } catch (NoSuchChangeException e) { - throw new RestApiException("Cannot revert change", e); } } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java index 1218de8dfc..de0438beb7 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java @@ -19,7 +19,6 @@ import com.google.common.util.concurrent.CheckedFuture; import com.google.gerrit.common.ChangeHooks; import com.google.gerrit.extensions.api.changes.AbandonInput; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.webui.UiAction; @@ -69,9 +68,9 @@ public class Abandon implements RestModifyView, } @Override - public Object apply(ChangeResource req, AbandonInput input) - throws BadRequestException, AuthException, - ResourceConflictException, OrmException, IOException { + public ChangeInfo apply(ChangeResource req, AbandonInput input) + throws AuthException, ResourceConflictException, OrmException, + IOException { ChangeControl control = req.getControl(); IdentifiedUser caller = (IdentifiedUser) control.getCurrentUser(); Change change = req.getChange(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPick.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPick.java index 18f45bb0aa..ce0d33ea7c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPick.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPick.java @@ -14,22 +14,29 @@ package com.google.gerrit.server.change; +import com.google.gerrit.common.errors.EmailException; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.webui.UiAction; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gerrit.server.change.CherryPick.Input; import com.google.gerrit.server.git.MergeException; import com.google.gerrit.server.project.ChangeControl; import com.google.gerrit.server.project.InvalidChangeOperationException; +import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gerrit.server.project.RefControl; +import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; +import java.io.IOException; + class CherryPick implements RestModifyView, UiAction { private final Provider dbProvider; @@ -51,9 +58,9 @@ class CherryPick implements RestModifyView, } @Override - public Object apply(RevisionResource revision, Input input) + public ChangeInfo apply(RevisionResource revision, Input input) throws AuthException, BadRequestException, ResourceConflictException, - Exception { + ResourceNotFoundException, OrmException, IOException, EmailException { final ChangeControl control = revision.getControl(); if (input.message == null || input.message.trim().isEmpty()) { @@ -89,6 +96,8 @@ class CherryPick implements RestModifyView, throw new BadRequestException(e.getMessage()); } catch (MergeException e) { throw new ResourceConflictException(e.getMessage()); + } catch (NoSuchChangeException e) { + throw new ResourceNotFoundException(e.getMessage()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraft.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraft.java index 229e0725dd..afd0b85796 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraft.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CreateDraft.java @@ -16,9 +16,7 @@ package com.google.gerrit.server.change; import com.google.common.base.Strings; import com.google.gerrit.common.changes.Side; -import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.Url; @@ -44,7 +42,7 @@ class CreateDraft implements RestModifyView { @Override public Response apply(RevisionResource rsrc, Input in) - throws AuthException, BadRequestException, ResourceConflictException, OrmException { + throws BadRequestException, OrmException { if (Strings.isNullOrEmpty(in.path)) { throw new BadRequestException("path must be non-empty"); } else if (in.message == null || in.message.trim().isEmpty()) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraft.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraft.java index 0d5898ea89..588c372aad 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraft.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraft.java @@ -36,7 +36,8 @@ class DeleteDraft implements RestModifyView { } @Override - public Object apply(DraftResource rsrc, Input input) throws OrmException { + public Response apply(DraftResource rsrc, Input input) + throws OrmException { db.get().patchComments().delete(Collections.singleton(rsrc.getComment())); return Response.none(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftChange.java index 767d5eecf0..efdb9cb6ad 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftChange.java @@ -58,7 +58,7 @@ public class DeleteDraftChange implements } @Override - public Object apply(ChangeResource rsrc, Input input) + public Response apply(ChangeResource rsrc, Input input) throws ResourceConflictException, AuthException, ResourceNotFoundException, OrmException, IOException { if (rsrc.getChange().getStatus() != Status.DRAFT) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java index 3265c815e8..ce86721879 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteDraftPatchSet.java @@ -64,9 +64,9 @@ public class DeleteDraftPatchSet implements RestModifyView apply(RevisionResource rsrc, Input input) + throws AuthException, ResourceNotFoundException, + ResourceConflictException, OrmException, IOException { PatchSet patchSet = rsrc.getPatchSet(); PatchSet.Id patchSetId = patchSet.getId(); Change change = rsrc.getChange(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java index c58fc6c16b..bc726aac78 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java @@ -50,7 +50,7 @@ public class DeleteReviewer implements RestModifyView { } @Override - public Object apply(ReviewerResource rsrc, Input input) + public Response apply(ReviewerResource rsrc, Input input) throws AuthException, ResourceNotFoundException, OrmException, IOException { ChangeControl control = rsrc.getControl(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/EditMessage.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/EditMessage.java index a634b7ccd6..8bc7a0ee6e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/EditMessage.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/EditMessage.java @@ -78,8 +78,8 @@ class EditMessage implements RestModifyView, @Override public ChangeInfo apply(RevisionResource rsrc, Input input) - throws BadRequestException, ResourceConflictException, EmailException, - OrmException, ResourceNotFoundException, IOException { + throws BadRequestException, ResourceConflictException, + ResourceNotFoundException, EmailException, OrmException, IOException { if (Strings.isNullOrEmpty(input.message)) { throw new BadRequestException("message must be non-empty"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java index 98e2ee99e5..b440ee04e2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java @@ -117,13 +117,12 @@ class Files implements ChildCollection { } @Override - public Object apply(RevisionResource resource) - throws ResourceNotFoundException, OrmException, - PatchListNotAvailableException, BadRequestException, AuthException { + public Response apply(RevisionResource resource) throws AuthException, + BadRequestException, ResourceNotFoundException, OrmException { if (base != null && reviewed) { throw new BadRequestException("cannot combine base and reviewed"); } else if (reviewed) { - return reviewed(resource); + return Response.ok(reviewed(resource)); } PatchSet basePatchSet = null; @@ -132,17 +131,21 @@ class Files implements ChildCollection { resource.getChangeResource(), IdString.fromDecoded(base)); basePatchSet = baseResource.getPatchSet(); } - Response> r = Response.ok(fileInfoJson.toFileInfoMap( - resource.getChange(), - resource.getPatchSet(), - basePatchSet)); - if (resource.isCacheable()) { - r.caching(CacheControl.PRIVATE(7, TimeUnit.DAYS)); + try { + Response> r = Response.ok(fileInfoJson.toFileInfoMap( + resource.getChange(), + resource.getPatchSet(), + basePatchSet)); + if (resource.isCacheable()) { + r.caching(CacheControl.PRIVATE(7, TimeUnit.DAYS)); + } + return r; + } catch (PatchListNotAvailableException e) { + throw new ResourceNotFoundException(e.getMessage()); } - return r; } - private Object reviewed(RevisionResource resource) + private List reviewed(RevisionResource resource) throws AuthException, OrmException { CurrentUser user = self.get(); if (!(user.isIdentifiedUser())) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetChange.java index 7213a94a9e..4f6ceacade 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetChange.java @@ -18,6 +18,7 @@ import com.google.gerrit.common.changes.ListChangesOption; import com.google.gerrit.extensions.restapi.CacheControl; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; +import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -44,15 +45,15 @@ public class GetChange implements RestReadView { } @Override - public Object apply(ChangeResource rsrc) throws OrmException { + public Response apply(ChangeResource rsrc) throws OrmException { return cache(json.format(rsrc)); } - Object apply(RevisionResource rsrc) throws OrmException { + Response apply(RevisionResource rsrc) throws OrmException { return cache(json.format(rsrc)); } - private Object cache(Object res) { + private Response cache(ChangeInfo res) { return Response.ok(res) .caching(CacheControl.PRIVATE(0, TimeUnit.SECONDS).setMustRevalidate()); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetComment.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetComment.java index 68b043599b..3606eed102 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetComment.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetComment.java @@ -29,7 +29,7 @@ class GetComment implements RestReadView { } @Override - public Object apply(CommentResource rsrc) throws OrmException { + public CommentInfo apply(CommentResource rsrc) throws OrmException { AccountInfo.Loader accountLoader = accountLoaderFactory.create(true); CommentInfo ci = new CommentInfo(rsrc.getComment(), accountLoader); accountLoader.fill(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetCommit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetCommit.java index 7d294495c6..b17e40641f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetCommit.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetCommit.java @@ -15,6 +15,7 @@ package com.google.gerrit.server.change; import com.google.gerrit.extensions.restapi.CacheControl; +import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.server.change.ChangeJson.CommitInfo; @@ -34,11 +35,16 @@ public class GetCommit implements RestReadView { @Override public Response apply(RevisionResource resource) - throws OrmException, PatchSetInfoNotAvailableException { - Response r = Response.ok(json.toCommit(resource.getPatchSet())); - if (resource.isCacheable()) { - r.caching(CacheControl.PRIVATE(7, TimeUnit.DAYS)); + throws ResourceNotFoundException, OrmException { + try { + Response r = + Response.ok(json.toCommit(resource.getPatchSet())); + if (resource.isCacheable()) { + r.caching(CacheControl.PRIVATE(7, TimeUnit.DAYS)); + } + return r; + } catch (PatchSetInfoNotAvailableException e) { + throw new ResourceNotFoundException(e.getMessage()); } - return r; } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDetail.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDetail.java index 936edd64ba..21c4c339f4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDetail.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDetail.java @@ -15,7 +15,9 @@ package com.google.gerrit.server.change; import com.google.gerrit.common.changes.ListChangesOption; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; +import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -44,7 +46,7 @@ public class GetDetail implements RestReadView { } @Override - public Object apply(ChangeResource rsrc) throws OrmException { + public Response apply(ChangeResource rsrc) throws OrmException { return delegate.apply(rsrc); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java index 43504fad78..04136bd3e4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java @@ -24,6 +24,7 @@ import com.google.gerrit.common.data.PatchScript.DisplayMethod; import com.google.gerrit.common.data.PatchScript.FileMode; import com.google.gerrit.extensions.restapi.CacheControl; import com.google.gerrit.extensions.restapi.IdString; +import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; @@ -38,6 +39,7 @@ import com.google.gerrit.server.git.LargeObjectException; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; + import org.eclipse.jgit.diff.Edit; import org.eclipse.jgit.diff.ReplaceEdit; import org.kohsuke.args4j.CmdLineException; @@ -76,8 +78,8 @@ public class GetDiff implements RestReadView { } @Override - public Object apply(FileResource resource) - throws OrmException, NoSuchChangeException, LargeObjectException, ResourceNotFoundException { + public Response apply(FileResource resource) + throws ResourceConflictException, ResourceNotFoundException, OrmException { PatchSet.Id basePatchSet = null; if (base != null) { RevisionResource baseResource = revisions.get().parse( @@ -89,74 +91,80 @@ public class GetDiff implements RestReadView { prefs.setContext(context); prefs.setIntralineDifference(intraline); - PatchScript ps = patchScriptFactoryFactory.create( - resource.getRevision().getControl(), - resource.getPatchKey().getFileName(), - basePatchSet, - resource.getPatchKey().getParentKey(), - prefs) - .call(); + try { + PatchScript ps = patchScriptFactoryFactory.create( + resource.getRevision().getControl(), + resource.getPatchKey().getFileName(), + basePatchSet, + resource.getPatchKey().getParentKey(), + prefs) + .call(); - Content content = new Content(ps); - for (Edit edit : ps.getEdits()) { - if (edit.getType() == Edit.Type.EMPTY) { - continue; + Content content = new Content(ps); + for (Edit edit : ps.getEdits()) { + if (edit.getType() == Edit.Type.EMPTY) { + continue; + } + content.addCommon(edit.getBeginA()); + + checkState(content.nextA == edit.getBeginA(), + "nextA = %d; want %d", content.nextA, edit.getBeginA()); + checkState(content.nextB == edit.getBeginB(), + "nextB = %d; want %d", content.nextB, edit.getBeginB()); + switch (edit.getType()) { + case DELETE: + case INSERT: + case REPLACE: + List internalEdit = edit instanceof ReplaceEdit + ? ((ReplaceEdit) edit).getInternalEdits() + : null; + content.addDiff(edit.getEndA(), edit.getEndB(), internalEdit); + break; + case EMPTY: + default: + throw new IllegalStateException(); + } } - content.addCommon(edit.getBeginA()); + content.addCommon(ps.getA().size()); - checkState(content.nextA == edit.getBeginA(), - "nextA = %d; want %d", content.nextA, edit.getBeginA()); - checkState(content.nextB == edit.getBeginB(), - "nextB = %d; want %d", content.nextB, edit.getBeginB()); - switch (edit.getType()) { - case DELETE: - case INSERT: - case REPLACE: - List internalEdit = edit instanceof ReplaceEdit - ? ((ReplaceEdit) edit).getInternalEdits() - : null; - content.addDiff(edit.getEndA(), edit.getEndB(), internalEdit); - break; - case EMPTY: - default: - throw new IllegalStateException(); + Result result = new Result(); + if (ps.getDisplayMethodA() != DisplayMethod.NONE) { + result.metaA = new FileMeta(); + result.metaA.name = Objects.firstNonNull(ps.getOldName(), ps.getNewName()); + result.metaA.setContentType(ps.getFileModeA(), ps.getMimeTypeA()); } - } - content.addCommon(ps.getA().size()); - Result result = new Result(); - if (ps.getDisplayMethodA() != DisplayMethod.NONE) { - result.metaA = new FileMeta(); - result.metaA.name = Objects.firstNonNull(ps.getOldName(), ps.getNewName()); - result.metaA.setContentType(ps.getFileModeA(), ps.getMimeTypeA()); - } - - if (ps.getDisplayMethodB() != DisplayMethod.NONE) { - result.metaB = new FileMeta(); - result.metaB.name = ps.getNewName(); - result.metaB.setContentType(ps.getFileModeB(), ps.getMimeTypeB()); - } - - if (intraline) { - if (ps.hasIntralineTimeout()) { - result.intralineStatus = IntraLineStatus.TIMEOUT; - } else if (ps.hasIntralineFailure()) { - result.intralineStatus = IntraLineStatus.FAILURE; - } else { - result.intralineStatus = IntraLineStatus.OK; + if (ps.getDisplayMethodB() != DisplayMethod.NONE) { + result.metaB = new FileMeta(); + result.metaB.name = ps.getNewName(); + result.metaB.setContentType(ps.getFileModeB(), ps.getMimeTypeB()); } - } - result.changeType = ps.getChangeType(); - if (ps.getPatchHeader().size() > 0) { - result.diffHeader = ps.getPatchHeader(); + if (intraline) { + if (ps.hasIntralineTimeout()) { + result.intralineStatus = IntraLineStatus.TIMEOUT; + } else if (ps.hasIntralineFailure()) { + result.intralineStatus = IntraLineStatus.FAILURE; + } else { + result.intralineStatus = IntraLineStatus.OK; + } + } + + result.changeType = ps.getChangeType(); + if (ps.getPatchHeader().size() > 0) { + result.diffHeader = ps.getPatchHeader(); + } + result.content = content.lines; + Response r = Response.ok(result); + if (resource.isCacheable()) { + r.caching(CacheControl.PRIVATE(7, TimeUnit.DAYS)); + } + return r; + } catch (NoSuchChangeException e) { + throw new ResourceNotFoundException(e.getMessage()); + } catch (LargeObjectException e) { + throw new ResourceConflictException(e.getMessage()); } - result.content = content.lines; - Response r = Response.ok(result); - if (resource.isCacheable()) { - r.caching(CacheControl.PRIVATE(7, TimeUnit.DAYS)); - } - return r; } static class Result { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDraft.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDraft.java index 6b36048604..c8a2d43cf9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDraft.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDraft.java @@ -14,15 +14,11 @@ package com.google.gerrit.server.change; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestReadView; class GetDraft implements RestReadView { @Override - public Object apply(DraftResource rsrc) throws AuthException, - BadRequestException, ResourceConflictException, Exception { + public CommentInfo apply(DraftResource rsrc) { return new CommentInfo(rsrc.getComment(), null); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java index 3776b74360..325c9326ba 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java @@ -70,7 +70,7 @@ public class GetRelated implements RestReadView { } @Override - public Object apply(RevisionResource rsrc) + public RelatedInfo apply(RevisionResource rsrc) throws RepositoryNotFoundException, IOException, OrmException { Repository git = gitMgr.openRepository(rsrc.getChange().getProject()); try { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReview.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReview.java index 3676a1e2ee..3440dca9d6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReview.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReview.java @@ -15,7 +15,9 @@ package com.google.gerrit.server.change; import com.google.gerrit.common.changes.ListChangesOption; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestReadView; +import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -30,7 +32,7 @@ public class GetReview implements RestReadView { } @Override - public Object apply(RevisionResource rsrc) throws OrmException { + public Response apply(RevisionResource rsrc) throws OrmException { return delegate.apply(rsrc); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReviewer.java index 8c41be8df0..fac4618df1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReviewer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetReviewer.java @@ -15,9 +15,12 @@ package com.google.gerrit.server.change; import com.google.gerrit.extensions.restapi.RestReadView; +import com.google.gerrit.server.change.ReviewerJson.ReviewerInfo; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; +import java.util.List; + public class GetReviewer implements RestReadView { private final ReviewerJson json; @@ -27,7 +30,7 @@ public class GetReviewer implements RestReadView { } @Override - public Object apply(ReviewerResource rsrc) throws OrmException { + public List apply(ReviewerResource rsrc) throws OrmException { return json.format(rsrc); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetTopic.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetTopic.java index 96a5c769e7..53f71fd61b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetTopic.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetTopic.java @@ -16,11 +16,10 @@ package com.google.gerrit.server.change; import com.google.common.base.Strings; import com.google.gerrit.extensions.restapi.RestReadView; -import com.google.gwtorm.server.OrmException; class GetTopic implements RestReadView { @Override - public Object apply(ChangeResource rsrc) throws OrmException { + public String apply(ChangeResource rsrc) { return Strings.nullToEmpty(rsrc.getChange().getTopic()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/IncludedIn.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/IncludedIn.java index 26e7846eb8..8df69579f9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/IncludedIn.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/IncludedIn.java @@ -47,8 +47,8 @@ class IncludedIn implements RestReadView { } @Override - public Object apply(ChangeResource rsrc) throws OrmException, IOException, - BadRequestException, ResourceConflictException { + public IncludedInInfo apply(ChangeResource rsrc) throws BadRequestException, + ResourceConflictException, OrmException, IOException { ChangeControl ctl = rsrc.getControl(); PatchSet ps = db.patchSets().get(ctl.getChange().currentPatchSetId()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Index.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Index.java index 6ecc5445a1..77b8e5f3d9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Index.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Index.java @@ -37,7 +37,7 @@ public class Index implements RestModifyView { } @Override - public Object apply(ChangeResource rsrc, Input input) throws IOException { + public Response apply(ChangeResource rsrc, Input input) throws IOException { indexer.index(rsrc.getChange()); return Response.none(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ListDrafts.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ListDrafts.java index 97c7694e09..cb037246ed 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ListDrafts.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ListDrafts.java @@ -19,9 +19,6 @@ import static com.google.common.base.Objects.firstNonNull; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gerrit.common.changes.Side; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.reviewdb.client.PatchLineComment; import com.google.gerrit.reviewdb.server.ReviewDb; @@ -58,8 +55,8 @@ class ListDrafts implements RestReadView { } @Override - public Object apply(RevisionResource rsrc) throws AuthException, - BadRequestException, ResourceConflictException, Exception { + public Map> apply(RevisionResource rsrc) + throws OrmException { Map> out = Maps.newTreeMap(); AccountInfo.Loader accountLoader = includeAuthorInfo() ? accountLoaderFactory.create(true) : null; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ListReviewers.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ListReviewers.java index 68cc1b44ba..70227010c6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ListReviewers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ListReviewers.java @@ -15,16 +15,17 @@ package com.google.gerrit.server.change; import com.google.common.collect.Maps; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.change.ReviewerJson.ReviewerInfo; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; +import java.util.List; import java.util.Map; class ListReviewers implements RestReadView { @@ -42,8 +43,7 @@ class ListReviewers implements RestReadView { } @Override - public Object apply(ChangeResource rsrc) throws BadRequestException, - OrmException { + public List apply(ChangeResource rsrc) throws OrmException { Map reviewers = Maps.newLinkedHashMap(); ReviewDb db = dbProvider.get(); Change.Id changeId = rsrc.getChange().getId(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java index 595e1c8c38..852b379ac7 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mergeable.java @@ -35,7 +35,6 @@ import com.google.inject.Provider; import org.eclipse.jgit.errors.IncorrectObjectTypeException; import org.eclipse.jgit.errors.MissingObjectException; -import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; @@ -80,9 +79,8 @@ public class Mergeable implements RestReadView { } @Override - public MergeableInfo apply(RevisionResource resource) - throws ResourceConflictException, BadRequestException, AuthException, - OrmException, RepositoryNotFoundException, IOException { + public MergeableInfo apply(RevisionResource resource) throws AuthException, + ResourceConflictException, BadRequestException, OrmException, IOException { Change change = resource.getChange(); PatchSet ps = resource.getPatchSet(); MergeableInfo result = new MergeableInfo(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java index 8e9e49435a..6236dee19b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java @@ -98,9 +98,9 @@ public class PostReview implements RestModifyView } @Override - public Object apply(RevisionResource revision, ReviewInput input) - throws AuthException, BadRequestException, OrmException, - UnprocessableEntityException, IOException { + public Output apply(RevisionResource revision, ReviewInput input) + throws AuthException, BadRequestException, UnprocessableEntityException, + OrmException, IOException { if (input.onBehalfOf != null) { revision = onBehalfOf(revision, input); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java index 13deeb06b8..de6c123199 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReviewers.java @@ -28,7 +28,6 @@ import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; -import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; import com.google.gerrit.reviewdb.client.Account; @@ -132,8 +131,8 @@ public class PostReviewers implements RestModifyView { @Override public PostResult apply(ChangeResource rsrc, Input input) - throws BadRequestException, ResourceNotFoundException, AuthException, - UnprocessableEntityException, OrmException, EmailException, IOException { + throws AuthException, BadRequestException, UnprocessableEntityException, + OrmException, EmailException, IOException { if (input.reviewer == null) { throw new BadRequestException("missing reviewer field"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Publish.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Publish.java index 8b0fe99c07..f28f34227a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Publish.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Publish.java @@ -59,9 +59,9 @@ public class Publish implements RestModifyView, } @Override - public Object apply(RevisionResource rsrc, Input input) throws IOException, - ResourceNotFoundException, ResourceConflictException, - OrmException, AuthException { + public Response apply(RevisionResource rsrc, Input input) + throws AuthException, ResourceNotFoundException, + ResourceConflictException, OrmException, IOException { if (!rsrc.getPatchSet().isDraft()) { throw new ResourceConflictException("Patch set is not a draft"); } @@ -148,9 +148,9 @@ public class Publish implements RestModifyView, } @Override - public Object apply(ChangeResource rsrc, Input input) throws AuthException, - ResourceConflictException, ResourceConflictException, IOException, - OrmException, ResourceNotFoundException, AuthException { + public Response apply(ChangeResource rsrc, Input input) + throws AuthException, ResourceConflictException, + ResourceNotFoundException, IOException, OrmException { PatchSet ps = dbProvider.get().patchSets() .get(rsrc.getChange().currentPatchSetId()); if (ps == null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PutDraft.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PutDraft.java index 803af178af..f2285f0fa1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PutDraft.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PutDraft.java @@ -15,15 +15,14 @@ package com.google.gerrit.server.change; import com.google.gerrit.common.changes.Side; -import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; -import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.Url; +import com.google.gerrit.reviewdb.client.CommentRange; import com.google.gerrit.reviewdb.client.Patch; import com.google.gerrit.reviewdb.client.PatchLineComment; -import com.google.gerrit.reviewdb.client.CommentRange; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.change.PutDraft.Input; import com.google.gerrit.server.util.TimeUtil; @@ -59,8 +58,8 @@ class PutDraft implements RestModifyView { } @Override - public Object apply(DraftResource rsrc, Input in) throws AuthException, - BadRequestException, ResourceConflictException, OrmException { + public Response apply(DraftResource rsrc, Input in) throws + BadRequestException, OrmException { PatchLineComment c = rsrc.getComment(); if (in == null || in.message == null || in.message.trim().isEmpty()) { return delete.get().apply(rsrc, null); @@ -90,7 +89,7 @@ class PutDraft implements RestModifyView { } else { db.get().patchComments().update(Collections.singleton(update(c, in))); } - return new CommentInfo(c, null); + return Response.ok(new CommentInfo(c, null)); } private PatchLineComment update(PatchLineComment e, Input in) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java index acf96e6f0a..84ace98cf7 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PutTopic.java @@ -18,9 +18,7 @@ import com.google.common.base.Strings; import com.google.common.util.concurrent.CheckedFuture; import com.google.gerrit.common.ChangeHooks; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.webui.UiAction; @@ -34,6 +32,7 @@ import com.google.gerrit.server.index.ChangeIndexer; import com.google.gerrit.server.project.ChangeControl; import com.google.gerrit.server.util.TimeUtil; import com.google.gwtorm.server.AtomicUpdate; +import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Provider; @@ -61,9 +60,8 @@ class PutTopic implements RestModifyView, } @Override - public Object apply(ChangeResource req, Input input) - throws BadRequestException, AuthException, - ResourceConflictException, Exception { + public Response apply(ChangeResource req, Input input) + throws AuthException, OrmException, IOException { if (input == null) { input = new Input(); } @@ -123,8 +121,8 @@ class PutTopic implements RestModifyView, indexFuture.checkedGet(); } return Strings.isNullOrEmpty(newTopicName) - ? Response.none() - : newTopicName; + ? Response.none() + : Response.ok(newTopicName); } @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java index a05599302a..58494c4841 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java @@ -69,9 +69,9 @@ public class Restore implements RestModifyView, } @Override - public Object apply(ChangeResource req, RestoreInput input) - throws OrmException, IOException, AuthException, - ResourceConflictException { + public ChangeInfo apply(ChangeResource req, RestoreInput input) + throws AuthException, ResourceConflictException, OrmException, + IOException { ChangeControl control = req.getControl(); IdentifiedUser caller = (IdentifiedUser) control.getCurrentUser(); Change change = req.getChange(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java index 74bc68f906..5d2ddde700 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java @@ -21,6 +21,7 @@ import com.google.gerrit.extensions.api.changes.RevertInput; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.webui.UiAction; import com.google.gerrit.reviewdb.client.Change; @@ -82,8 +83,8 @@ public class Revert implements RestModifyView, @Override public ChangeInfo apply(ChangeResource req, RevertInput input) - throws AuthException, ResourceConflictException, IOException, - NoSuchChangeException, EmailException, OrmException, BadRequestException { + throws AuthException, BadRequestException, ResourceConflictException, + ResourceNotFoundException, IOException, OrmException, EmailException { ChangeControl control = req.getControl(); Change change = req.getChange(); if (!control.canAddPatchSet()) { @@ -108,6 +109,8 @@ public class Revert implements RestModifyView, return json.format(revertedChangeId); } catch (InvalidChangeOperationException e) { throw new BadRequestException(e.getMessage()); + } catch (NoSuchChangeException e) { + throw new ResourceNotFoundException(e.getMessage()); } finally { git.close(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Reviewed.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Reviewed.java index 022f178d51..dd27139ec6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Reviewed.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Reviewed.java @@ -38,7 +38,7 @@ class Reviewed { } @Override - public Object apply(FileResource resource, Input input) + public Response apply(FileResource resource, Input input) throws OrmException { ReviewDb db = dbProvider.get(); AccountPatchReview apr = getExisting(db, resource); @@ -66,7 +66,7 @@ class Reviewed { } @Override - public Object apply(FileResource resource, Input input) + public Response apply(FileResource resource, Input input) throws OrmException { ReviewDb db = dbProvider.get(); AccountPatchReview apr = getExisting(db, resource); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java index 2dc066c20c..3851265236 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Submit.java @@ -35,6 +35,7 @@ import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.ProjectUtil; +import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.MergeQueue; import com.google.gerrit.server.index.ChangeIndexer; @@ -332,7 +333,7 @@ public class Submit implements RestModifyView, } @Override - public Object apply(ChangeResource rsrc, SubmitInput input) + public ChangeInfo apply(ChangeResource rsrc, SubmitInput input) throws AuthException, ResourceConflictException, RepositoryNotFoundException, IOException, OrmException { PatchSet ps = dbProvider.get().patchSets() diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitRule.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitRule.java index 85206e5b96..ab16360f51 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitRule.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitRule.java @@ -72,8 +72,8 @@ public class TestSubmitRule implements RestModifyView { } @Override - public Object apply(RevisionResource rsrc, Input input) throws OrmException, - BadRequestException, AuthException { + public List apply(RevisionResource rsrc, Input input) + throws AuthException, BadRequestException, OrmException { if (input == null) { input = new Input(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java index 5a4f9e217c..f8c1d80395 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/TestSubmitType.java @@ -28,7 +28,6 @@ import com.google.gerrit.server.change.TestSubmitRule.Input; import com.google.gerrit.server.project.RuleEvalException; import com.google.gerrit.server.project.SubmitRuleEvaluator; import com.google.gerrit.server.query.change.ChangeData; -import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.googlecode.prolog_cafe.lang.SymbolTerm; @@ -54,7 +53,7 @@ public class TestSubmitType implements RestModifyView { @Override public SubmitType apply(RevisionResource rsrc, Input input) - throws OrmException, BadRequestException, AuthException { + throws AuthException, BadRequestException { if (input == null) { input = new Input(); } @@ -120,7 +119,7 @@ public class TestSubmitType implements RestModifyView { @Override public SubmitType apply(RevisionResource resource) - throws BadRequestException, OrmException, AuthException { + throws AuthException, BadRequestException { return test.apply(resource, null); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/ListCapabilities.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/ListCapabilities.java index c64f786ed8..88616e114b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/ListCapabilities.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/ListCapabilities.java @@ -19,9 +19,6 @@ import com.google.common.collect.Maps; import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.extensions.config.CapabilityDefinition; import com.google.gerrit.extensions.registration.DynamicMap; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.inject.Inject; import com.google.inject.Provider; @@ -43,9 +40,7 @@ public class ListCapabilities implements RestReadView { @Override public Map apply(ConfigResource resource) - throws AuthException, BadRequestException, ResourceConflictException, - IllegalArgumentException, SecurityException, IllegalAccessException, - NoSuchFieldException { + throws IllegalAccessException, NoSuchFieldException { Map output = Maps.newTreeMap(); collectCoreCapabilities(output); collectPluginCapabilities(output); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/ListTopMenus.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/ListTopMenus.java index 68ae5c13c1..c8e9d1ee50 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/ListTopMenus.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/ListTopMenus.java @@ -31,7 +31,7 @@ class ListTopMenus implements RestReadView { } @Override - public Object apply(ConfigResource resource) { + public List apply(ConfigResource resource) { List entries = Lists.newArrayList(); for (TopMenu extension : extensions) { entries.addAll(extension.getEntries()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java index 195ea1cdd9..c417dfc6a8 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddIncludedGroups.java @@ -20,7 +20,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gerrit.common.data.GroupDescription; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.RestModifyView; @@ -87,7 +86,7 @@ public class AddIncludedGroups implements RestModifyView { @Override public List apply(GroupResource resource, Input input) - throws MethodNotAllowedException, AuthException, BadRequestException, + throws MethodNotAllowedException, AuthException, UnprocessableEntityException, OrmException { AccountGroup group = resource.toAccountGroup(); if (group == null) { @@ -149,7 +148,7 @@ public class AddIncludedGroups implements RestModifyView { @Override public GroupInfo apply(GroupResource resource, Input input) - throws MethodNotAllowedException, AuthException, BadRequestException, + throws AuthException, MethodNotAllowedException, UnprocessableEntityException, OrmException { AddIncludedGroups.Input in = new AddIncludedGroups.Input(); in.groups = ImmutableList.of(id); @@ -173,8 +172,8 @@ public class AddIncludedGroups implements RestModifyView { } @Override - public Object apply(IncludedGroupResource resource, - PutIncludedGroup.Input input) throws MethodNotAllowedException, OrmException { + public GroupInfo apply(IncludedGroupResource resource, + PutIncludedGroup.Input input) throws OrmException { // Do nothing, the group is already included. return get.get().apply(resource); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java index 5ebf50409f..8ec6a3fd1d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/AddMembers.java @@ -200,7 +200,7 @@ public class AddMembers implements RestModifyView { } @Override - public Object apply(GroupResource resource, PutMember.Input input) + public AccountInfo apply(GroupResource resource, PutMember.Input input) throws AuthException, MethodNotAllowedException, UnprocessableEntityException, OrmException { AddMembers.Input in = new AddMembers.Input(); @@ -225,7 +225,7 @@ public class AddMembers implements RestModifyView { } @Override - public Object apply(MemberResource resource, PutMember.Input input) + public AccountInfo apply(MemberResource resource, PutMember.Input input) throws OrmException { // Do nothing, the user is already a member. return get.get().apply(resource); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/CreateGroup.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/CreateGroup.java index 6914cf208c..cf8d9d051e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/CreateGroup.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/CreateGroup.java @@ -24,6 +24,7 @@ import com.google.gerrit.common.errors.PermissionDeniedException; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; +import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.UnprocessableEntityException; @@ -79,7 +80,7 @@ class CreateGroup implements RestModifyView { @Override public GroupInfo apply(TopLevelResource resource, Input input) throws AuthException, BadRequestException, UnprocessableEntityException, - NameAlreadyUsedException, OrmException { + ResourceConflictException, OrmException { if (input == null) { input = new Input(); } @@ -101,6 +102,8 @@ class CreateGroup implements RestModifyView { null); } catch (PermissionDeniedException e) { throw new AuthException(e.getMessage()); + } catch (NameAlreadyUsedException e) { + throw new ResourceConflictException(e.getMessage()); } return json.format(GroupDescriptions.forAccountGroup(group)); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java index c5d95b01e2..04dcda3136 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteIncludedGroups.java @@ -19,7 +19,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gerrit.common.data.GroupDescription; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; @@ -59,8 +58,8 @@ public class DeleteIncludedGroups implements RestModifyView apply(GroupResource resource, Input input) + throws AuthException, MethodNotAllowedException, UnprocessableEntityException, OrmException { AccountGroup internalGroup = resource.toAccountGroup(); if (internalGroup == null) { @@ -143,8 +142,8 @@ public class DeleteIncludedGroups implements RestModifyView apply(IncludedGroupResource resource, Input input) + throws AuthException, MethodNotAllowedException, UnprocessableEntityException, OrmException { AddIncludedGroups.Input in = new AddIncludedGroups.Input(); in.groups = ImmutableList.of(resource.getMember().get()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java index 186d4b6047..fd1b8f4bce 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/DeleteMembers.java @@ -16,7 +16,6 @@ package com.google.gerrit.server.group; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.Response; @@ -57,7 +56,7 @@ public class DeleteMembers implements RestModifyView { } @Override - public Object apply(GroupResource resource, Input input) + public Response apply(GroupResource resource, Input input) throws AuthException, MethodNotAllowedException, UnprocessableEntityException, OrmException { AccountGroup internalGroup = resource.toAccountGroup(); @@ -141,9 +140,9 @@ public class DeleteMembers implements RestModifyView { } @Override - public Object apply(MemberResource resource, Input input) + public Response apply(MemberResource resource, Input input) throws AuthException, MethodNotAllowedException, - UnprocessableEntityException, OrmException, NoSuchGroupException { + UnprocessableEntityException, OrmException { AddMembers.Input in = new AddMembers.Input(); in._oneMember = resource.getMember().getAccountId().toString(); return delete.get().apply(resource, in); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/ListGroups.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/ListGroups.java index 03ec06722a..509c5a2d8e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/ListGroups.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/ListGroups.java @@ -23,9 +23,6 @@ import com.google.gerrit.common.data.GroupDescriptions; import com.google.gerrit.common.data.GroupReference; import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.common.groups.ListGroupsOption; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.Url; @@ -132,8 +129,7 @@ public class ListGroups implements RestReadView { } @Override - public Object apply(TopLevelResource resource) throws AuthException, - BadRequestException, ResourceConflictException, Exception { + public Object apply(TopLevelResource resource) throws OrmException { final Map output = Maps.newTreeMap(); for (GroupInfo info : get()) { output.put(Objects.firstNonNull( diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/PutDescription.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/PutDescription.java index dcc0a76ff8..d17a8b6ce3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/PutDescription.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/PutDescription.java @@ -15,7 +15,6 @@ package com.google.gerrit.server.group; import com.google.common.base.Strings; -import com.google.gerrit.common.errors.NoSuchGroupException; import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.DefaultInput; import com.google.gerrit.extensions.restapi.MethodNotAllowedException; @@ -47,8 +46,8 @@ public class PutDescription implements RestModifyView { } @Override - public Object apply(GroupResource resource, Input input) - throws MethodNotAllowedException, AuthException, NoSuchGroupException, + public Response apply(GroupResource resource, Input input) + throws AuthException, MethodNotAllowedException, ResourceNotFoundException, OrmException { if (input == null) { input = new Input(); // Delete would set description to null. @@ -71,7 +70,7 @@ public class PutDescription implements RestModifyView { groupCache.evict(group); return Strings.isNullOrEmpty(input.description) - ? Response.none() - : input.description; + ? Response.none() + : Response.ok(input.description); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/group/PutGroup.java b/gerrit-server/src/main/java/com/google/gerrit/server/group/PutGroup.java index 9cbed6c846..4d3d6bed49 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/group/PutGroup.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/group/PutGroup.java @@ -15,12 +15,13 @@ package com.google.gerrit.server.group; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.group.CreateGroup.Input; public class PutGroup implements RestModifyView { @Override - public Object apply(GroupResource resource, Input input) + public Response apply(GroupResource resource, Input input) throws ResourceConflictException { throw new ResourceConflictException("Group already exists"); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/DisablePlugin.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/DisablePlugin.java index cae5ce679c..d6dfa3cf71 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/DisablePlugin.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/DisablePlugin.java @@ -19,6 +19,7 @@ import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.plugins.DisablePlugin.Input; +import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.inject.Inject; @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @@ -34,9 +35,9 @@ class DisablePlugin implements RestModifyView { } @Override - public Object apply(PluginResource resource, Input input) { + public PluginInfo apply(PluginResource resource, Input input) { String name = resource.getName(); loader.disablePlugins(ImmutableSet.of(name)); - return new ListPlugins.PluginInfo(loader.get(name)); + return new PluginInfo(loader.get(name)); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/EnablePlugin.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/EnablePlugin.java index f33d814920..ebe6d1a984 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/EnablePlugin.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/EnablePlugin.java @@ -20,6 +20,7 @@ import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.plugins.EnablePlugin.Input; +import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.inject.Inject; import java.io.PrintWriter; @@ -38,7 +39,7 @@ class EnablePlugin implements RestModifyView { } @Override - public Object apply(PluginResource resource, Input input) + public PluginInfo apply(PluginResource resource, Input input) throws ResourceConflictException { String name = resource.getName(); try { @@ -51,6 +52,6 @@ class EnablePlugin implements RestModifyView { pw.flush(); throw new ResourceConflictException(buf.toString()); } - return new ListPlugins.PluginInfo(loader.get(name)); + return new PluginInfo(loader.get(name)); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/GetStatus.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/GetStatus.java index 2207d343a9..7651506580 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/GetStatus.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/GetStatus.java @@ -15,10 +15,11 @@ package com.google.gerrit.server.plugins; import com.google.gerrit.extensions.restapi.RestReadView; +import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; class GetStatus implements RestReadView { @Override - public Object apply(PluginResource resource) { - return new ListPlugins.PluginInfo(resource.getPlugin()); + public PluginInfo apply(PluginResource resource) { + return new PluginInfo(resource.getPlugin()); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/InstallPlugin.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/InstallPlugin.java index 6684bfb0a6..f9bdb48024 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/InstallPlugin.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/InstallPlugin.java @@ -23,6 +23,7 @@ import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.server.plugins.InstallPlugin.Input; +import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.inject.Inject; import java.io.IOException; @@ -52,7 +53,7 @@ class InstallPlugin implements RestModifyView { } @Override - public Response apply(TopLevelResource resource, + public Response apply(TopLevelResource resource, Input input) throws BadRequestException, IOException { try { InputStream in; @@ -101,7 +102,7 @@ class InstallPlugin implements RestModifyView { } @Override - public Response apply(PluginResource resource, + public Response apply(PluginResource resource, Input input) throws BadRequestException, IOException { return new InstallPlugin(loader, resource.getName(), false) .apply(TopLevelResource.INSTANCE, input); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java index ca0f7ae141..08c95b2997 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ListPlugins.java @@ -19,9 +19,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.extensions.annotations.RequiresCapability; -import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; -import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.extensions.restapi.Url; @@ -69,8 +66,8 @@ public class ListPlugins implements RestReadView { } @Override - public Object apply(TopLevelResource resource) throws AuthException, - BadRequestException, ResourceConflictException, Exception { + public Object apply(TopLevelResource resource) + throws UnsupportedEncodingException { format = OutputFormat.JSON; return display(null); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ReloadPlugin.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ReloadPlugin.java index 9f9ef2db83..32e8b24dc0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ReloadPlugin.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/ReloadPlugin.java @@ -19,6 +19,7 @@ import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.RestModifyView; +import com.google.gerrit.server.plugins.ListPlugins.PluginInfo; import com.google.gerrit.server.plugins.ReloadPlugin.Input; import com.google.inject.Inject; @@ -38,7 +39,7 @@ class ReloadPlugin implements RestModifyView { } @Override - public Object apply(PluginResource resource, Input input) throws ResourceConflictException { + public PluginInfo apply(PluginResource resource, Input input) throws ResourceConflictException { String name = resource.getName(); try { loader.reload(ImmutableList.of(name)); @@ -52,6 +53,6 @@ class ReloadPlugin implements RestModifyView { pw.flush(); throw new ResourceConflictException(buf.toString()); } - return new ListPlugins.PluginInfo(loader.get(name)); + return new PluginInfo(loader.get(name)); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java index 0d4f33651f..58f6b15d4f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateProject.java @@ -32,6 +32,7 @@ import com.google.gerrit.reviewdb.client.Project.SubmitType; import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.group.GroupsCollection; import com.google.gerrit.server.project.CreateProject.Input; +import com.google.gerrit.server.project.ProjectJson.ProjectInfo; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.assistedinject.Assisted; @@ -82,7 +83,7 @@ public class CreateProject implements RestModifyView { } @Override - public Object apply(TopLevelResource resource, Input input) + public Response apply(TopLevelResource resource, Input input) throws BadRequestException, UnprocessableEntityException, ProjectCreationFailedException, IOException { if (input == null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranch.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranch.java index a41c197cb8..600f65d923 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranch.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteBranch.java @@ -59,7 +59,7 @@ public class DeleteBranch implements RestModifyView{ } @Override - public Object apply(BranchResource rsrc, Input input) throws AuthException, + public Response apply(BranchResource rsrc, Input input) throws AuthException, ResourceConflictException, OrmException, IOException { if (!rsrc.getControl().controlForRef(rsrc.getBranchKey()).canDelete()) { throw new AuthException("Cannot delete branch"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteDashboard.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteDashboard.java index da1e46ba19..669f02411c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteDashboard.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/DeleteDashboard.java @@ -18,11 +18,16 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.ResourceNotFoundException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; +import com.google.gerrit.server.project.DashboardsCollection.DashboardInfo; import com.google.gerrit.server.project.DeleteDashboard.Input; import com.google.inject.Inject; import com.google.inject.Provider; +import java.io.IOException; + class DeleteDashboard implements RestModifyView { static class Input { String commitMessage; @@ -36,9 +41,9 @@ class DeleteDashboard implements RestModifyView { } @Override - public Object apply(DashboardResource resource, Input input) + public Response apply(DashboardResource resource, Input input) throws AuthException, BadRequestException, ResourceConflictException, - Exception { + ResourceNotFoundException, MethodNotAllowedException, IOException { if (resource.isProjectDefault()) { SetDashboard.Input in = new SetDashboard.Input(); in.commitMessage = input != null ? input.commitMessage : null; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDashboard.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDashboard.java index 51d61910a1..fcd2284b66 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDashboard.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDashboard.java @@ -20,6 +20,7 @@ import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.gerrit.extensions.restapi.IdString; +import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.Url; @@ -45,7 +46,7 @@ class GetDashboard implements RestReadView { @Override public DashboardInfo apply(DashboardResource resource) - throws ResourceNotFoundException, IOException, ConfigInvalidException { + throws ResourceNotFoundException, ResourceConflictException, IOException { if (inherited && !resource.isProjectDefault()) { // inherited flag can only be used with default. throw new ResourceNotFoundException("inherited"); @@ -54,7 +55,11 @@ class GetDashboard implements RestReadView { String project = resource.getControl().getProject().getName(); if (resource.isProjectDefault()) { // The default is not resolved to a definition yet. - resource = defaultOf(resource.getControl()); + try { + resource = defaultOf(resource.getControl()); + } catch (ConfigInvalidException e) { + throw new ResourceConflictException(e.getMessage()); + } } return DashboardsCollection.parse( diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDescription.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDescription.java index d8fababeab..aeff72f3dd 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDescription.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetDescription.java @@ -20,7 +20,7 @@ import com.google.gerrit.reviewdb.client.Project; class GetDescription implements RestReadView { @Override - public Object apply(ProjectResource resource) { + public String apply(ProjectResource resource) { Project project = resource.getControl().getProject(); return Strings.nullToEmpty(project.getDescription()); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetParent.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetParent.java index 1cebd87d81..f790b7e339 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetParent.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetParent.java @@ -28,7 +28,7 @@ class GetParent implements RestReadView { } @Override - public Object apply(ProjectResource resource) { + public String apply(ProjectResource resource) { Project project = resource.getControl().getProject(); Project.NameKey parentName = project.getParent(allProjectsName); return parentName != null ? parentName.get() : ""; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetProject.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetProject.java index a48227838f..961f7b2293 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/GetProject.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/GetProject.java @@ -15,6 +15,7 @@ package com.google.gerrit.server.project; import com.google.gerrit.extensions.restapi.RestReadView; +import com.google.gerrit.server.project.ProjectJson.ProjectInfo; import com.google.inject.Inject; class GetProject implements RestReadView { @@ -27,7 +28,7 @@ class GetProject implements RestReadView { } @Override - public Object apply(ProjectResource rsrc) { + public ProjectInfo apply(ProjectResource rsrc) { return json.format(rsrc); } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ListDashboards.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ListDashboards.java index c063618c47..e3247fcf54 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ListDashboards.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ListDashboards.java @@ -53,7 +53,7 @@ class ListDashboards implements RestReadView { } @Override - public Object apply(ProjectResource resource) + public List apply(ProjectResource resource) throws ResourceNotFoundException, IOException { ProjectControl ctl = resource.getControl(); String project = ctl.getProject().getName(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java index f7dd3cb4ec..58db203fcb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutDescription.java @@ -17,7 +17,6 @@ package com.google.gerrit.server.project; import com.google.common.base.Objects; import com.google.common.base.Strings; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; @@ -57,8 +56,8 @@ class PutDescription implements RestModifyView { } @Override - public Object apply(ProjectResource resource, Input input) - throws AuthException, BadRequestException, ResourceConflictException, + public Response apply(ProjectResource resource, Input input) + throws AuthException, ResourceConflictException, ResourceNotFoundException, IOException { if (input == null) { input = new Input(); // Delete would set description to null. @@ -92,8 +91,8 @@ class PutDescription implements RestModifyView { project.getDescription()); return Strings.isNullOrEmpty(project.getDescription()) - ? Response.none() - : project.getDescription(); + ? Response.none() + : Response.ok(project.getDescription()); } finally { md.close(); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutProject.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutProject.java index 0a96cb5fb0..836899a277 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/PutProject.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/PutProject.java @@ -15,12 +15,13 @@ package com.google.gerrit.server.project; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.project.CreateProject.Input; public class PutProject implements RestModifyView { @Override - public Object apply(ProjectResource resource, Input input) + public Response apply(ProjectResource resource, Input input) throws ResourceConflictException { throw new ResourceConflictException("Project \"" + resource.getName() + "\" already exists"); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDashboard.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDashboard.java index 930da12223..8319bbda9c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDashboard.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDashboard.java @@ -19,11 +19,14 @@ import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; import com.google.gerrit.extensions.restapi.MethodNotAllowedException; import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.server.project.SetDashboard.Input; import com.google.inject.Inject; import com.google.inject.Provider; +import java.io.IOException; + class SetDashboard implements RestModifyView { static class Input { @DefaultInput @@ -41,7 +44,7 @@ class SetDashboard implements RestModifyView { @Override public Object apply(DashboardResource resource, Input input) throws AuthException, BadRequestException, ResourceConflictException, - Exception { + MethodNotAllowedException, ResourceNotFoundException, IOException { if (resource.isProjectDefault()) { return defaultSetter.get().apply(resource, input); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java index 3f70bc206d..a323ec83b9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetDefaultDashboard.java @@ -36,6 +36,8 @@ import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.kohsuke.args4j.Option; +import java.io.IOException; + class SetDefaultDashboard implements RestModifyView { private final ProjectCache cache; private final MetaDataUpdate.Server updateFactory; @@ -57,9 +59,9 @@ class SetDefaultDashboard implements RestModifyView { } @Override - public Object apply(DashboardResource resource, Input input) + public Response apply(DashboardResource resource, Input input) throws AuthException, BadRequestException, ResourceConflictException, - Exception { + ResourceNotFoundException, IOException { if (input == null) { input = new Input(); // Delete would set input to null. } @@ -79,6 +81,8 @@ class SetDefaultDashboard implements RestModifyView { IdString.fromUrl(input.id)); } catch (ResourceNotFoundException e) { throw new BadRequestException("dashboard " + input.id + " not found"); + } catch (ConfigInvalidException e) { + throw new ResourceConflictException(e.getMessage()); } } @@ -109,7 +113,7 @@ class SetDefaultDashboard implements RestModifyView { if (target != null) { DashboardInfo info = get.get().apply(target); info.isDefault = true; - return info; + return Response.ok(info); } return Response.none(); } finally { @@ -136,14 +140,13 @@ class SetDefaultDashboard implements RestModifyView { } @Override - public Object apply(ProjectResource resource, Input input) + public Response apply(ProjectResource resource, Input input) throws AuthException, BadRequestException, ResourceConflictException, - Exception { + ResourceNotFoundException, IOException { SetDefaultDashboard set = setDefault.get(); set.inherited = inherited; - return Response.created(set.apply( - DashboardResource.projectDefault(resource.getControl()), - input)); + return set.apply( + DashboardResource.projectDefault(resource.getControl()), input); } } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java index 999358cdbe..1dd82823b2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/SetParent.java @@ -19,7 +19,6 @@ import com.google.common.base.Predicate; import com.google.common.base.Strings; import com.google.common.collect.Iterables; import com.google.gerrit.extensions.restapi.AuthException; -import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.DefaultInput; import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceNotFoundException; @@ -59,8 +58,8 @@ class SetParent implements RestModifyView { } @Override - public String apply(final ProjectResource rsrc, Input input) throws AuthException, - BadRequestException, ResourceConflictException, + public String apply(final ProjectResource rsrc, Input input) + throws AuthException, ResourceConflictException, ResourceNotFoundException, UnprocessableEntityException, IOException { ProjectControl ctl = rsrc.getControl(); IdentifiedUser user = (IdentifiedUser) ctl.getCurrentUser(); diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/SetReviewersCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/SetReviewersCommand.java index 7fc3a406e7..ce015b63fa 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/SetReviewersCommand.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/SetReviewersCommand.java @@ -142,8 +142,6 @@ public class SetReviewersCommand extends SshCommand { String error; try { error = post.apply(changeRsrc, input).error; - } catch (ResourceNotFoundException e) { - error = String.format("could not add %s: not found", reviewer); } catch (Exception e) { error = String.format("could not add %s: %s", reviewer, e.getMessage()); }