package org.apereo.cas.ticket.registry; import com.google.common.base.Throwables; import com.google.common.io.ByteSource; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.apereo.cas.ticket.ExpirationPolicy; import org.apereo.cas.ticket.Ticket; import org.apereo.cas.ticket.TicketGrantingTicket; import java.io.IOException; import java.time.ZonedDateTime; /** * Ticket implementation that encodes a source ticket and stores the encoded * representation internally. * * @author Misagh Moayyed * @since 4.2 */ public class EncodedTicket implements Ticket { private static final long serialVersionUID = -7078771807487764116L; private String id; private byte[] encodedTicket; /** * Private ctor used for serialization only. **/ private EncodedTicket() { } /** * Creates a new encoded ticket using the given encoder to encode the given * source ticket. * * @param encodedTicket the encoded ticket * @param encodedTicketId the encoded ticket id */ public EncodedTicket(final ByteSource encodedTicket, final String encodedTicketId) { try { this.id = encodedTicketId; this.encodedTicket = encodedTicket.read(); } catch (final IOException e) { throw Throwables.propagate(e); } } @Override public int getCountOfUses() { throw new UnsupportedOperationException("getCountOfUses() operation not supported"); } @Override public ExpirationPolicy getExpirationPolicy() { throw new UnsupportedOperationException("getExpirationPolicy() operation not supported"); } @Override public String getPrefix() { return StringUtils.EMPTY; } @Override public ZonedDateTime getCreationTime() { throw new UnsupportedOperationException("getCreationTime() operation not supported"); } @Override public TicketGrantingTicket getGrantingTicket() { throw new UnsupportedOperationException("getGrantingTicket() operation not supported"); } /** * Gets an encoded version of ID of the source ticket. * * @return Encoded ticket ID. */ @Override public String getId() { return this.id; } protected byte[] getEncoded() { return this.encodedTicket; } @Override public boolean isExpired() { throw new UnsupportedOperationException("isExpired() operation not supported"); } @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.NO_CLASS_NAME_STYLE) .append(this.id).build(); } @Override public int compareTo(final Ticket o) { return getId().compareTo(o.getId()); } }