package org.apereo.cas.ticket; import org.springframework.core.Ordered; /** * This is {@link TicketDefinition}. Ticket definition describes additional Properties and misc settings * that may be associated with a given ticket to be used by registries. Each CAS module on start up * has the ability to register/alter ticket metadata that may be requires for its own specific functionality. * Given each CAS module may decide to create many forms of tickets, this facility is specifically provided * to dynamically register ticket types and associated properties so modules that deal with registry functionality * wouldn't have to statically link to all modules and APIs. * * @author Misagh Moayyed * @see TicketCatalog * @since 5.1.0 */ public interface TicketDefinition extends Ordered { /** * Gets prefix. * * @return the prefix */ String getPrefix(); /** * Gets implementation class. * * @return the implementation class */ Class<? extends Ticket> getImplementationClass(); /** * Gets properties. * * @return the properties */ TicketDefinitionProperties getProperties(); /** * Returns order/priority associated with this definition. * Typically used in collection sorting and compare operations. * @return the order. */ default int getOrder() { return Ordered.LOWEST_PRECEDENCE; } }