Java tutorial
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(); } } }