diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt index 0e0a355389..65dd3a4041 100644 --- a/Documentation/rest-api-changes.txt +++ b/Documentation/rest-api-changes.txt @@ -956,8 +956,6 @@ Delete Draft Change ~~~~~~~~~~~~~~~~~~~ [verse] 'DELETE /changes/link:#change-id[\{change-id\}]' -or -'POST /changes/link:#change-id[\{change-id\}]/delete' Deletes a draft change. @@ -1568,8 +1566,6 @@ Delete Draft Revision ~~~~~~~~~~~~~~~~~~~~~ [verse] 'DELETE /changes/link:#change-id[\{change-id\}]/revisions/link:#revision-id[\{revision-id\}]' -or -'POST /changes/link:#change-id[\{change-id\}]/revisions/link:#revision-id[\{revision-id\}]/delete' Deletes a draft revision. diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/restapi/RestApiServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/restapi/RestApiServlet.java index d8a264821f..6e8c6f611b 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/restapi/RestApiServlet.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/restapi/RestApiServlet.java @@ -788,8 +788,12 @@ public class RestApiServlet extends HttpServlet { List p = splitProjection(projection); if (p.size() == 2) { + String viewname = p.get(1); + if (Strings.isNullOrEmpty(viewname)) { + viewname = "/"; + } RestView view = - views.get(p.get(0), method + "." + p.get(1)); + views.get(p.get(0), method + "." + viewname); if (view != null) { return new ViewData(p.get(0), view); } 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 f47c278478..7d3a01281b 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 @@ -34,7 +34,8 @@ import com.google.inject.Provider; import java.io.IOException; -public class DeleteDraftChange implements RestModifyView { +public class DeleteDraftChange implements + RestModifyView, UiAction { public static class Input { } @@ -74,26 +75,16 @@ public class DeleteDraftChange implements RestModifyView return Response.none(); } - static class Action extends DeleteDraftChange implements UiAction { - @Inject - public Action(Provider dbProvider, - GitRepositoryManager gitManager, - GitReferenceUpdated gitRefUpdated, - PatchSetInfoFactory patchSetInfoFactory) { - super(dbProvider, gitManager, gitRefUpdated, patchSetInfoFactory); - } - - @Override - public UiAction.Description getDescription(ChangeResource rsrc) { - try { - return new UiAction.Description() - .setTitle(String.format("Delete Draft Change %d", - rsrc.getChange().getChangeId())) - .setVisible(rsrc.getChange().getStatus() == Status.DRAFT - && rsrc.getControl().canDeleteDraft(dbProvider.get())); - } catch (OrmException e) { - throw new IllegalStateException(e); - } + @Override + public UiAction.Description getDescription(ChangeResource rsrc) { + try { + return new UiAction.Description() + .setTitle(String.format("Delete Draft Change %d", + rsrc.getChange().getChangeId())) + .setVisible(rsrc.getChange().getStatus() == Status.DRAFT + && rsrc.getControl().canDeleteDraft(dbProvider.get())); + } catch (OrmException e) { + throw new IllegalStateException(e); } } } 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 dd20a38bec..d4e17d6edf 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 @@ -38,7 +38,8 @@ import com.google.inject.Provider; import java.io.IOException; -public class DeleteDraftPatchSet implements RestModifyView { +public class DeleteDraftPatchSet implements RestModifyView, + UiAction { public static class Input { } @@ -80,6 +81,24 @@ public class DeleteDraftPatchSet implements RestModifyView 1); + } catch (OrmException e) { + throw new IllegalStateException(e); + } + } + private void deleteDraftPatchSet(PatchSet patchSet, Change change) throws ResourceNotFoundException, OrmException, IOException { try { @@ -139,32 +158,4 @@ public class DeleteDraftPatchSet implements RestModifyView { - @Inject - public Action(Provider dbProvider, - GitRepositoryManager gitManager, - GitReferenceUpdated gitRefUpdated, - PatchSetInfoFactory patchSetInfoFactory) { - super(dbProvider, gitManager, gitRefUpdated, patchSetInfoFactory); - } - - @Override - public UiAction.Description getDescription(RevisionResource rsrc) { - PatchSet.Id current = rsrc.getChange().currentPatchSetId(); - try { - int psCount = dbProvider.get().patchSets() - .byChange(rsrc.getChange().getId()).toList().size(); - return new UiAction.Description() - .setTitle(String.format("Delete Draft Revision %d", - rsrc.getPatchSet().getPatchSetId())) - .setVisible(rsrc.getPatchSet().isDraft() - && rsrc.getPatchSet().getId().equals(current) - && rsrc.getControl().canDeleteDraft(dbProvider.get()) - && psCount > 1); - } catch (OrmException e) { - throw new IllegalStateException(e); - } - } - } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Module.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Module.java index d292880aaf..25bd80f088 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Module.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Module.java @@ -50,7 +50,6 @@ public class Module extends RestApiModule { put(CHANGE_KIND, "topic").to(PutTopic.class); delete(CHANGE_KIND, "topic").to(PutTopic.class); delete(CHANGE_KIND).to(DeleteDraftChange.class); - post(CHANGE_KIND, "delete").to(DeleteDraftChange.Action.class); post(CHANGE_KIND, "abandon").to(Abandon.class); post(CHANGE_KIND, "publish").to(Publish.CurrentRevision.class); post(CHANGE_KIND, "restore").to(Restore.class); @@ -68,7 +67,6 @@ public class Module extends RestApiModule { post(REVISION_KIND, "cherrypick").to(CherryPick.class); get(REVISION_KIND, "commit").to(GetCommit.class); delete(REVISION_KIND).to(DeleteDraftPatchSet.class); - post(REVISION_KIND, "delete").to(DeleteDraftPatchSet.Action.class); get(REVISION_KIND, "mergeable").to(Mergeable.class); post(REVISION_KIND, "publish").to(Publish.class); get(REVISION_KIND, "related").to(GetRelated.class);