/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
* copy, modify, and distribute this software in source code or binary form for use
* in connection with the web services and APIs provided by Facebook.
*
* As with any software that integrates with the Facebook platform, your use of
* this software is subject to the Facebook Developer Principles and Policies
* [http://developers.facebook.com/policy/]. This copyright notice shall be
* included in all copies or substantial portions of the software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package com.facebook.share.model;
import android.os.Parcel;
import android.support.annotation.Nullable;
/**
* Describes Open Graph content that is to be shared
* <p/>
* Use {@link ShareOpenGraphContent.Builder} to create instances
* <p/>
* See the documentation for <a href="https://developers.facebook.com/docs/opengraph">Open Graph</a>
* and for <a href="https://developers.facebook.com/docs/sharing/best-practices">best practices</a>.
*/
public final class ShareOpenGraphContent
extends ShareContent<ShareOpenGraphContent, ShareOpenGraphContent.Builder> {
private final ShareOpenGraphAction action;
private final String previewPropertyName;
private ShareOpenGraphContent(final Builder builder) {
super(builder);
this.action = builder.action;
this.previewPropertyName = builder.previewPropertyName;
}
ShareOpenGraphContent(final Parcel in) {
super(in);
this.action = new ShareOpenGraphAction.Builder().readFrom(in).build();
this.previewPropertyName = in.readString();
}
/**
* The Open Graph Action for the content.
*
* @return {@link ShareOpenGraphAction}
*/
@Nullable
public ShareOpenGraphAction getAction() {
return this.action;
}
/**
* The property name for the primary {@link com.facebook.share.model.ShareOpenGraphObject}
* in the action.
*
* @return The property name for the preview object.
*/
@Nullable
public String getPreviewPropertyName() {
return this.previewPropertyName;
}
public int describeContents() {
return 0;
}
public void writeToParcel(final Parcel out, final int flags) {
super.writeToParcel(out, flags);
out.writeParcelable(this.action, 0);
out.writeString(this.previewPropertyName);
}
@SuppressWarnings("unused")
public static final Creator<ShareOpenGraphContent> CREATOR =
new Creator<ShareOpenGraphContent>() {
public ShareOpenGraphContent createFromParcel(final Parcel in) {
return new ShareOpenGraphContent(in);
}
public ShareOpenGraphContent[] newArray(final int size) {
return new ShareOpenGraphContent[size];
}
};
/**
* Builder for the {@link com.facebook.share.model.ShareOpenGraphContent} interface.
*/
public static final class Builder
extends ShareContent.Builder<com.facebook.share.model.ShareOpenGraphContent, Builder> {
private ShareOpenGraphAction action;
private String previewPropertyName;
/**
* Sets the Open Graph Action for the content.
*
* @param action {@link com.facebook.share.model.ShareOpenGraphAction}
* @return The builder.
*/
public Builder setAction(@Nullable final ShareOpenGraphAction action) {
this.action =
(action == null
? null
: new ShareOpenGraphAction.Builder()
.readFrom(action).build());
return this;
}
/**
* Sets the property name for the primary
* {@link com.facebook.share.model.ShareOpenGraphObject} in the action.
*
* @param previewPropertyName The property name for the preview object.
* @return The builder.
*/
public Builder setPreviewPropertyName(
@Nullable final String previewPropertyName) {
this.previewPropertyName = previewPropertyName;
return this;
}
@Override
public com.facebook.share.model.ShareOpenGraphContent build() {
return new ShareOpenGraphContent(this);
}
@Override
public Builder readFrom(final com.facebook.share.model.ShareOpenGraphContent model) {
if (model == null) {
return this;
}
return super
.readFrom(model)
.setAction(model.getAction())
.setPreviewPropertyName(model.getPreviewPropertyName())
;
}
}
}