public Response apply()

in src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java [70:127]


  public Response<?> apply(ImageResource rsrc, Input input)
      throws AuthException, ResourceConflictException, RepositoryNotFoundException, IOException,
          ResourceNotFoundException, PermissionBackendException {

    if (!permissionBackend
        .currentUser()
        .ref(rsrc.getBranchKey())
        .testOrFalse(RefPermission.DELETE)) {
      permissionBackend
          .currentUser()
          .test(new PluginPermission(pluginName, DeleteOwnImagesCapability.DELETE_OWN_IMAGES));
    }

    try (Repository r = repoManager.openRepository(rsrc.getProject())) {
      if (!permissionBackend
          .currentUser()
          .ref(rsrc.getBranchKey())
          .testOrFalse(RefPermission.DELETE)) {
        validateOwnImage(r, rsrc.getRef());
      }

      RefUpdate.Result result;
      RefUpdate u;
      try {
        u = r.updateRef(rsrc.getRef());
        u.setForceUpdate(true);
        result = u.delete();
      } catch (IOException e) {
        log.error("Cannot delete " + rsrc.getRef(), e);
        throw e;
      }

      switch (result) {
        case NEW:
        case NO_CHANGE:
        case FAST_FORWARD:
        case FORCED:
          referenceUpdated.fire(rsrc.getProject(), u, self.get().state());
          break;

        case REJECTED_CURRENT_BRANCH:
          log.warn("Cannot delete " + rsrc.getRef() + ": " + result.name());
          throw new ResourceConflictException("cannot delete current branch");

        case IO_FAILURE:
        case LOCK_FAILURE:
        case NOT_ATTEMPTED:
        case REJECTED:
        case RENAMED:
        case REJECTED_MISSING_OBJECT:
        case REJECTED_OTHER_REASON:
        default:
          log.error("Cannot delete " + rsrc.getRef() + ": " + result.name());
          throw new ResourceConflictException("cannot delete branch: " + result.name());
      }
    }
    return Response.none();
  }