/**
   * Executes an action through the service facade using the specified revision.
   *
   * @param serviceFacade service facade
   * @param revision revision
   * @param authorizer authorizer
   * @param verifier verifier
   * @param action executor
   * @return the response
   */
  protected Response withWriteLock(
      final NiFiServiceFacade serviceFacade,
      final Revision revision,
      final AuthorizeAccess authorizer,
      final Runnable verifier,
      final Supplier<Response> action) {

    final NiFiUser user = NiFiUserUtils.getNiFiUser();
    return withWriteLock(
        serviceFacade,
        authorizer,
        verifier,
        action,
        () -> serviceFacade.claimRevision(revision, user),
        () -> serviceFacade.cancelRevision(revision),
        () -> serviceFacade.releaseRevisionClaim(revision, user));
  }