@Override
  public String revoke(
      String connectionToken,
      int item,
      ITEM_TYPE type,
      String privilege,
      String grantee,
      boolean cascade)
      throws DatabaseConnectionException, PostgreSQLException {
    ConnectionManager connMgr = new ConnectionManager();
    HttpServletRequest request = this.getThreadLocalRequest();

    String clientIP = ConnectionInfo.remoteAddr(request);
    String userAgent = request.getHeader("User-Agent");

    Privileges priv = new Privileges(connMgr.getConnection(connectionToken, clientIP, userAgent));
    try {
      return priv.revoke(item, type, privilege, grantee, cascade);
    } catch (SQLException e) {
      throw new PostgreSQLException(e.getMessage());
    }
  }