org.beangle.security.cas.auth.EhCacheTicketCache.java Source code

Java tutorial

Introduction

Here is the source code for org.beangle.security.cas.auth.EhCacheTicketCache.java

Source

/* Copyright c 2005-2012.
 * Licensed under GNU  LESSER General Public License, Version 3.
 * http://www.gnu.org/licenses
 */
package org.beangle.security.cas.auth;

import net.sf.ehcache.CacheException;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;

import org.apache.commons.lang.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.dao.DataRetrievalFailureException;

/**
 * Caches tickets using a Spring IoC defined <A
 * HREF="http://ehcache.sourceforge.net">EHCACHE</a>.
 * 
 * @author chaostone
 */
public class EhCacheTicketCache implements StatelessTicketCache, InitializingBean {

    private static final Logger logger = LoggerFactory.getLogger(EhCacheTicketCache.class);

    private Ehcache cache;

    public void afterPropertiesSet() throws Exception {
        Validate.notNull(cache, "cache mandatory");
    }

    public CasAuthentication get(String serviceTicket) {
        Element element = null;
        try {
            element = cache.get(serviceTicket);
        } catch (CacheException cacheException) {
            throw new DataRetrievalFailureException("Cache failure: " + cacheException.getMessage());
        }

        if (logger.isDebugEnabled()) {
            logger.debug("Cache hit: " + (element != null) + "; service ticket: " + serviceTicket);
        }

        if (element == null) {
            return null;
        } else {
            return (CasAuthentication) element.getValue();
        }
    }

    public Ehcache getCache() {
        return cache;
    }

    public void put(CasAuthentication token) {
        Element element = new Element(token.getCredentials().toString(), token);
        logger.debug("Cache put: {}", element.getKey());
        cache.put(element);
    }

    public void remove(CasAuthentication token) {
        logger.debug("Cache remove: {}", token.getCredentials().toString());
        this.remove(token.getCredentials().toString());
    }

    public void remove(String serviceTicket) {
        cache.remove(serviceTicket);
    }

    public void setCache(Ehcache cache) {
        this.cache = cache;
    }
}