From eedda8acf7f4e33ae080b0b71a175a402000704c Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Wed, 27 Jan 2016 12:11:43 -0500 Subject: [PATCH] BatchUpdate: Convert some non-REST exceptions to REST equivalents Change-Id: I1aaa72edced0b56b59c78beba5b51e375a5e6916 --- .../com/google/gerrit/server/git/BatchUpdate.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java index 3367479310..dfbf48e7d1 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/BatchUpdate.java @@ -23,6 +23,8 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ListMultimap; import com.google.common.util.concurrent.CheckedFuture; +import com.google.gerrit.extensions.restapi.ResourceConflictException; +import com.google.gerrit.extensions.restapi.ResourceNotFoundException; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.PatchSet; @@ -39,6 +41,10 @@ import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.notedb.ChangeUpdate; import com.google.gerrit.server.notedb.NotesMigration; 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.NoSuchProjectException; +import com.google.gerrit.server.project.NoSuchRefException; import com.google.inject.assistedinject.Assisted; import com.google.inject.assistedinject.AssistedInject; @@ -370,6 +376,15 @@ public class BatchUpdate implements AutoCloseable { // exceptions like ResourceConflictException to indicate an atomic update // failure. throw e; + + // Convert other common non-REST exception types with user-visible + // messages to corresponding REST exception types + } catch (InvalidChangeOperationException e) { + throw new ResourceConflictException(e.getMessage(), e); + } catch (NoSuchChangeException | NoSuchRefException + | NoSuchProjectException e) { + throw new ResourceNotFoundException(e.getMessage(), e); + } catch (Exception e) { Throwables.propagateIfPossible(e); throw new UpdateException(e);