Merge changes I9995b57f,I4e1b61ba
* changes:
Allow to unignore own changes
Ignore/Mute REST endpoints: Don't wrap OrmException in RestApiException
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 c62c9b5b..fe665a4 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
@@ -662,10 +662,14 @@
public void ignore(boolean ignore) throws RestApiException {
// TODO(dborowitz): Convert to RetryingRestModifyView. Needs to plumb BatchUpdate.Factory into
// StarredChangesUtil.
- if (ignore) {
- this.ignore.apply(change, new Ignore.Input());
- } else {
- unignore.apply(change, new Unignore.Input());
+ try {
+ if (ignore) {
+ this.ignore.apply(change, new Ignore.Input());
+ } else {
+ unignore.apply(change, new Unignore.Input());
+ }
+ } catch (OrmException e) {
+ throw asRestApiException("Cannot ignore change", e);
}
}
@@ -682,10 +686,14 @@
public void mute(boolean mute) throws RestApiException {
// TODO(dborowitz): Convert to RetryingRestModifyView. Needs to plumb BatchUpdate.Factory into
// StarredChangesUtil.
- if (mute) {
- this.mute.apply(change, new Mute.Input());
- } else {
- unmute.apply(change, new Unmute.Input());
+ try {
+ if (mute) {
+ this.mute.apply(change, new Mute.Input());
+ } else {
+ unmute.apply(change, new Unmute.Input());
+ }
+ } catch (OrmException e) {
+ throw asRestApiException("Cannot mute change", e);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Ignore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Ignore.java
index b4143ff..11e31df 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Ignore.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Ignore.java
@@ -51,7 +51,8 @@
}
@Override
- public Response<String> apply(ChangeResource rsrc, Input input) throws RestApiException {
+ public Response<String> apply(ChangeResource rsrc, Input input)
+ throws RestApiException, OrmException {
try {
if (rsrc.isUserOwner()) {
throw new BadRequestException("cannot ignore own change");
@@ -63,8 +64,6 @@
return Response.ok("");
} catch (MutuallyExclusiveLabelsException e) {
throw new ResourceConflictException(e.getMessage());
- } catch (OrmException e) {
- throw new RestApiException("failed to ignore change", e);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mute.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mute.java
index d14fec8..c7e0603 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Mute.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Mute.java
@@ -52,16 +52,13 @@
}
@Override
- public Response<String> apply(ChangeResource rsrc, Input input) throws RestApiException {
- try {
- if (rsrc.isUserOwner() || isMuted(rsrc.getChange())) {
- // early exit for own changes and already muted changes
- return Response.ok("");
- }
- stars.mute(self.get().getAccountId(), rsrc.getProject(), rsrc.getChange());
- } catch (OrmException e) {
- throw new RestApiException("failed to mute change", e);
+ public Response<String> apply(ChangeResource rsrc, Input input)
+ throws RestApiException, OrmException {
+ if (rsrc.isUserOwner() || isMuted(rsrc.getChange())) {
+ // early exit for own changes and already muted changes
+ return Response.ok("");
}
+ stars.mute(self.get().getAccountId(), rsrc.getProject(), rsrc.getChange());
return Response.ok("");
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Unignore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Unignore.java
index 2de3375..2179ec5f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Unignore.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Unignore.java
@@ -44,24 +44,16 @@
return new UiAction.Description()
.setLabel("Unignore")
.setTitle("Unignore the change")
- .setVisible(canUnignore(rsrc));
+ .setVisible(isIgnored(rsrc));
}
@Override
- public Response<String> apply(ChangeResource rsrc, Input input) throws RestApiException {
- try {
- // Don't try to unignore own changes or not ignored changes
- if (canUnignore(rsrc)) {
- stars.unignore(rsrc);
- }
- return Response.ok("");
- } catch (OrmException e) {
- throw new RestApiException("failed to unignore change", e);
+ public Response<String> apply(ChangeResource rsrc, Input input)
+ throws RestApiException, OrmException {
+ if (isIgnored(rsrc)) {
+ stars.unignore(rsrc);
}
- }
-
- private boolean canUnignore(ChangeResource rsrc) {
- return !rsrc.isUserOwner() && isIgnored(rsrc);
+ return Response.ok("");
}
private boolean isIgnored(ChangeResource rsrc) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Unmute.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Unmute.java
index 49b41cb..d50bd20 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Unmute.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Unmute.java
@@ -53,16 +53,13 @@
}
@Override
- public Response<String> apply(ChangeResource rsrc, Input input) throws RestApiException {
- try {
- if (rsrc.isUserOwner() || !isMuted(rsrc.getChange())) {
- // early exit for own changes and not muted changes
- return Response.ok("");
- }
- stars.unmute(self.get().getAccountId(), rsrc.getProject(), rsrc.getChange());
- } catch (OrmException e) {
- throw new RestApiException("failed to unmute change", e);
+ public Response<String> apply(ChangeResource rsrc, Input input)
+ throws RestApiException, OrmException {
+ if (rsrc.isUserOwner() || !isMuted(rsrc.getChange())) {
+ // early exit for own changes and not muted changes
+ return Response.ok("");
}
+ stars.unmute(self.get().getAccountId(), rsrc.getProject(), rsrc.getChange());
return Response.ok("");
}