package org.apereo.cas.ticket;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import java.io.Serializable;
/**
* Strategy that determines if the ticket is expired. Implementations of the
* Expiration Policy define their own rules on what they consider an expired
* Ticket to be.
*
* @author Scott Battaglia
* @see Ticket
* @since 3.0.0
*/
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include= JsonTypeInfo.As.PROPERTY)
public interface ExpirationPolicy extends Serializable {
/**
* Method to determine if a Ticket has expired or not, based on the policy.
*
* @param ticketState The snapshot of the current ticket state
* @return true if the ticket is expired, false otherwise.
*/
boolean isExpired(TicketState ticketState);
/**
* Describes the time duration where this policy should consider the item alive.
* Once this time passes, the item is considered expired and dead.
* @return time to live in seconds. A zero value indicates the time duration
* is not supported or is inactive.
*/
Long getTimeToLive();
/**
* Describes the idle time duration for the item.
*
* @return idle time in seconds. A zero value indicates the time duration
* is not supported or is inactive. Unit of measure is defined
* by the implementation.
*/
Long getTimeToIdle();
}