package org.apereo.cas.ticket.registry.config; import com.google.common.base.Throwables; import org.apache.commons.lang3.StringUtils; import org.apereo.cas.configuration.CasConfigurationProperties; import org.apereo.cas.configuration.model.support.infinispan.InfinispanProperties; import org.apereo.cas.configuration.support.Beans; import org.apereo.cas.ticket.Ticket; import org.apereo.cas.ticket.registry.InfinispanTicketRegistry; import org.apereo.cas.ticket.registry.TicketRegistry; import org.infinispan.Cache; import org.infinispan.manager.DefaultCacheManager; import org.infinispan.manager.EmbeddedCacheManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; /** * This is {@link InfinispanTicketRegistryConfiguration}. * * @author Misagh Moayyed * @since 5.0.0 */ @Configuration("infinispanTicketRegistryConfiguration") @EnableConfigurationProperties(CasConfigurationProperties.class) public class InfinispanTicketRegistryConfiguration { @Autowired private CasConfigurationProperties casProperties; @Bean public TicketRegistry ticketRegistry() { final InfinispanProperties span = casProperties.getTicket().getRegistry().getInfinispan(); final InfinispanTicketRegistry r = new InfinispanTicketRegistry(getCache(span)); r.setCipherExecutor(Beans.newTicketRegistryCipherExecutor(span)); return r; } private Cache<String, Ticket> getCache(final InfinispanProperties span) { final String cacheName = span.getCacheName(); if (StringUtils.isBlank(cacheName)) { return cacheManager().getCache(); } return cacheManager().getCache(cacheName); } @Bean public EmbeddedCacheManager cacheManager() { try { final Resource loc = casProperties.getTicket().getRegistry().getInfinispan().getConfigLocation(); return new DefaultCacheManager(loc.getInputStream()); } catch (final Exception e) { throw Throwables.propagate(e); } } }