@WebMethod("friend/show")
  public RecordSet showFriends(QueryParams qp) {
    final int DEFAULT_USER_COUNT_IN_PAGE = 20;

    FriendshipLogic fs = GlobalLogics.getFriendship();

    Context ctx = WutongContext.getContext(qp, true);
    String userId = qp.getString("user", ctx.getViewerIdString());
    String cols =
        qp.getString(
            "columns",
            "user_id, display_name, remark,perhaps_name,image_url, status, gender, in_circles, his_friend, bidi,pedding_requests,profile_privacy");
    if (cols.equals("#full")) cols = AccountLogic.USER_STANDARD_COLUMNS;
    boolean withPublicCircles = qp.getBoolean("with_public_circles", false);
    if (!withPublicCircles)
      return fs.getFriendsP(
          ctx,
          ctx.getViewerIdString(),
          userId,
          qp.getString("circles", Integer.toString(FRIENDS_CIRCLE)),
          cols,
          qp.getBoolean("in_public_circles", false),
          (int) qp.getInt("page", 0),
          (int) qp.getInt("count", DEFAULT_USER_COUNT_IN_PAGE));
    else
      return fs.getFriendsV2P(
          ctx,
          ctx.getViewerIdString(),
          userId,
          qp.getString("circles", Integer.toString(FRIENDS_CIRCLE)),
          cols,
          (int) qp.getInt("page", 0),
          (int) qp.getInt("count", DEFAULT_USER_COUNT_IN_PAGE));
  }
  @WebMethod("friend/both")
  public RecordSet getBothFriends(QueryParams qp) {
    final int DEFAULT_USER_COUNT_IN_PAGE = 20;

    FriendshipLogic fs = GlobalLogics.getFriendship();

    Context ctx = WutongContext.getContext(qp, true);
    String userId = qp.getString("user", ctx.getViewerIdString());
    return fs.getBothFriendsP(
        ctx,
        ctx.getViewerIdString(),
        userId,
        (int) qp.getInt("page", 0),
        (int) qp.getInt("count", DEFAULT_USER_COUNT_IN_PAGE));
  }
  @WebMethod("follower/show")
  public RecordSet showFollowers(QueryParams qp) {
    final int DEFAULT_USER_COUNT_IN_PAGE = 20;

    FriendshipLogic fs = GlobalLogics.getFriendship();

    Context ctx = WutongContext.getContext(qp, true);
    String userId = qp.getString("user", ctx.getViewerIdString());
    return fs.getFollowersP(
        ctx,
        ctx.getViewerIdString(),
        userId,
        qp.getString("circles", Integer.toString(FRIENDS_CIRCLE)),
        qp.getString(
            "columns",
            "user_id, display_name, remark,perhaps_name,image_url, status, gender, in_circles, his_friend, bidi,pedding_requests,profile_privacy"),
        (int) qp.getInt("page", 0),
        (int) qp.getInt("count", DEFAULT_USER_COUNT_IN_PAGE));
  }