package org.apereo.cas.ticket.registry; import java.util.Collection; import org.apereo.cas.ticket.Ticket; /** * Interface for a registry that stores tickets. The underlying registry can be * backed by anything from a normal HashMap to JGroups for having distributed * registries. It is up to specific implementations to determine their clean up * strategy. Strategies can include a manual clean up by a registry cleaner or a * more sophisticated strategy such as LRU. * * @author Scott Battaglia * @since 3.0.0 */ public interface TicketRegistry { /** * Add a ticket to the registry. Ticket storage is based on the ticket id. * * @param ticket The ticket we wish to add to the cache. */ void addTicket(Ticket ticket); /** * Retrieve a ticket from the registry. If the ticket retrieved does not * match the expected class, an InvalidTicketException is thrown. * * @param <T> the generic ticket type to return that extends {@link Ticket} * @param ticketId the id of the ticket we wish to retrieve. * @param clazz The expected class of the ticket we wish to retrieve. * @return the requested ticket. */ <T extends Ticket> T getTicket(String ticketId, Class<T> clazz); /** * Retrieve a ticket from the registry. * * @param ticketId the id of the ticket we wish to retrieve * @return the requested ticket. */ Ticket getTicket(String ticketId); /** * Remove a specific ticket from the registry. * If ticket to delete is TGT then related service tickets are removed as well. * * @param ticketId The id of the ticket to delete. * @return the number of tickets deleted including children. */ int deleteTicket(String ticketId); /** * Delete all tickets from the registry. * * @return the number of tickets deleted. */ long deleteAll(); /** * Retrieve all tickets from the registry. * * @return collection of tickets currently stored in the registry. Tickets might or might not be valid i.e. expired. */ Collection<Ticket> getTickets(); /** * Update the received ticket. * * @param ticket the ticket * @return the updated ticket */ Ticket updateTicket(Ticket ticket); /** * Computes the number of SSO sessions stored in the ticket registry. * * @return Number of ticket-granting tickets in the registry at time of invocation or {@link Integer#MIN_VALUE} if unknown. */ long sessionCount(); /** * Computes the number of service tickets stored in the ticket registry. * * @return Number of service tickets in the registry at time of invocation or {@link Integer#MIN_VALUE} if unknown. */ long serviceTicketCount(); }