diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/account/StarredChanges.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/account/StarredChanges.java | 18 |
1 files changed, 13 insertions, 5 deletions
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 868d378a1b..3976d477df 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 @@ -20,8 +20,10 @@ import com.google.gerrit.extensions.restapi.AuthException; import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.ChildCollection; 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.RestApiException; import com.google.gerrit.extensions.restapi.RestModifyView; import com.google.gerrit.extensions.restapi.RestReadView; import com.google.gerrit.extensions.restapi.RestView; @@ -30,8 +32,11 @@ import com.google.gerrit.extensions.restapi.UnprocessableEntityException; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.StarredChangesUtil; +import com.google.gerrit.server.StarredChangesUtil.IllegalLabelException; +import com.google.gerrit.server.StarredChangesUtil.MutuallyExclusiveLabelsException; import com.google.gerrit.server.change.ChangeResource; import com.google.gerrit.server.change.ChangesCollection; +import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.server.query.change.QueryChanges; import com.google.gwtorm.server.OrmDuplicateKeyException; import com.google.gwtorm.server.OrmException; @@ -67,7 +72,7 @@ public class StarredChanges @Override public AccountResource.StarredChange parse(AccountResource parent, IdString id) - throws ResourceNotFoundException, OrmException { + throws ResourceNotFoundException, OrmException, PermissionBackendException { IdentifiedUser user = parent.getUser(); ChangeResource change = changes.parse(TopLevelResource.INSTANCE, id); if (starredChangesUtil @@ -96,7 +101,6 @@ public class StarredChanges }; } - @SuppressWarnings("unchecked") @Override public RestModifyView<AccountResource, EmptyInput> create(AccountResource parent, IdString id) throws UnprocessableEntityException { @@ -104,7 +108,7 @@ public class StarredChanges return createProvider.get().setChange(changes.parse(TopLevelResource.INSTANCE, id)); } catch (ResourceNotFoundException e) { throw new UnprocessableEntityException(String.format("change %s not found", id.get())); - } catch (OrmException e) { + } catch (OrmException | PermissionBackendException e) { log.error("cannot resolve change", e); throw new UnprocessableEntityException("internal server error"); } @@ -129,7 +133,7 @@ public class StarredChanges @Override public Response<?> apply(AccountResource rsrc, EmptyInput in) - throws AuthException, OrmException, IOException { + throws RestApiException, OrmException, IOException { if (!self.get().hasSameAccountId(rsrc.getUser())) { throw new AuthException("not allowed to add starred change"); } @@ -140,6 +144,10 @@ public class StarredChanges change.getId(), StarredChangesUtil.DEFAULT_LABELS, null); + } catch (MutuallyExclusiveLabelsException e) { + throw new ResourceConflictException(e.getMessage()); + } catch (IllegalLabelException e) { + throw new BadRequestException(e.getMessage()); } catch (OrmDuplicateKeyException e) { return Response.none(); } @@ -179,7 +187,7 @@ public class StarredChanges @Override public Response<?> apply(AccountResource.StarredChange rsrc, EmptyInput in) - throws AuthException, OrmException, IOException { + throws AuthException, OrmException, IOException, IllegalLabelException { if (!self.get().hasSameAccountId(rsrc.getUser())) { throw new AuthException("not allowed remove starred change"); } |