/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.component.facebook.data;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import facebook4j.Album;
import facebook4j.AlbumUpdate;
import facebook4j.BackdatingPostUpdate;
import facebook4j.BatchRequests;
import facebook4j.Checkin;
import facebook4j.CheckinUpdate;
import facebook4j.Comment;
import facebook4j.CommentUpdate;
import facebook4j.Domain;
import facebook4j.Event;
import facebook4j.EventUpdate;
import facebook4j.Facebook;
import facebook4j.Friendlist;
import facebook4j.GeoLocation;
import facebook4j.Group;
import facebook4j.InboxResponseList;
import facebook4j.Link;
import facebook4j.Media;
import facebook4j.Message;
import facebook4j.MilestoneUpdate;
import facebook4j.Note;
import facebook4j.Offer;
import facebook4j.OfferUpdate;
import facebook4j.Page;
import facebook4j.PageCoverUpdate;
import facebook4j.PagePhotoUpdate;
import facebook4j.PageSettingUpdate;
import facebook4j.PageUpdate;
import facebook4j.Photo;
import facebook4j.PhotoUpdate;
import facebook4j.PictureSize;
import facebook4j.Post;
import facebook4j.PostUpdate;
import facebook4j.Question;
import facebook4j.QuestionUpdate;
import facebook4j.RawAPIResponse;
import facebook4j.Reading;
import facebook4j.ResponseList;
import facebook4j.TabUpdate;
import facebook4j.TagUpdate;
import facebook4j.TestUser;
import facebook4j.User;
import facebook4j.Video;
import facebook4j.VideoUpdate;
import facebook4j.internal.org.json.JSONArray;
import org.apache.camel.component.facebook.FacebookConstants;
/**
* Enum for Facebook4J *Method interfaces.
* The methods are ordered by the number and nature of arguments.
*/
public enum FacebookMethodsType {
// AccountMethods
GET_ACCOUNTS(ResponseList.class, "getAccounts"),
GET_ACCOUNTS_WITH_OPTIONS(ResponseList.class, "getAccounts", Reading.class, FacebookConstants.READING_PROPERTY),
GET_ACCOUNTS_WITH_ID(ResponseList.class, "getAccounts", String.class, "userId"),
GET_ACCOUNTS_WITH_ID_OPTIONS(ResponseList.class, "getAccounts", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// ActivityMethods
GETACTIVITIES(ResponseList.class, "getActivities"),
GETACTIVITIES_WITH_OPTIONS(ResponseList.class, "getActivities", Reading.class, FacebookConstants.READING_PROPERTY),
GETACTIVITIES_WITH_ID(ResponseList.class, "getActivities", String.class, "userId"),
GETACTIVITIES_WITH_ID_OPTIONS(ResponseList.class, "getActivities", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// AlbumMethods
ADDALBUMPHOTO(String.class, "addAlbumPhoto", String.class, "albumId", Media.class, "source"),
ADDALBUMPHOTO_WITH_MEDIA(String.class, "addAlbumPhoto", String.class, "albumId", Media.class, "source", String.class, "message"),
COMMENTALBUM(String.class, "commentAlbum", String.class, "albumId", String.class, "message"),
COMMENTALBUM_UPDATE(String.class, "commentAlbum", String.class, "albumId", CommentUpdate.class, "commentUpdate"),
CREATEALBUM(String.class, "createAlbum", AlbumUpdate.class, "albumUpdate"),
CREATEALBUM_WITH_ID(String.class, "createAlbum", String.class, "userId", AlbumUpdate.class, "albumUpdate"),
GETALBUM(Album.class, "getAlbum", String.class, "albumId"),
GETALBUM_WITH_OPTIONS(Album.class, "getAlbum", String.class, "albumId", Reading.class, FacebookConstants.READING_PROPERTY),
GETALBUMCOMMENTS(ResponseList.class, "getAlbumComments", String.class, "albumId"),
GETALBUMCOMMENTS_WITH_OPTIONS(ResponseList.class, "getAlbumComments", String.class, "albumId", Reading.class, FacebookConstants.READING_PROPERTY),
GETALBUMCOVERPHOTO(URL.class, "getAlbumCoverPhoto", String.class, "albumId"),
GETALBUMLIKES(ResponseList.class, "getAlbumLikes", String.class, "albumId"),
GETALBUMLIKES_WITH_OPTIONS(ResponseList.class, "getAlbumLikes", String.class, "albumId", Reading.class, FacebookConstants.READING_PROPERTY),
GETALBUMPHOTOS(ResponseList.class, "getAlbumPhotos", String.class, "albumId"),
GETALBUMPHOTOS_WITH_OPTIONS(ResponseList.class, "getAlbumPhotos", String.class, "albumId", Reading.class, FacebookConstants.READING_PROPERTY),
GETALBUMS(ResponseList.class, "getAlbums"),
GETALBUMS_WITH_OPTIONS(ResponseList.class, "getAlbums", Reading.class, FacebookConstants.READING_PROPERTY),
GETALBUMS_WITH_ID(ResponseList.class, "getAlbums", String.class, "userId"),
GETALBUM_REACTIONS(ResponseList.class, "getAlbumReactions", String.class, "albumId"),
GETALBUM_REACTIONS_WITH_OPTIONS(ResponseList.class, "getAlbumReactions", String.class, "albumId", Reading.class, FacebookConstants.READING_PROPERTY),
GETALBUMS_WITH_ID_OPTIONS(ResponseList.class, "getAlbums", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKEALBUM(boolean.class, "likeAlbum", String.class, "albumId"),
UNLIKEALBUM(boolean.class, "unlikeAlbum", String.class, "albumId"),
// CheckinMethods
CHECKIN(String.class, "checkin", CheckinUpdate.class, "checkinUpdate"),
CHECKIN_WITH_ID(String.class, "checkin", String.class, "userId", CheckinUpdate.class, "checkinUpdate"),
COMMENTCHECKIN(String.class, "commentCheckin", String.class, "checkinId", String.class, "message"),
GETCHECKIN(Checkin.class, "getCheckin", String.class, "checkinId"),
GETCHECKIN_WITH_OPTIONS(Checkin.class, "getCheckin", String.class, "checkinId", Reading.class, FacebookConstants.READING_PROPERTY),
GETCHECKINCOMMENTS(ResponseList.class, "getCheckinComments", String.class, "checkinId"),
GETCHECKINCOMMENTS_WITH_OPTIONS(ResponseList.class, "getCheckinComments", String.class, "checkinId", Reading.class, FacebookConstants.READING_PROPERTY),
GETCHECKINLIKES(ResponseList.class, "getCheckinLikes", String.class, "checkinId"),
GETCHECKINLIKES_WITH_OPTIONS(ResponseList.class, "getCheckinLikes", String.class, "checkinId", Reading.class, FacebookConstants.READING_PROPERTY),
GETCHECKINS(ResponseList.class, "getCheckins"),
GETCHECKINS_WITH_OPTIONS(ResponseList.class, "getCheckins", Reading.class, FacebookConstants.READING_PROPERTY),
GETCHECKINS_WITH_ID(ResponseList.class, "getCheckins", String.class, "userId"),
GETCHECKINS_WITH_ID_OPTIONS(ResponseList.class, "getCheckins", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKECHECKIN(boolean.class, "likeCheckin", String.class, "checkinId"),
UNLIKECHECKIN(boolean.class, "unlikeCheckin", String.class, "checkinId"),
// CommentMethods
DELETECOMMENT(boolean.class, "deleteComment", String.class, "commentId"),
GETCOMMENT(Comment.class, "getComment", String.class, "commentId"),
GETCOMMENT_REPLIES(List.class, "getCommentReplies", String.class, "commentId"),
GETCOMMENT_REPLIES_WITH_OPTIONS(List.class, "getCommentReplies", String.class, "commentId", Reading.class, FacebookConstants.READING_PROPERTY),
GETCOMMENT_WITH_OPTIONS(Comment.class, "getComment", String.class, "commentId", Reading.class, FacebookConstants.READING_PROPERTY),
GETCOMMENTLIKES(ResponseList.class, "getCommentLikes", String.class, "commentId"),
GETCOMMENTLIKES_WITH_OPTIONS(ResponseList.class, "getCommentLikes", String.class, "commentId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKECOMMENT(boolean.class, "likeComment", String.class, "commentId"),
UNLIKECOMMENT(Boolean.class, "unlikeComment", String.class, "commentId"),
// ConversationMethods
GETCONVERSATIONS_WITH_OPTIONS(InboxResponseList.class, "getConversations", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GETCONVERSATIONS_WITH_ID(InboxResponseList.class, "getConversations", String.class, "pageId"),
GETCONVERSATIONS_WITH_READING(InboxResponseList.class, "getConversations", Reading.class, FacebookConstants.READING_PROPERTY),
GETCONVERSATIONS(InboxResponseList.class, "getConversations"),
GETCONVERSATION(InboxResponseList.class, "getConversation", String.class, "conversationId"),
GETCONVERSATION_WITH_OPTIONS(InboxResponseList.class, "getConversation", String.class, "conversationId", Reading.class, FacebookConstants.READING_PROPERTY),
ANSWERCONVERSATION(String.class, "answerConversation", String.class, "conversationId", String.class, "conversation"),
// DomainMethods
GETDOMAIN(Domain.class, "getDomain", String.class, "domainId"),
GETDOMAINBYNAME(Domain.class, "getDomainByName", String.class, "domainName"),
GETDOMAINSBYNAME_WITH_DOMAINS(List.class, "getDomainsByName", new String[0].getClass(), "domainNames"),
// EventMethods
CREATEEVENT(String.class, "createEvent", EventUpdate.class, "eventUpdate"),
CREATEEVENT_WITH_ID(String.class, "createEvent", String.class, "userId", EventUpdate.class, "eventUpdate"),
DELETEEVENT(Boolean.class, "deleteEvent", String.class, "eventId"),
DELETEEVENTPICTURE(Boolean.class, "deleteEventPicture", String.class, "eventId"),
EDITEVENT(Boolean.class, "editEvent", String.class, "eventId", EventUpdate.class, "eventUpdate"),
GETEVENT(Event.class, "getEvent", String.class, "eventId"),
GETEVENT_WITH_OPTIONS(Event.class, "getEvent", String.class, "eventId", Reading.class, FacebookConstants.READING_PROPERTY),
GETEVENTPHOTOS(ResponseList.class, "getEventPhotos", String.class, "eventId"),
GETEVENTPHOTOS_WITH_OPTIONS(ResponseList.class, "getEventPhotos", String.class, "eventId", Reading.class, FacebookConstants.READING_PROPERTY),
GETEVENTPICTUREURL(URL.class, "getEventPictureURL", String.class, "eventId"),
GETEVENTPICTUREURL_WITH_PICTURESIZE(URL.class, "getEventPictureURL", String.class, "eventId", PictureSize.class, "size"),
GETEVENTS(ResponseList.class, "getEvents"),
GETEVENTS_WITH_OPTIONS(ResponseList.class, "getEvents", Reading.class, FacebookConstants.READING_PROPERTY),
GETEVENTS_WITH_ID(ResponseList.class, "getEvents", String.class, "userId"),
GETEVENTS_WITH_ID_OPTIONS(ResponseList.class, "getEvents", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETEVENTVIDEOS(ResponseList.class, "getEventVideos", String.class, "eventId"),
GETEVENTVIDEOS_WITH_OPTIONS(ResponseList.class, "getEventVideos", String.class, "eventId", Reading.class, FacebookConstants.READING_PROPERTY),
GETRSVPSTATUSASINVITED(ResponseList.class, "getRSVPStatusAsInvited", String.class, "eventId"),
GETRSVPSTATUSASINVITED_WITH_ID(ResponseList.class, "getRSVPStatusAsInvited", String.class, "eventId", String.class, "userId"),
GETRSVPSTATUSASNOREPLY(ResponseList.class, "getRSVPStatusAsNoreply", String.class, "eventId"),
GETRSVPSTATUSASNOREPLY_WITH_ID(ResponseList.class, "getRSVPStatusAsNoreply", String.class, "eventId", String.class, "userId"),
GETRSVPSTATUSINATTENDING(ResponseList.class, "getRSVPStatusInAttending", String.class, "eventId"),
GETRSVPSTATUSINATTENDING_WITH_ID(ResponseList.class, "getRSVPStatusInAttending", String.class, "eventId", String.class, "userId"),
GETRSVPSTATUSINDECLINED(ResponseList.class, "getRSVPStatusInDeclined", String.class, "eventId"),
GETRSVPSTATUSINDECLINED_WITH_ID(ResponseList.class, "getRSVPStatusInDeclined", String.class, "eventId", String.class, "userId"),
GETRSVPSTATUSINMAYBE(ResponseList.class, "getRSVPStatusInMaybe", String.class, "eventId"),
GETRSVPSTATUSINMAYBE_WITH_ID(ResponseList.class, "getRSVPStatusInMaybe", String.class, "eventId", String.class, "userId"),
INVITETOEVENT(Boolean.class, "inviteToEvent", String.class, "eventId", String.class, "userId"),
INVITETOEVENT_WITH_IDS(Boolean.class, "inviteToEvent", String.class, "eventId", new String[0].getClass(), "userIds"),
POSTEVENTLINK_WITH_LINK(String.class, "postEventLink", String.class, "eventId", URL.class, "link"),
POSTEVENTLINK_WITH_LINK_MSG(String.class, "postEventLink", String.class, "eventId", URL.class, "link", String.class, "message"),
POSTEVENTPHOTO_WITH_MEDIA(String.class, "postEventPhoto", String.class, "eventId", Media.class, "source"),
POSTEVENTPHOTO_WITH_MEDIA_MSG(String.class, "postEventPhoto", String.class, "eventId", Media.class, "source", String.class, "message"),
POSTEVENTSTATUSMESSAGE_WITH_MSG(String.class, "postEventStatusMessage", String.class, "eventId", String.class, "message"),
POSTEVENTVIDEO_WITH_MEDIA(String.class, "postEventVideo", String.class, "eventId", Media.class, "source"),
POSTEVENTVIDEO_WITH_MEDIA_TITLE_DESC(String.class, "postEventVideo", String.class, "eventId", Media.class, "source", String.class, "title", String.class, "description"),
RSVPEVENTASATTENDING(Boolean.class, "rsvpEventAsAttending", String.class, "eventId"),
RSVPEVENTASDECLINED(Boolean.class, "rsvpEventAsDeclined", String.class, "eventId"),
RSVPEVENTASMAYBE(Boolean.class, "rsvpEventAsMaybe", String.class, "eventId"),
UNINVITEFROMEVENT(Boolean.class, "uninviteFromEvent", String.class, "eventId", String.class, "userId"),
UPDATEEVENTPICTURE(Boolean.class, "updateEventPicture", String.class, "eventId", Media.class, "source"),
// FamilyMethods
GETFAMILY(ResponseList.class, "getFamily"),
GETFAMILY_WITH_OPTIONS(ResponseList.class, "getFamily", Reading.class, FacebookConstants.READING_PROPERTY),
GETFAMILY_WITH_ID(ResponseList.class, "getFamily", String.class, "userId"),
GETFAMILY_WITH_ID_OPTIONS(ResponseList.class, "getFamily", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// FavouriteMethods
GETBOOKS(ResponseList.class, "getBooks"),
GETBOOKS_WITH_OPTIONS(ResponseList.class, "getBooks", Reading.class, FacebookConstants.READING_PROPERTY),
GETBOOKS_WITH_ID(ResponseList.class, "getBooks", String.class, "userId"),
GETBOOKS_WITH_ID_OPTIONS(ResponseList.class, "getBooks", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETGAMES(ResponseList.class, "getGames"),
GETGAMES_WITH_OPTIONS(ResponseList.class, "getGames", Reading.class, FacebookConstants.READING_PROPERTY),
GETGAMES_WITH_ID(ResponseList.class, "getGames", String.class, "userId"),
GETGAMES_WITH_ID_OPTIONS(ResponseList.class, "getGames", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETINTERESTS(ResponseList.class, "getInterests"),
GETINTERESTS_WITH_ID(ResponseList.class, "getInterests", String.class, "userId"),
GETINTERESTS_WITH_OPTIONS(ResponseList.class, "getInterests", Reading.class, FacebookConstants.READING_PROPERTY),
GETINTERESTS_WITH_ID_OPTIONS(ResponseList.class, "getInterests", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETMOVIES(ResponseList.class, "getMovies"),
GETMOVIES_WITH_OPTIONS(ResponseList.class, "getMovies", Reading.class, FacebookConstants.READING_PROPERTY),
GETMOVIES_WITH_ID(ResponseList.class, "getMovies", String.class, "userId"),
GETMOVIES_WITH_ID_OPTIONS(ResponseList.class, "getMovies", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETMUSIC(ResponseList.class, "getMusic"),
GETMUSIC_WITH_OPTIONS(ResponseList.class, "getMusic", Reading.class, FacebookConstants.READING_PROPERTY),
GETMUSIC_WITH_ID(ResponseList.class, "getMusic", String.class, "userId"),
GETMUSIC_WITH_ID_OPTIONS(ResponseList.class, "getMusic", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETTELEVISION(ResponseList.class, "getTelevision"),
GETTELEVISION_WITH_OPTIONS(ResponseList.class, "getTelevision", Reading.class, FacebookConstants.READING_PROPERTY),
GETTELEVISION_WITH_ID(ResponseList.class, "getTelevision", String.class, "userId"),
GETTELEVISION_WITH_ID_OPTIONS(ResponseList.class, "getTelevision", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// FQLMethods
EXECUTEFQL(JSONArray.class, "executeFQL", String.class, "query"),
EXECUTEFQL_WITH_LOCALE(JSONArray.class, "executeFQL", String.class, "query", Locale.class, " locale"),
EXECUTEMULTIFQL(Map.class, "executeMultiFQL", Map.class, "queries"),
EXECUTEMULTIFQL_WITH_LOCALE(Map.class, "executeMultiFQL", Map.class, "queries", Locale.class, "locale"),
// FriendMethods
ADDFRIENDLISTMEMBER(Boolean.class, "addFriendlistMember", String.class, "friendlistId", String.class, "userId"),
CREATEFRIENDLIST(String.class, "createFriendlist", String.class, "friendlistName"),
CREATEFRIENDLIST_WITH_ID(String.class, "createFriendlist", String.class, "userId", String.class, "friendlistName"),
DELETEFRIENDLISTMEMBER(Boolean.class, "deleteFriendlistMember", String.class, "friendlistId", String.class, "userId"),
DELETEFRIENDLIST(Boolean.class, "deleteFriendlist", String.class, "friendlistId"),
GETBELONGSFRIEND(ResponseList.class, "getBelongsFriend", String.class, "friendId"),
GETBELONGSFRIEND_WITH_OPTIONS(ResponseList.class, "getBelongsFriend", String.class, "friendId", Reading.class, FacebookConstants.READING_PROPERTY),
GETBELONGSFRIEND_WITH_ID(ResponseList.class, "getBelongsFriend", String.class, "userId", String.class, "friendId"),
GETBELONGSFRIEND_WITH_ID_OPTIONS(ResponseList.class, "getBelongsFriend", String.class, "userId", String.class, "friendId", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDLIST(Friendlist.class, "getFriendlist", String.class, "friendlistId"),
GETFRIENDLIST_WITH_OPTIONS(Friendlist.class, "getFriendlist", String.class, "friendlistId", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDLISTMEMBERS(ResponseList.class, "getFriendlistMembers", String.class, "friendlistId"),
GETFRIENDLISTS(ResponseList.class, "getFriendlists"),
GETFRIENDLISTS_WITH_OPTIONS(ResponseList.class, "getFriendlists", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDLISTS_WITH_ID(ResponseList.class, "getFriendlists", String.class, "userId"),
GETFRIENDLISTS_WITH_ID_OPTIONS(ResponseList.class, "getFriendlists", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDREQUESTS(ResponseList.class, "getFriendRequests"),
GETFRIENDREQUESTS_WITH_OPTIONS(ResponseList.class, "getFriendRequests", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDREQUESTS_WITH_ID(ResponseList.class, "getFriendRequests", String.class, "userId"),
GETFRIENDREQUESTS_WITH_ID_OPTIONS(ResponseList.class, "getFriendRequests", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDS(ResponseList.class, "getFriends"),
GETFRIENDS_WITH_OPTIONS(ResponseList.class, "getFriends", Reading.class, FacebookConstants.READING_PROPERTY),
GETFRIENDS_WITH_ID(ResponseList.class, "getFriends", String.class, "userId"),
GETFRIENDS_WITH_ID_OPTIONS(ResponseList.class, "getFriends", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGGABLEFRIENDS(ResponseList.class, "getTaggableFriends"),
GETTAGGABLEFRIENDS_WITH_ID(ResponseList.class, "getTaggableFriends", String.class, "userId"),
GETTAGGABLEFRIENDS_WITH_OPTIONS(ResponseList.class, "getTaggableFriends", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGGABLEFRIENDS_WITH_ID_OPTIONS(ResponseList.class, "getTaggableFriends", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETMUTUALFRIENDS(ResponseList.class, "getMutualFriends", String.class, "friendUserId"),
GETMUTUALFRIENDS_WITH_OPTIONS(ResponseList.class, "getMutualFriends", String.class, "friendUserId", Reading.class, FacebookConstants.READING_PROPERTY),
GETMUTUALFRIENDS_WITH_ID(ResponseList.class, "getMutualFriends", String.class, "userId1", String.class, "userId2"),
GETMUTUALFRIENDS_WITH_ID_OPTIONS(ResponseList.class, "getMutualFriends", String.class, "userId1", String.class, "userId2", Reading.class, FacebookConstants.READING_PROPERTY),
REMOVEFRIENDLISTMEMBER(Boolean.class, "removeFriendlistMember", String.class, "friendlistId", String.class, "userId"),
// GameMethods
DELETEACHIEVEMENT(Boolean.class, "deleteAchievement", URL.class, "achievementURL"),
DELETEACHIEVEMENT_WITH_ID(Boolean.class, "deleteAchievement", String.class, "userId", URL.class, "achievementURL"),
DELETESCORE(Boolean.class, "deleteScore"),
DELETESCORE_WITH_ID(Boolean.class, "deleteScore", String.class, "userId"),
GETACHIEVEMENTS(ResponseList.class, "getAchievements"),
GETACHIEVEMENTS_WITH_OPTIONS(ResponseList.class, "getAchievements", Reading.class, FacebookConstants.READING_PROPERTY),
GETACHIEVEMENTS_WITH_ID(ResponseList.class, "getAchievements", String.class, "userId"),
GETACHIEVEMENTS_WITH_ID_OPTIONS(ResponseList.class, "getAchievements", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETSCORES(ResponseList.class, "getScores"),
GETSCORES_WITH_OPTIONS(ResponseList.class, "getScores", Reading.class, FacebookConstants.READING_PROPERTY),
GETSCORES_WITH_ID(ResponseList.class, "getScores", String.class, "userId"),
GETSCORES_WITH_ID_OPTIONS(ResponseList.class, "getScores", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
POSTACHIEVEMENT(String.class, "postAchievement", URL.class, "achievementURL"),
POSTACHIEVEMENT_WITH_ID(String.class, "postAchievement", String.class, "userId", URL.class, "achievementURL"),
POSTSCORE(Boolean.class, "postScore", int.class, "scoreValue"),
POSTSCORE_WITH_ID(Boolean.class, "postScore", String.class, "userId", int.class, "scoreValue"),
// GroupMethods
GETGROUP(Group.class, "getGroup", String.class, "groupId"),
GETGROUP_WITH_OPTIONS(Group.class, "getGroup", String.class, "groupId", Reading.class, FacebookConstants.READING_PROPERTY),
GETGROUPDOCS(ResponseList.class, "getGroupDocs", String.class, "groupId"),
GETGROUPDOCS_WITH_OPTIONS(ResponseList.class, "getGroupDocs", String.class, "groupId", Reading.class, FacebookConstants.READING_PROPERTY),
GETGROUPFEED(ResponseList.class, "getGroupFeed", String.class, "groupId"),
GETGROUPFEED_WITH_OPTIONS(ResponseList.class, "getGroupFeed", String.class, "groupId", Reading.class, FacebookConstants.READING_PROPERTY),
GETGROUPMEMBERS(ResponseList.class, "getGroupMembers", String.class, "groupId"),
GETGROUPMEMBERS_WITH_OPTIONS(ResponseList.class, "getGroupMembers", String.class, "groupId", Reading.class, FacebookConstants.READING_PROPERTY),
GETGROUPPICTUREURL(URL.class, "getGroupPictureURL", String.class, "groupId"),
GETGROUPS(ResponseList.class, "getGroups"),
GETGROUPS_WITH_OPTIONS(ResponseList.class, "getGroups", Reading.class, FacebookConstants.READING_PROPERTY),
GETGROUPS_WITH_ID(ResponseList.class, "getGroups", String.class, "userId"),
GETGROUPS_WITH_ID_OPTIONS(ResponseList.class, "getGroups", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
POSTGROUPFEED_WITH_POSTUPDATE(String.class, "postGroupFeed", String.class, "groupId", PostUpdate.class, "postUpdate"),
POSTGROUPLINK_WITH_LINK(String.class, "postGroupLink", String.class, "groupId", URL.class, "link"),
POSTGROUPLINK_WITH_LINK_MSG(String.class, "postGroupLink", String.class, "groupId", URL.class, "link", String.class, "message"),
POSTGROUPSTATUSMESSAGE(String.class, "postGroupStatusMessage", String.class, "groupId", String.class, "message"),
// InsightMethods
GETINSIGHTS(ResponseList.class, "getInsights", String.class, "objectId", String.class, "metric"),
GETINSIGHTS_WITH_OPTIONS(ResponseList.class, "getInsights", String.class, "objectId", String.class, "metric", Reading.class, FacebookConstants.READING_PROPERTY),
// LikeMethods
GETUSERLIKES(ResponseList.class, "getUserLikes"),
GETUSERLIKES_WITH_OPTIONS(ResponseList.class, "getUserLikes", Reading.class, FacebookConstants.READING_PROPERTY),
GETUSERLIKES_WITH_ID(ResponseList.class, "getUserLikes", String.class, "userId"),
GETUSERLIKES_WITH_ID_OPTIONS(ResponseList.class, "getUserLikes", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// LinkMethods
COMMENTLINK(String.class, "commentLink", String.class, "linkId", String.class, "message"),
COMMENTLINK_UPDATE(String.class, "commentLink", String.class, "linkId", CommentUpdate.class, "commentUpdate"),
GETLINK(Link.class, "getLink", String.class, "linkId"),
GETLINK_WITH_OPTIONS(Link.class, "getLink", String.class, "linkId", Reading.class, FacebookConstants.READING_PROPERTY),
GETLINKCOMMENTS(ResponseList.class, "getLinkComments", String.class, "linkId"),
GETLINKCOMMENTS_WITH_OPTIONS(ResponseList.class, "getLinkComments", String.class, "linkId", Reading.class, FacebookConstants.READING_PROPERTY),
GETLINKLIKES(ResponseList.class, "getLinkLikes", String.class, "linkId"),
GETLINKLIKES_WITH_OPTIONS(ResponseList.class, "getLinkLikes", String.class, "linkId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKELINK(Boolean.class, "likeLink", String.class, "linkId"),
UNLIKELINK(Boolean.class, "unlikeLink", String.class, "linkId"),
// LocationMethods
GETLOCATIONS(ResponseList.class, "getLocations"),
GETLOCATIONS_WITH_OPTIONS(ResponseList.class, "getLocations", Reading.class, FacebookConstants.READING_PROPERTY),
GETLOCATIONS_WITH_ID(ResponseList.class, "getLocations", String.class, "userId"),
GETLOCATIONS_WITH_ID_OPTIONS(ResponseList.class, "getLocations", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGGEDPLACES(ResponseList.class, "getTaggedPlaces"),
GETTAGGEDPLACES_OPTIONS(ResponseList.class, "getTaggedPlaces", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGGEDPLACES_WITH_ID(ResponseList.class, "getTaggedPlaces", String.class, "userId"),
GETTAGGEDPLACES_WITH_ID_OPTIONS(ResponseList.class, "getTaggedPlaces", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// MessageMethods
GETINBOX(InboxResponseList.class, "getInbox"),
GETINBOX_WITH_OPTIONS(InboxResponseList.class, "getInbox", Reading.class, FacebookConstants.READING_PROPERTY),
GETINBOX_WITH_ID(InboxResponseList.class, "getInbox", String.class, "userId"),
GETINBOX_WITH_ID_OPTIONS(InboxResponseList.class, "getInbox", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETMESSAGE(Message.class, "getMessage", String.class, "messageId"),
GETMESSAGE_WITH_OPTIONS(Message.class, "getMessage", String.class, "messageId", Reading.class, FacebookConstants.READING_PROPERTY),
GETOUTBOX(ResponseList.class, "getOutbox"),
GETOUTBOX_WITH_OPTIONS(ResponseList.class, "getOutbox", Reading.class, FacebookConstants.READING_PROPERTY),
GETOUTBOX_WITH_ID(ResponseList.class, "getOutbox", String.class, "userId"),
GETOUTBOX_WITH_ID_OPTIONS(ResponseList.class, "getOutbox", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETUPDATES(ResponseList.class, "getUpdates"),
GETUPDATES_WITH_OPTIONS(ResponseList.class, "getUpdates", Reading.class, FacebookConstants.READING_PROPERTY),
GETUPDATES_WITH_ID(ResponseList.class, "getUpdates", String.class, "userId"),
GETUPDATES_WITH_ID_OPTIONS(ResponseList.class, "getUpdates", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// NoteMethods
COMMENTNOTE(String.class, "commentNote", String.class, "noteId", String.class, "message"),
CREATENOTE(String.class, "createNote", String.class, "subject", String.class, "message"),
CREATENOTE_WITH_ID_MSG(String.class, "createNote", String.class, "userId", String.class, "subject", String.class, "message"),
GETNOTE(Note.class, "getNote", String.class, "noteId"),
GETNOTE_WITH_OPTIONS(Note.class, "getNote", String.class, "noteId", Reading.class, FacebookConstants.READING_PROPERTY),
GETNOTECOMMENTS(ResponseList.class, "getNoteComments", String.class, "noteId"),
GETNOTECOMMENTS_WITH_OPTIONS(ResponseList.class, "getNoteComments", String.class, "noteId", Reading.class, FacebookConstants.READING_PROPERTY),
GETNOTELIKES(ResponseList.class, "getNoteLikes", String.class, "noteId"),
GETNOTELIKES_WITH_OPTIONS(ResponseList.class, "getNoteLikes", String.class, "noteId", Reading.class, FacebookConstants.READING_PROPERTY),
GETNOTES(ResponseList.class, "getNotes"),
GETNOTES_WITH_OPTIONS(ResponseList.class, "getNotes", Reading.class, FacebookConstants.READING_PROPERTY),
GETNOTES_WITH_ID(ResponseList.class, "getNotes", String.class, "userId"),
GETNOTES_WITH_ID_OPTIONS(ResponseList.class, "getNotes", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKENOTE(Boolean.class, "likeNote", String.class, "noteId"),
UNLIKENOTE(Boolean.class, "unlikeNote", String.class, "noteId"),
// NotificationMethods
GETNOTIFICATIONS(ResponseList.class, "getNotifications"),
GETNOTIFICATIONS_WITH_INCLUDEREAD(ResponseList.class, "getNotifications", boolean.class, "includeRead"),
GETNOTIFICATIONS_WITH_OPTIONS(ResponseList.class, "getNotifications", Reading.class, FacebookConstants.READING_PROPERTY),
GETNOTIFICATIONS_WITH_OPTIONS_INCLUDEREAD(ResponseList.class, "getNotifications", Reading.class, FacebookConstants.READING_PROPERTY, boolean.class, "includeRead"),
GETNOTIFICATIONS_WITH_ID(ResponseList.class, "getNotifications", String.class, "userId"),
GETNOTIFICATIONS_WITH_ID_INCLUDEREAD(ResponseList.class, "getNotifications", String.class, "userId", boolean.class, "includeRead"),
GETNOTIFICATIONS_WITH_ID_OPTIONS(ResponseList.class, "getNotifications", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETNOTIFICATIONS_WITH_ID_OPTIONS_INCLUDEREAD(ResponseList.class, "getNotifications", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY, boolean.class, "includeRead"),
MARKNOTIFICATIONASREAD(Boolean.class, "markNotificationAsRead", String.class, "notificationId"),
// PermissionMethods
DELETEALLPERMISSIONS(Boolean.class, "deleteAllPermissions"),
DELETEALLPERMISSIONS_WITH_ID(Boolean.class, "deleteAllPermissions", String.class, "userId"),
GETPERMISSIONS(List.class, "getPermissions"),
GETPERMISSIONS_WITH_ID(List.class, "getPermissions", String.class, "userId"),
REVOKEPERMISSION(Boolean.class, "revokePermission", String.class, "permissionName"),
REVOKEPERMISSION_WITH_ID(Boolean.class, "revokePermission", String.class, "userId", String.class, "permissionName"),
REVOKEALLPERMISSIONS(Boolean.class, "revokeAllPermissions"),
REVOKEALLPERMISSIONS_WITH_ID(Boolean.class, "revokeAllPermissions", String.class, "userId"),
// PhotoMethods
ADDTAGTOPHOTO(Boolean.class, "addTagToPhoto", String.class, "photoId", String.class, "toUserId"),
ADDTAGTOPHOTO_WITH_IDS(Boolean.class, "addTagToPhoto", String.class, "photoId", List.class, "toUserIds"),
ADDTAGTOPHOTO_WITH_TAGUPDATE(Boolean.class, "addTagToPhoto", String.class, "photoId", TagUpdate.class, "tagUpdate"),
COMMENTPHOTO(String.class, "commentPhoto", String.class, "photoId", String.class, "message"),
COMMENTPHOTO_UPDATE(String.class, "commentPhoto", String.class, "photoId", CommentUpdate.class, "commentUpdate"),
DELETEPHOTO(Boolean.class, "deletePhoto", String.class, "photoId"),
GETPHOTO(Photo.class, "getPhoto", String.class, "photoId"),
GETPHOTO_WITH_OPTIONS(Photo.class, "getPhoto", String.class, "photoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPHOTOCOMMENTS(ResponseList.class, "getPhotoComments", String.class, "photoId"),
GETPHOTOCOMMENTS_WITH_OPTIONS(ResponseList.class, "getPhotoComments", String.class, "photoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPHOTOLIKES(ResponseList.class, "getPhotoLikes", String.class, "photoId"),
GETPHOTOLIKES_WITH_OPTIONS(ResponseList.class, "getPhotoLikes", String.class, "photoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPHOTOS(ResponseList.class, "getPhotos"),
GETPHOTOS_WITH_OPTIONS(ResponseList.class, "getPhotos", Reading.class, FacebookConstants.READING_PROPERTY),
GETPHOTOS_WITH_ID(ResponseList.class, "getPhotos", String.class, "userId"),
GETPHOTOS_WITH_ID_OPTIONS(ResponseList.class, "getPhotos", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPHOTO_REACTIONS(ResponseList.class, "getPhotoReactions", String.class, "photoId"),
GETPHOTO_REACTIONS_WITH_OPTIONS(ResponseList.class, "getPhotoReactions", String.class, "photoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPHOTOURL(URL.class, "getPhotoURL", String.class, "photoId"),
GETPHOTOSHAREDPOSTS(ResponseList.class, "getPhotoSharedposts", String.class, "photoId"),
GETPHOTOSHAREDPOSTS_WITH_OPTIONS(ResponseList.class, "getPhotoSharedposts", String.class, "photoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGSONPHOTO(ResponseList.class, "getTagsOnPhoto", String.class, "photoId"),
GETTAGSONPHOTO_WITH_OPTIONS(ResponseList.class, "getTagsOnPhoto", String.class, "photoId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKEPHOTO(Boolean.class, "likePhoto", String.class, "photoId"),
POSTPHOTO(String.class, "postPhoto", Media.class, "source"),
POSTPHOTO_WITH_MEDIA(String.class, "postPhoto", String.class, "userId", Media.class, "source"),
UNLIKEPHOTO(Boolean.class, "unlikePhoto", String.class, "photoId"),
UPDATETAGONPHOTO_WITH_TAGUPDATE(Boolean.class, "updateTagOnPhoto", String.class, "photoId", TagUpdate.class, "tagUpdate"),
// PokeMethods
GETPOKES(ResponseList.class, "getPokes"),
GETPOKES_WITH_OPTIONS(ResponseList.class, "getPokes", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOKES_WITH_ID(ResponseList.class, "getPokes", String.class, "userId"),
GETPOKES_WITH_ID_OPTIONS(ResponseList.class, "getPokes", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// PostMethods
COMMENTPOST(String.class, "commentPost", String.class, "postId", String.class, "message"),
COMMENTPOST_UPDATE(String.class, "commentPost", String.class, "postId", CommentUpdate.class, "commentUpdate"),
DELETEPOST(Boolean.class, "deletePost", String.class, "postId"),
GETFEED(ResponseList.class, "getFeed"),
GETFEED_WITH_OPTIONS(ResponseList.class, "getFeed", Reading.class, FacebookConstants.READING_PROPERTY),
GETFEED_WITH_ID(ResponseList.class, "getFeed", String.class, "userId"),
GETFEED_WITH_ID_OPTIONS(ResponseList.class, "getFeed", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETHOME(ResponseList.class, "getHome"),
GETHOME_WITH_OPTIONS(ResponseList.class, "getHome", Reading.class, FacebookConstants.READING_PROPERTY),
GETLINKS(ResponseList.class, "getLinks"),
GETLINKS_WITH_OPTIONS(ResponseList.class, "getLinks", Reading.class, FacebookConstants.READING_PROPERTY),
GETLINKS_WITH_ID(ResponseList.class, "getLinks", String.class, "userId"),
GETLINKS_WITH_ID_OPTIONS(ResponseList.class, "getLinks", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOST(Post.class, "getPost", String.class, "postId"),
GETPOST_WITH_OPTIONS(Post.class, "getPost", String.class, "postId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOST_REACTIONS(ResponseList.class, "getPostReactions", String.class, "postId"),
GETPOST_REACTIONS_WITH_OPTIONS(ResponseList.class, "getPostReactions", String.class, "postId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOSTCOMMENTS(ResponseList.class, "getPostComments", String.class, "postId"),
GETPOSTCOMMENTS_WITH_OPTIONS(ResponseList.class, "getPostComments", String.class, "postId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOSTLIKES(ResponseList.class, "getPostLikes", String.class, "postId"),
GETPOSTLIKES_WITH_OPTIONS(ResponseList.class, "getPostLikes", String.class, "postId", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOSTS(ResponseList.class, "getPosts"),
GETPOSTS_WITH_OPTIONS(ResponseList.class, "getPosts", Reading.class, FacebookConstants.READING_PROPERTY),
GETPOSTS_WITH_ID(ResponseList.class, "getPosts", String.class, "userId"),
GETPOSTS_WITH_ID_OPTIONS(ResponseList.class, "getPosts", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETSHAREDPOSTS(ResponseList.class, "getSharedPosts", String.class, "postId"),
GETSHAREDPOSTS_WITH_OPTIONS(ResponseList.class, "getSharedPosts", String.class, "postId", Reading.class, FacebookConstants.READING_PROPERTY),
GETSTATUSES(ResponseList.class, "getStatuses"),
GETSTATUSES_WITH_OPTIONS(ResponseList.class, "getStatuses", Reading.class, FacebookConstants.READING_PROPERTY),
GETSTATUSES_WITH_ID(ResponseList.class, "getStatuses", String.class, "userId"),
GETSTATUSES_WITH_ID_OPTIONS(ResponseList.class, "getStatuses", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGGED(ResponseList.class, "getTagged"),
GETTAGGED_WITH_OPTIONS(ResponseList.class, "getTagged", Reading.class, FacebookConstants.READING_PROPERTY),
GETTAGGED_WITH_ID(ResponseList.class, "getTagged", String.class, "userId"),
GETTAGGED_WITH_ID_OPTIONS(ResponseList.class, "getTagged", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKEPOST(Boolean.class, "likePost", String.class, "postId"),
POSTFEED(String.class, "postFeed", PostUpdate.class, "postUpdate"),
POSTFEED_WITH_POSTUPDATE(String.class, "postFeed", String.class, "userId", PostUpdate.class, "postUpdate"),
POSTLINK(String.class, "postLink", URL.class, "link"),
POSTLINK_WITH_MSG(String.class, "postLink", URL.class, "link", String.class, "message"),
POSTLINK_WITH_ID(String.class, "postLink", String.class, "userId", URL.class, "link"),
POSTLINK_WITH_ID_MSG(String.class, "postLink", String.class, "userId", URL.class, "link", String.class, "message"),
POSTSTATUSMESSAGE(String.class, "postStatusMessage", String.class, "message"),
POSTSTATUSMESSAGE_WITH_ID(String.class, "postStatusMessage", String.class, "userId", String.class, "message"),
UNLIKEPOST(Boolean.class, "unlikePost", String.class, "postId"),
// QuestionMethods
ADDQUESTIONOPTION(String.class, "addQuestionOption", String.class, "questionId", String.class, "optionDescription"),
DELETEQUESTION(Boolean.class, "deleteQuestion", String.class, "questionId"),
GETQUESTION(Question.class, "getQuestion", String.class, "questionId"),
GETQUESTION_WITH_OPTIONS(Question.class, "getQuestion", String.class, "questionId", Reading.class, FacebookConstants.READING_PROPERTY),
GETQUESTIONOPTIONS(ResponseList.class, "getQuestionOptions", String.class, "questionId"),
GETQUESTIONOPTIONS_WITH_OPTIONS(ResponseList.class, "getQuestionOptions", String.class, "questionId", Reading.class, FacebookConstants.READING_PROPERTY),
GETQUESTIONOPTIONVOTES(ResponseList.class, "getQuestionOptionVotes", String.class, "questionId"),
GETQUESTIONS(ResponseList.class, "getQuestions"),
GETQUESTIONS_WITH_OPTIONS(ResponseList.class, "getQuestions", Reading.class, FacebookConstants.READING_PROPERTY),
GETQUESTIONS_WITH_ID(ResponseList.class, "getQuestions", String.class, "userId"),
GETQUESTIONS_WITH_ID_OPTIONS(ResponseList.class, "getQuestions", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// SubscribeMethods
GETSUBSCRIBEDTO(ResponseList.class, "getSubscribedto"),
GETSUBSCRIBEDTO_WITH_OPTIONS(ResponseList.class, "getSubscribedto", Reading.class, FacebookConstants.READING_PROPERTY),
GETSUBSCRIBEDTO_WITH_ID(ResponseList.class, "getSubscribedto", String.class, "userId"),
GETSUBSCRIBEDTO_WITH_ID_OPTIONS(ResponseList.class, "getSubscribedto", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETSUBSCRIBERS(ResponseList.class, "getSubscribers"),
GETSUBSCRIBERS_WITH_OPTIONS(ResponseList.class, "getSubscribers", Reading.class, FacebookConstants.READING_PROPERTY),
GETSUBSCRIBERS_WITH_ID(ResponseList.class, "getSubscribers", String.class, "userId"),
GETSUBSCRIBERS_WITH_ID_OPTIONS(ResponseList.class, "getSubscribers", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
// TestUserMethods
CREATETESTUSER(TestUser.class, "createTestUser", String.class, "appId"),
CREATETESTUSER_WITH_NAME(TestUser.class, "createTestUser", String.class, "appId", String.class, "name", String.class, "userLocale", String.class, "permissions"),
DELETETESTUSER(Boolean.class, "deleteTestUser", String.class, "testUserId"),
GETTESTUSERS(List.class, "getTestUsers", String.class, "appId"),
MAKEFRIENDTESTUSER(Boolean.class, "makeFriendTestUser", TestUser.class, "testUser1", TestUser.class, "testUser2"),
// UserMethods
GETME(User.class, "getMe"),
GETME_WITH_OPTIONS(User.class, "getMe", Reading.class, FacebookConstants.READING_PROPERTY),
GETPICTUREURL(URL.class, "getPictureURL"),
GETPICTUREURL_WITH_DIM(URL.class, "getPictureURL", int.class, "pictureId", int.class, "pictureId2"),
GETPICTUREURL_WITH_PICTURESIZE(URL.class, "getPictureURL", PictureSize.class, "size"),
GETPICTUREURL_WITH_ID(URL.class, "getPictureURL", String.class, "userId"),
GETPICTUREURL_WITH_ID_PICTURESIZE(URL.class, "getPictureURL", String.class, "userId", PictureSize.class, "size"),
GETPICTUREURL_WITH_ID_AND_DIM(URL.class, "getPictureURL", String.class, "userId", int.class, "pictureId", int.class, "pictureId2"),
GETSSLPICTUREURL(URL.class, "getSSLPictureURL"),
GETSSLPICTUREURL_WITH_PICTURESIZE(URL.class, "getSSLPictureURL", PictureSize.class, "size"),
GETSSLPICTUREURL_WITH_ID(URL.class, "getSSLPictureURL", String.class, "userId"),
GETSSLPICTUREURL_WITH_ID_SIZE(URL.class, "getSSLPictureURL", String.class, "userId", PictureSize.class, "size"),
GETUSER(User.class, "getUser", String.class, "userId"),
GETUSER_WITH_OPTIONS(User.class, "getUser", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
GETUSERS(List.class, "getUsers", new String[0].getClass(), "ids"),
// VideoMethods
COMMENTVIDEO(String.class, "commentVideo", String.class, "videoId", String.class, "message"),
COMMENTVIDEO_UPDATE(String.class, "commentVideo", String.class, "videoId", CommentUpdate.class, "commentUpdate"),
GETVIDEO(Video.class, "getVideo", String.class, "videoId"),
GETVIDEO_WITH_OPTIONS(Video.class, "getVideo", String.class, "videoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETVIDEO_REACTIONS(ResponseList.class, "getVideoReactions", String.class, "videoId"),
GETVIDEO_REACTIONS_WITH_OPTIONS(ResponseList.class, "getVideoReactions", String.class, "videoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETVIDEOSHAREDPOSTS(ResponseList.class, "getVideoSharedposts", String.class, "videoId"),
GETVIDEOSHAREDPOSTS_WITH_OPTIONS(ResponseList.class, "getVideoSharedposts", String.class, "videoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETVIDEOCOMMENTS(ResponseList.class, "getVideoComments", String.class, "videoId"),
GETVIDEOCOMMENTS_WITH_OPTIONS(ResponseList.class, "getVideoComments", String.class, "videoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETVIDEOCOVER(URL.class, "getVideoCover", String.class, "videoId"),
GETVIDEOLIKES(ResponseList.class, "getVideoLikes", String.class, "videoId"),
GETVIDEOLIKES_WITH_OPTIONS(ResponseList.class, "getVideoLikes", String.class, "videoId", Reading.class, FacebookConstants.READING_PROPERTY),
GETVIDEOS(ResponseList.class, "getVideos"),
GETVIDEOS_WITH_OPTIONS(ResponseList.class, "getVideos", Reading.class, FacebookConstants.READING_PROPERTY),
GETVIDEOS_WITH_ID(ResponseList.class, "getVideos", String.class, "userId"),
GETVIDEOS_WITH_ID_OPTIONS(ResponseList.class, "getVideos", String.class, "userId", Reading.class, FacebookConstants.READING_PROPERTY),
LIKEVIDEO(Boolean.class, "likeVideo", String.class, "videoId"),
UNLIKEVIDEO(Boolean.class, "unlikeVideo", String.class, "videoId"),
// SearchMethods get the highest priority with higher ordinal values
SEARCH(ResponseList.class, "search", String.class, "query"),
SEARCH_WITH_OPTIONS(ResponseList.class, "search", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCH_WITH_TYPE(ResponseList.class, "search", String.class, "query", String.class, "type", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHCHECKINS(ResponseList.class, "searchCheckins"),
SEARCHCHECKINS_WITH_OPTIONS(ResponseList.class, "searchCheckins", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHEVENTS(ResponseList.class, "searchEvents", String.class, "query"),
SEARCHEVENTS_WITH_OPTIONS(ResponseList.class, "searchEvents", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHGROUPS(ResponseList.class, "searchGroups", String.class, "query"),
SEARCHGROUPS_WITH_OPTIONS(ResponseList.class, "searchGroups", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHLOCATIONS(ResponseList.class, "searchLocations", GeoLocation.class, "center", int.class, "distance"),
SEARCHLOCATIONS_WITH_OPTIONS(ResponseList.class, "searchLocations", GeoLocation.class, "center", int.class, "distance", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHLOCATIONS_WITH_ID(ResponseList.class, "searchLocations", String.class, "placeId"),
SEARCHLOCATIONS_WITH_ID_OPTIONS(ResponseList.class, "searchLocations", String.class, "placeId", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHPLACES(ResponseList.class, "searchPlaces", String.class, "query"),
SEARCHPLACES_WITH_OPTIONS(ResponseList.class, "searchPlaces", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHPLACES_WITH_CENTER(ResponseList.class, "searchPlaces", String.class, "query", GeoLocation.class, "center", int.class, "distance"),
SEARCHPLACES_WITH_CENTER_OPTIONS(ResponseList.class, "searchPlaces", String.class, "query", GeoLocation.class, "center", int.class, "distance", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHPOSTS(ResponseList.class, "searchPosts", String.class, "query"),
SEARCHPOSTS_WITH_OPTIONS(ResponseList.class, "searchPosts", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
SEARCHUSERS(ResponseList.class, "searchUsers", String.class, "query"),
SEARCHUSERS_WITH_OPTIONS(ResponseList.class, "searchUsers", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
// FROM UPDATE to 2.2.2 API
BLOCK_USERLIST(Map.class, "block", List.class, "list"),
BLOCK_USERLIST_WITH_PAGEID(Map.class, "block", String.class, "pageId", List.class, "list"),
GET_PROMOTABLE_POSTS(ResponseList.class, "getPromotablePosts"),
GET_PROMOTABLE_POSTS_WITH_PAGEID(ResponseList.class, "getPromotablePosts", String.class, "pageId"),
GET_PROMOTABLE_POSTS_WITH_READING(ResponseList.class, "getPromotablePosts", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PROMOTABLE_POSTS_WITH_PAGEID_AND_READING(ResponseList.class, "getPromotablePosts", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
POST_PAGE_PHOTO(String.class, "postPagePhoto", PagePhotoUpdate.class, "pagePhotoUpdate"),
POST_PAGE_PHOTO_WITH_PAGEID(String.class, "postPagePhoto", String.class, "pageId", PagePhotoUpdate.class, "pagePhotoUpdate"),
GET_PAGE_TAGGED(ResponseList.class, "getPageTagged", String.class, "pageId"),
GET_PAGE_TAGGED_WITH_READING(ResponseList.class, "getPageTagged", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PAGE(Page.class, "getPage"),
GET_PAGE_WITH_ID(Page.class, "getPage", String.class, "pageId"),
GET_PAGE_WITH_READING(Page.class, "getPage", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PAGE_WITH_ID_AND_READING(Page.class, "getPage", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PAGE_PICTURE_URL(URL.class, "getPagePictureURL"),
GET_PAGE_PICTURE_URL_WITH_SIZE(URL.class, "getPagePictureURL", PictureSize.class, "pictureSize"),
GET_PAGE_PICTURE_URL_WITH_PAGEID(URL.class, "getPagePictureURL", String.class, "pageId"),
GET_PAGE_PICTURE_URL_WITH_PAGEID_AND_SIZE(URL.class, "getPagePictureURL", String.class, "pageId", PictureSize.class, "pictureSize"),
UPDATE_PAGE_BASIC_ATTRIBUTES(Boolean.class, "updatePageBasicAttributes", PageUpdate.class, "pageUpdate"),
UPDATE_PAGE_BASIC_ATTRIBUTES_WITH_PAGEID(boolean.class, "updatePageBasicAttributes", String.class, "pageId", PageUpdate.class, "pageUpdate"),
UPDATE_PAGE_PROFILE_PHOTO(boolean.class, "updatePageProfilePhoto", Media.class, "source"),
UPDATE_PAGE_PROFILE_PHOTO_WITH_PAGEID(boolean.class, "updatePageProfilePhoto", String.class, "pageId", Media.class, "source"),
UPDATE_PAGE_PROFILE_PHOTO_WITH_PAGEID_AND_URL(boolean.class, "updatePageProfilePhoto", String.class, "pageId", URL.class, "picture"),
UPDATE_PAGE_PROFILE_PHOTO_WITH_URL(boolean.class, "updatePageProfilePhoto", URL.class, "picture"),
UPDATE_PAGE_COVER_PHOTO(boolean.class, "updatePageCoverPhoto", PageCoverUpdate.class, "pageCoverUpdate"),
UPDATE_PAGE_COVER_PHOTO_WITH_PAGEID(boolean.class, "updatePageCoverPhoto", String.class, "pageId", PageCoverUpdate.class, "pageCoverUpdate"),
DISPLAY_PAGE_POST(boolean.class, "displayPagePost", String.class, "pageId", boolean.class, "isHidden"),
GET_PAGE_SETTINGS(ResponseList.class, "getPageSettings"),
GET_PAGE_SETTINGS_WITH_PAGEID(ResponseList.class, "getPageSettings", String.class, "pageId"),
UPDATE_PAGE_SETTING(boolean.class, "updatePageSetting", PageSettingUpdate.class, "pageSettingUpdate"),
UPDATE_PAGE_SETTING_WITH_PAGEID(boolean.class, "updatePageSetting", String.class, "pageId", PageSettingUpdate.class, "pageSettingUpdate"),
POST_BACKDATING_FEED(String.class, "postBackdatingFeed", BackdatingPostUpdate.class, "backdatingPostUpdate"),
POST_BACKDATING_FEED_WITH_PAGEID(String.class, "postBackdatingFeed", String.class, "pageId", BackdatingPostUpdate.class, "backdatingPostUpdate"),
GET_GLOBAL_BRAND_CHILDREN(ResponseList.class, "getGlobalBrandChildren", String.class, "pageId"),
GET_GLOBAL_BRAND_CHILDREN_WITH_READING(ResponseList.class, "getGlobalBrandChildren", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PAGE_INSIGHTS(ResponseList.class, "getPageInsights", String.class, "pageId"),
GET_PAGE_INSIGHTS_WITH_READING(ResponseList.class, "getPageInsights", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_MILESTONES(ResponseList.class, "getMilestones"),
GET_MILESTONES_WITH_PAGEID(ResponseList.class, "getMilestones", String.class, "pageId"),
GET_MILESTONES_WITH_READING(ResponseList.class, "getMilestones", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PAGE_INSIGHTS_WITH_PAGEID_AND_READING(ResponseList.class, "getMilestones", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
CREATE_MILESTONE(String.class, "createMilestone", MilestoneUpdate.class, "milestoneUpdate"),
CREATE_MILESTONE_WITH_PAGEID(String.class, "createMilestone", String.class, "pageId", MilestoneUpdate.class, "milestoneUpdate"),
DELETE_MILESTONE(boolean.class, "deleteMilestone", String.class, "milestoneId"),
GET_PAGE_ADMINS(ResponseList.class, "getPageAdmins"),
GET_PAGE_ADMINS_WITH_PAGEID(ResponseList.class, "getPageAdmins", String.class, "pageId"),
GET_PAGE_ADMINS_WITH_READING(ResponseList.class, "getPageAdmins", Reading.class, FacebookConstants.READING_PROPERTY),
GET_PAGE_ADMINS_WITH_PAGEID_AND_READING(ResponseList.class, "getPageAdmins", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_TABS(ResponseList.class, "getTabs"),
GET_TABS_WITH_PAGEID(ResponseList.class, "getTabs", String.class, "pageId"),
GET_TABS_WITH_READING(ResponseList.class, "getTabs", Reading.class, FacebookConstants.READING_PROPERTY),
GET_TABS_WITH_PAGEID_AND_READING(ResponseList.class, "getTabs", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_INSTALLED_TABS(ResponseList.class, "getInstalledTabs", List.class, "appIds"),
GET_INSTALLED_TABS_WITH_PAGEID(ResponseList.class, "getInstalledTabs", String.class, "pageId", List.class, "appIds"),
GET_INSTALLED_TABS_WITH_READING(ResponseList.class, "getInstalledTabs", List.class, "appIds", Reading.class, FacebookConstants.READING_PROPERTY),
GET_INSTALLED_TABS_WITH_PAGEID_AND_READING(ResponseList.class, "getInstalledTabs", String.class, "pageId", List.class, "appIds", Reading.class, FacebookConstants.READING_PROPERTY),
INSTALL_TAB(boolean.class, "installTab", String.class, "appId"),
INSTALL_TAB_WITH_PAGEID(boolean.class, "installTab", String.class, "pageId", String.class, "appId"),
UPDATE_TAB(boolean.class, "updateTab", String.class, "tabId", TabUpdate.class, "tabUpdate"),
UPDATE_TAB_WITH_PAGEID(boolean.class, "updateTab", String.class, "pageId", String.class, "tabId", TabUpdate.class, "tabUpdate"),
DELETE_TAB(boolean.class, "deleteTab", String.class, "tabId"),
DELETE_TAB_WITH_PAGEID(boolean.class, "deleteTab", String.class, "pageId", String.class, "tabId"),
GET_BLOCKED(ResponseList.class, "getBlocked"),
GET_BLOCKED_WITH_PAGEID(ResponseList.class, "getBlocked", String.class, "pageId"),
GET_BLOCKEDS_WITH_READING(ResponseList.class, "getBlocked", Reading.class, FacebookConstants.READING_PROPERTY),
GET_BLOCKED_WITH_PAGEID_AND_READING(ResponseList.class, "getBlocked", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
UNBLOCK(boolean.class, "unblock", String.class, "userId"),
UNBLOCK_WITH_PAGEID(boolean.class, "unblock", String.class, "pageId", String.class, "userId"),
GET_OFFERS(ResponseList.class, "getOffers"),
GET_OFFERS_WITH_PAGEID(ResponseList.class, "getOffers", String.class, "pageId"),
GET_OFFERS_WITH_READING(ResponseList.class, "getOffers", Reading.class, FacebookConstants.READING_PROPERTY),
GET_OFFERS_WITH_PAGEID_AND_READING(ResponseList.class, "getOffers", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
CREATE_OFFER(String.class, "createOffer", OfferUpdate.class, "offerUpdate"),
CREATE_OFFER_WITH_PAGEID(ResponseList.class, "createOffer", String.class, "pageId", OfferUpdate.class, "offerUpdate"),
DELETE_OFFER(boolean.class, "deleteOffer", String.class, "offerId"),
GET_OFFER(Offer.class, "getOffer", String.class, "offerId"),
GET_LIKED_PAGE(Page.class, "getLikedPage", String.class, "pageId"),
GET_LIKED_PAGE_WITH_READING(Page.class, "getLikedPage", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
GET_LIKED_PAGE_WITH_USERID(Page.class, "getLikedPage", String.class, "userId", String.class, "pageId"),
GET_LIKED_PAGE_WITH_USERID_AND_READING(Page.class, "getLikedPage", String.class, "userId", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
DELETE_PERMISSION(boolean.class, "deletePermission", String.class, "permissionName"),
DELETE_PERMISSION_WITH_USERID(boolean.class, "deletePermission", String.class, "userId", String.class, "permissionName"),
GET_UPLOADED_PHOTOS(ResponseList.class, "getUploadedPhotos"),
GET_UPLOADED_PHOTOS_WITH_PAGEID(ResponseList.class, "getUploadedPhotos", String.class, "pageId"),
GET_UPLOADED_PHOTOS_WITH_READING(ResponseList.class, "getUploadedPhotos", Reading.class, FacebookConstants.READING_PROPERTY),
GET_UPLOADED_PHOTOS_WITH_PAGEID_AND_READING(ResponseList.class, "getUploadedPhotos", String.class, "pageId", Reading.class, FacebookConstants.READING_PROPERTY),
POSTPHOTO_UPDATE(String.class, "postPhoto", PhotoUpdate.class, "photoUpdate"),
POSTPHOTO_UPDATE_WITH_USERID(String.class, "postPhoto", String.class, "userId", PhotoUpdate.class, "photoUpdate"),
DELETE_TAG_ON_PHOTO(boolean.class, "deleteTagOnPhoto", String.class, "photoId", String.class, "toUserId"),
CREATE_QUESTION(String.class, "createQuestion", QuestionUpdate.class, "questionUpdate"),
CREATE_QUESTION_WITH_ID(String.class, "createQuestion", String.class, "id", QuestionUpdate.class, "questionUpdate"),
POST_VIDEO(String.class, "postVideo", VideoUpdate.class, "videoUpdate"),
POST_VIDEO_WITH_ID(String.class, "postVideo", String.class, "id", VideoUpdate.class, "videoUpdate"),
SEARCH_PAGES(ResponseList.class, "searchPages", String.class, "query"),
SEARCH_PAGES_WITH_READING(ResponseList.class, "searchPages", String.class, "query", Reading.class, FacebookConstants.READING_PROPERTY),
CREATETESTUSER_WITH_INSTALLED(TestUser.class, "createTestUser", String.class, "appId", String.class, "name", String.class, "userLocale", String.class, "permissions", boolean.class, "installed"),
GETTESTUSERS_WITH_LIMIT(ResponseList.class, "getTestUsers", String.class, "appId", Integer.class, "limit"),
EXECUTE_BATCH(List.class, "executeBatch", BatchRequests.class, "requests"),
CALL_POST_API(RawAPIResponse.class, "callPostAPI", String.class, "relativeUrl"),
CALL_POST_API_WITH_PARAMS(RawAPIResponse.class, "callPostAPI", String.class, "relativeUrl", facebook4j.internal.http.HttpParameter[].class, "parametersH"),
CALL_POST_API_WITH_MAP(RawAPIResponse.class, "callPostAPI", String.class, "relativeUrl", Map.class, "parameters"),
CALL_GET_API(RawAPIResponse.class, "callGetAPI", String.class, "relativeUrl"),
CALL_GET_API_WITH_PARAMS(RawAPIResponse.class, "callGetAPI", String.class, "relativeUrl", facebook4j.internal.http.HttpParameter[].class, "parametersH"),
CALL_GET_API_WITH_MAP(RawAPIResponse.class, "callGetAPI", String.class, "relativeUrl", Map.class, "parameters"),
CALL_DELETE_API(RawAPIResponse.class, "callDeleteAPI", String.class, "relativeUrl"),
CALL_DELETE_API_WITH_MAP(RawAPIResponse.class, "callDeleteAPI", String.class, "relativeUrl", Map.class, "parameters");
// name, result class, ordered argument names and classes, and Method to invoke
private final String name;
private final Class<?> resultType;
private final List<String> argNames;
private final List<Class<?>> argTypes;
private final Method method;
FacebookMethodsType(Class<?> resultType, String name, Object... args) throws IllegalArgumentException {
this.name = name;
this.resultType = resultType;
if (args.length % 2 != 0) {
throw new IllegalArgumentException("Invalid parameter list, "
+ "must be of the form 'Class arg1, String arg1Name, Class arg2, String arg2Name...");
}
int nArgs = args.length / 2;
this.argNames = new ArrayList<String>(nArgs);
this.argTypes = new ArrayList<Class<?>>(nArgs);
for (int i = 0; i < nArgs; i++) {
this.argTypes.add((Class<?>) args[i * 2]);
this.argNames.add((String) args[i * 2 + 1]);
}
// find method in Facebook type
try {
this.method = Facebook.class.getMethod(name, argTypes.toArray(new Class[nArgs]));
} catch (NoSuchMethodException e) {
throw new IllegalArgumentException(
String.format("Missing method %s %s", name, argTypes.toString().replace('[', '(').replace(']', ')')),
e);
}
}
/**
* Find method type by name and argument types.
* @param name method name
* @param args ordered argument types
* @return matching method, null if not found
*/
public static FacebookMethodsType findMethod(String name, Class<?>... args) {
for (FacebookMethodsType method : values()) {
if (method.name.equals(name)) {
if ((method.argTypes.isEmpty() && (args == null || args.length == 0))
|| Arrays.equals(method.argTypes.toArray(), args)) {
return method;
}
}
}
return null;
}
public String getName() {
return name;
}
public Class<?> getResultType() {
return resultType;
}
public List<String> getArgNames() {
return Collections.unmodifiableList(argNames);
}
public List<Class<?>> getArgTypes() {
return Collections.unmodifiableList(argTypes);
}
public Method getMethod() {
return method;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("{")
.append("name=").append(name)
.append(", resultType=").append(resultType)
.append(", argNames=").append(argNames)
.append(", argTypes=").append(argTypes)
.append("}");
return builder.toString();
}
}