package org.apereo.cas.ticket.factory; import org.apereo.cas.ticket.ServiceTicket; import org.apereo.cas.ticket.ServiceTicketFactory; import org.apereo.cas.ticket.Ticket; import org.apereo.cas.ticket.TicketFactory; import org.apereo.cas.ticket.TicketGrantingTicket; import org.apereo.cas.ticket.TicketGrantingTicketFactory; import org.apereo.cas.ticket.proxy.ProxyGrantingTicket; import org.apereo.cas.ticket.proxy.ProxyGrantingTicketFactory; import org.apereo.cas.ticket.proxy.ProxyTicket; import org.apereo.cas.ticket.proxy.ProxyTicketFactory; import org.springframework.util.Assert; import java.util.HashMap; import java.util.Map; /** * The {@link DefaultTicketFactory} is responsible for creating ticket factory objects. * * @author Misagh Moayyed * @since 4.2 */ public class DefaultTicketFactory implements TicketFactory { private final Map<String, Object> factoryMap; public DefaultTicketFactory(final ProxyGrantingTicketFactory pgtFactory, final TicketGrantingTicketFactory tgtFactory, final ServiceTicketFactory stFactory, final ProxyTicketFactory proxyTicketFactory) { Assert.notNull(tgtFactory, "ticketGrantingTicketFactory cannot be null"); Assert.notNull(pgtFactory, "proxyGrantingTicketFactory cannot be null"); Assert.notNull(stFactory, "serviceTicketFactory cannot be null"); Assert.notNull(proxyTicketFactory, "proxyTicketFactory cannot be null"); this.factoryMap = new HashMap<>(); this.factoryMap.put(ProxyGrantingTicket.class.getCanonicalName(), pgtFactory); this.factoryMap.put(TicketGrantingTicket.class.getCanonicalName(), tgtFactory); this.factoryMap.put(ServiceTicket.class.getCanonicalName(), stFactory); this.factoryMap.put(ProxyTicket.class.getCanonicalName(), proxyTicketFactory); } @Override public <T extends TicketFactory> T get(final Class<? extends Ticket> clazz) { return (T) this.factoryMap.get(clazz.getCanonicalName()); } }