Blame | Last modification | View Log | RSS feed
package com.facebook.model;import com.facebook.internal.NativeProtocol;import java.util.Arrays;import java.util.Date;import java.util.List;/*** Provides a strongly-typed representation of an Open Graph Object.* For more documentation of OG Objects, see: https://developers.facebook.com/docs/opengraph/using-object-api/** Note that this interface is intended to be used with GraphObject.Factory or OpenGraphObject.Factory* and not implemented directly.*/public interface OpenGraphObject extends GraphObject {/*** Gets the ID of the object.* @return the ID*/String getId();/*** Sets the ID of the object.* @param id the ID*/void setId(String id);/*** Gets the type of the object, which is a string in the form "mynamespace:mytype".* @return the type*/String getType();/*** Sets the type of the object, which is a string in the form "mynamespace:mytype".* @param type the type*/void setType(String type);/*** Gets the URL associated with the Open Graph object.* @return the URL*/String getUrl();/*** Sets the URL associated with the Open Graph object.* @param url the URL*/void setUrl(String url);/*** Gets the title of the Open Graph object.* @return the title*/String getTitle();/*** Sets the title of the Open Graph object.* @param title the title*/void setTitle(String title);/*** Gets the description of the Open Graph object.* @return the description*/String getDescription();/*** Sets the description of the Open Graph Object* @param description the description*/void setDescription(String description);/*** Gets the images associated with the Open Graph object.* @return the images*/GraphObjectList<GraphObject> getImage();/*** Sets the images associated with the Open Graph object.* @param images the images*/void setImage(GraphObjectList<GraphObject> images);/*** Sets the images associated with the Open Graph object by specifying their URLs. This is a helper* that will create GraphObjects with the correct URLs and populate the property with those objects.* @param urls the URLs*/@CreateGraphObject("url")@PropertyName("image")void setImageUrls(List<String> urls);/*** Gets the videos associated with the Open Graph object.* @return the videos*/GraphObjectList<GraphObject> getVideo();/*** Sets the videos associated with the Open Graph object.* @param videos the videos*/void setVideo(GraphObjectList<GraphObject> videos);/*** Gets the audio associated with the Open Graph object.* @return the audio*/GraphObjectList<GraphObject> getAudio();/*** Sets the audio associated with the Open Graph object.* @param audios the audio*/void setAudio(GraphObjectList<GraphObject> audios);/*** Gets the "determiner" for the Open Graph object. This is the word such as "a", "an", or "the" that will* appear before the title of the object.* @return the determiner string*/String getDeterminer();/*** Sets the "determiner" for the Open Graph object. This is the word such as "a", "an", or "the" that will* appear before the title of the object.* @param determiner the determiner string*/void setDeterminer(String determiner);/*** Gets the list of related resources for the Open Graph object.* @return a list of URLs of related resources*/List<String> getSeeAlso();/*** Sets the list of related resources for the Open Graph object.* @param seeAlso a list of URLs of related resources*/void setSeeAlso(List<String> seeAlso);/*** Gets the name of the site hosting the Open Graph object, if any.* @return the name of the site*/String getSiteName();/*** Sets the name of the site hosting the Open Graph object.* @param siteName the name of the site*/void setSiteName(String siteName);/*** Gets the date and time the Open Graph object was created.* @return the creation time*/Date getCreatedTime();/*** Sets the date and time the Open Graph object was created.* @param createdTime the creation time*/void setCreatedTime(Date createdTime);/*** Gets the date and time the Open Graph object was last updated.* @return the update time*/Date getUpdatedTime();/*** Sets the date and time the Open Graph object was last updated.* @param updatedTime the update time*/void setUpdatedTime(Date updatedTime);/*** Gets the application that created this object.* @return the application*/GraphObject getApplication();/*** Sets the application that created this object.* @param application the application*/void setApplication(GraphObject application);/*** Gets whether the Open Graph object was created by scraping a Web resource or not.* @return true if the Open Graph object was created by scraping the Web, false if not*/boolean getIsScraped();/*** Sets whether the Open Graph object was created by scraping a Web resource or not.* @param isScraped true if the Open Graph object was created by scraping the Web, false if not*/void setIsScraped(boolean isScraped);/*** Gets the Open Graph action which was created when this Open Graph action was posted, if it is a user-owned* object, otherwise null. The post action controls the privacy of this object.* @return the ID of the post action, if any, or null*/String getPostActionId();/*** Sets the Open Graph action which was created when this Open Graph action was posted, if it is a user-owned* object, otherwise null. The post action controls the privacy of this object.* @param postActionId the ID of the post action, if any, or null*/void setPostActionId(String postActionId);/*** Gets the type-specific properties of the Open Graph object, if any. Any custom properties that are defined on an* application-defined Open Graph object type will appear here.* @return a GraphObject containing the type-specific properties*/GraphObject getData();/*** Sets the type-specific properties of the Open Graph object, if any. Any custom properties that are defined on an* application-defined Open Graph object type will appear here.* @param data a GraphObject containing the type-specific properties*/void setData(GraphObject data);/*** Gets whether the object represents a new object that should be created as part of publishing via, e.g., the* native Share dialog. This flag has no effect on explicit publishing of an action via, e.g., a POST to the* '/me/objects/object_type' endpoint.* @return true if the native Share dialog should create the object as part of publishing an action, false if not*/@PropertyName(NativeProtocol.OPEN_GRAPH_CREATE_OBJECT_KEY)boolean getCreateObject();/*** Sets whether the object represents a new object that should be created as part of publishing via, e.g., the* native Share dialog. This flag has no effect on explicit publishing of an action via, e.g., a POST to the* '/me/objects/object_type' endpoint.* @param createObject true if the native Share dialog should create the object as part of publishing an action,* false if not*/@PropertyName(NativeProtocol.OPEN_GRAPH_CREATE_OBJECT_KEY)void setCreateObject(boolean createObject);/*** Exposes helpers for creating instances of OpenGraphObject.*/final class Factory {/*** Creates an OpenGraphObject suitable for posting via, e.g., a native Share dialog. The object will have* no properties other than a 'create_object' and 'data' property, ready to be populated.* @param type the Open Graph object type for the object, or null if it will be specified later* @return an OpenGraphObject*/public static OpenGraphObject createForPost(String type) {return createForPost(OpenGraphObject.class, type);}/*** Creates an OpenGraphObject suitable for posting via, e.g., a native Share dialog. The object will have* no properties other than a 'create_object' and 'data' property, ready to be populated.* @param graphObjectClass the OpenGraphObject-derived type to return* @param type the Open Graph object type for the object, or null if it will be specified later* @return an OpenGraphObject*/public static <T extends OpenGraphObject> T createForPost(Class<T> graphObjectClass, String type) {return createForPost(graphObjectClass, type, null, null, null, null);}/*** Creates an OpenGraphObject suitable for posting via, e.g., a native Share dialog. The object will have* the specified properties, plus a 'create_object' and 'data' property, ready to be populated.* @param graphObjectClass the OpenGraphObject-derived type to return* @param type the Open Graph object type for the object, or null if it will be specified later* @param title the title of the object, or null if it will be specified later* @param imageUrl the URL of an image associated with the object, or null* @param url the URL associated with the object, or null* @param description the description of the object, or null* @return an OpenGraphObject*/public static <T extends OpenGraphObject> T createForPost(Class<T> graphObjectClass, String type, String title,String imageUrl, String url, String description) {T object = GraphObject.Factory.create(graphObjectClass);if (type != null) {object.setType(type);}if (title != null) {object.setTitle(title);}if (imageUrl != null) {object.setImageUrls(Arrays.asList(imageUrl));}if (url != null) {object.setUrl(url);}if (description != null) {object.setDescription(description);}object.setCreateObject(true);object.setData(GraphObject.Factory.create());return object;}}}