com.comcast.locker.gateway.xgateway.domain.ValidateLicenseRequest.java Source code

Java tutorial

Introduction

Here is the source code for com.comcast.locker.gateway.xgateway.domain.ValidateLicenseRequest.java

Source

package com.comcast.locker.gateway.xgateway.domain;

import javax.xml.bind.annotation.XmlElement;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

import com.comcast.locker.api.error.Errors;
import com.comcast.locker.api.error.Validatable;
import com.comcast.locker.api.error.ValidationException;

/**
 * The payload of the request for this endpoint consists of everything given to
 * "thePlugin" by tP EDS, which is a SubjectInfo, a ContentInfo, the end user
 * token, a release id, a release pid, and an account id. 
 * <p>
 * This class consists of a very small subset of the fields being sent to us
 * to make a license decision with.  We're only including fields we 
 * intend to use in this class and can add if our logic ever changes. 
 * 
 * @author ebernstein@chariotsolutions.com
 * 
 */
public class ValidateLicenseRequest implements Validatable {

    /**
     * TODO: Need to find out the significance of this.
     */
    private String accountId;

    /**
     * TODO: Need to find out the significance of this.
     */
    private String releasePid;

    /**
     * TODO: Need to find out the significance of this.
     */
    private String releaseId;

    /**
     * TODO: Need to find out the significance of this.
     */
    private String endUserToken;
    /**
     * Uniquely identifies the request from the plugin's perspective.
     */
    private String correlationId;

    private ContentMetadataInfo contentMetadataInfo;

    private SubjectInfo subjectInfo;

    @XmlElement
    public String getAccountId() {
        return accountId;
    }

    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    @XmlElement
    public String getReleasePid() {
        return releasePid;
    }

    public void setReleasePid(String releasePid) {
        this.releasePid = releasePid;
    }

    @XmlElement
    public String getReleaseId() {
        return releaseId;
    }

    public void setReleaseId(String releaseId) {
        this.releaseId = releaseId;
    }

    @XmlElement
    public String getEndUserToken() {
        return endUserToken;
    }

    public void setEndUserToken(String endUserToken) {
        this.endUserToken = endUserToken;
    }

    @XmlElement
    public ContentMetadataInfo getContentMetadataInfo() {
        return contentMetadataInfo;
    }

    public void setContentMetadataInfo(ContentMetadataInfo contentMediaInfo) {
        this.contentMetadataInfo = contentMediaInfo;
    }

    @XmlElement
    public SubjectInfo getSubjectInfo() {
        return subjectInfo;
    }

    public void setSubjectInfo(SubjectInfo subjectInfo) {
        this.subjectInfo = subjectInfo;
    }

    @XmlElement
    public String getCorrelationId() {
        return correlationId;
    }

    public void setCorrelationId(String correlationId) {
        this.correlationId = correlationId;
    }

    @Override
    public void validate() throws ValidationException {
        Errors errors = new Errors();
        if (contentMetadataInfo == null) {
            errors.addValidationError("ContentMetadataInfo is required");
        }
        if (subjectInfo == null) {
            errors.addValidationError("SubjectInfo is a required");
        }
        if (StringUtils.isEmpty(contentMetadataInfo.getProviderId())
                || StringUtils.isEmpty(contentMetadataInfo.getTitleAssetId())) {
            errors.addValidationError("ContentMetadataInfo requires both a ProviderId and a TitleAssetId");
        }
        if (StringUtils.isEmpty(subjectInfo.getCetAuthGuid()) && StringUtils.isEmpty(subjectInfo.getCetBillingId())
                && StringUtils.isEmpty(subjectInfo.getPartnerAuthGuid())
                && StringUtils.isEmpty(subjectInfo.getPartnerBillingId())) {
            errors.addValidationError(
                    "SubjectInfo requires a CET Id, CET Billing Id, Partner Auth Guid or Partner Billing Id");
        }

        if (errors.size() > 0) {
            throw new ValidationException(errors);
        }
    }

    @Override
    public String toString() {
        ToStringBuilder builder = new ToStringBuilder(this);
        builder.append("accountId", accountId).append("releasePid", releasePid).append("releaseId", releaseId)
                .append("endUserToken", endUserToken).append("contentMetadataInfo", contentMetadataInfo)
                .append("subjectInfo", subjectInfo).append("correlationId", correlationId);
        return builder.toString();
    }

    public static class ContentMetadataInfo {

        /**
         * Is this the most reliable way to identify the asset (along with the contentMediaInfo.providerId)?
         */
        private String titleAssetId;

        /**
         * Is this the most reliable way to identify the asset (along with the contentMediaInfo.titleAssetId)?
         */
        private String providerId;

        @XmlElement(name = "adi:titleAssetId")
        public String getTitleAssetId() {
            return titleAssetId;
        }

        public void setTitleAssetId(String titleAssetId) {
            this.titleAssetId = titleAssetId;
        }

        @XmlElement(name = "adi:providerId")
        public String getProviderId() {
            return providerId;
        }

        public void setProviderId(String providerId) {
            this.providerId = providerId;
        }

        @Override
        public String toString() {
            ToStringBuilder builder = new ToStringBuilder(this);
            builder.append("titleAssetId", titleAssetId).append("providerId", providerId);
            return builder.toString();
        }

    }

    public static class SubjectInfo {

        /**
         * CET billing account number. Preferred account identifier.
         */
        private String cetAuthGuid;

        /**
         * CET auth-guid. Could be used when the CET billing account number is not provided.
         */
        private String cetBillingId;

        /**
         * CET auth-guid. Could be used when the CET billing account number is not provided.
         */
        private String partnerAuthGuid;

        private String partnerBillingId;

        private String deviceModel;

        private String provider;

        @XmlElement(name = "partner:account-id")
        public String getPartnerAuthGuid() {
            return partnerAuthGuid;
        }

        public void setPartnerAuthGuid(String partnerAuthGuid) {
            this.partnerAuthGuid = partnerAuthGuid;
        }

        @XmlElement(name = "partner:account-billing-id")
        public String getPartnerBillingId() {
            return partnerBillingId;
        }

        public void setPartnerBillingId(String partnerBillingId) {
            this.partnerBillingId = partnerBillingId;
        }

        @XmlElement(name = "account:CET:id")
        public String getCetAuthGuid() {
            return cetAuthGuid;
        }

        public void setCetAuthGuid(String cetAuthGuid) {
            this.cetAuthGuid = cetAuthGuid;
        }

        @XmlElement(name = "account:CET:billingId")
        public String getCetBillingId() {
            return cetBillingId;
        }

        public void setCetBillingId(String cetBillingId) {
            this.cetBillingId = cetBillingId;
        }

        @XmlElement(name = "drm:flashAccess:device-model")
        public String getDeviceModel() {
            return deviceModel;
        }

        public void setDeviceModel(String deviceModel) {
            this.deviceModel = deviceModel;
        }

        @XmlElement(name = "user:provider")
        public String getProvider() {
            return provider;
        }

        public void setProvider(String provider) {
            this.provider = provider;
        }

        @Override
        public String toString() {
            ToStringBuilder builder = new ToStringBuilder(this);
            builder.append("cetAuthGuid", cetAuthGuid).append("cetBillingId", cetBillingId)
                    .append("deviceModel", deviceModel).append("provider", provider)
                    .append("partnerAuthGuid", partnerAuthGuid).append("partnerBillingId", partnerBillingId);
            return builder.toString();
        }

    }
}