package net.unicon.cas.addons.info;
import net.unicon.cas.addons.support.ThreadSafe;
import org.jasig.cas.CasVersion;
import org.jasig.cas.CentralAuthenticationServiceImpl;
import org.jasig.cas.authentication.AuthenticationManager;
import org.jasig.cas.authentication.AuthenticationManagerImpl;
import org.jasig.cas.authentication.handler.AuthenticationHandler;
import org.jasig.cas.services.ServiceRegistryDao;
import org.jasig.cas.ticket.registry.TicketRegistry;
import org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy;
import org.jasig.cas.ticket.support.TicketGrantingTicketExpirationPolicy;
import org.jasig.cas.web.StatisticsController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Outputs CAS version number to the configurred logger at the Spring Apllication Context refresh time.
*
* @author Dmitriy Kopylenko
* @author Unicon, inc.
* @since 1.0.1
*/
@ThreadSafe
@Component
public final class CasServerVersionInfoEmitter implements ApplicationListener<ContextRefreshedEvent> {
private static Logger logger = LoggerFactory.getLogger(CasServerVersionInfoEmitter.class);
/**
* The ContextRefreshEvent could happen several times in the application context. We are only interested to emit the version info
* during the first refresh
*/
private AtomicInteger numberOfRefreshes = new AtomicInteger(0);
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if (this.numberOfRefreshes.compareAndSet(0, 1)) {
logger.info("=======| WELCOME TO CAS VERSION [{}] |=======", CasVersion.getVersion());
}
}
}