From bdb354531ec5a829ffbded8d012ea34e2c9769f5 Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Sun, 20 Sep 2009 16:09:56 +0000 Subject: [PATCH] CASC-95 use ehcache for distributed support --- ...0ProxyReceivingTicketValidationFilter.java | 11 +++++ cas-client-support-distributed/pom.xml | 34 ++++++++++++++ ...eBackedProxyGrantingTicketStorageImpl.java | 45 +++++++++++++++++++ pom.xml | 5 +++ 4 files changed, 95 insertions(+) create mode 100644 cas-client-support-distributed/pom.xml create mode 100644 cas-client-support-distributed/src/main/java/org/jasig/cas/client/proxy/EhcacheBackedProxyGrantingTicketStorageImpl.java diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java index 61d3742..66f665d 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyReceivingTicketValidationFilter.java @@ -58,6 +58,17 @@ public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketVal super.initInternal(filterConfig); setProxyReceptorUrl(getPropertyFromInitParams(filterConfig, "proxyReceptorUrl", null)); + final String proxyGrantingTicketStorageClass = getPropertyFromInitParams(filterConfig, "proxyGrantingTicketStorageClass", null); + + if (proxyGrantingTicketStorageClass != null) { + try { + final Class storageClass = Class.forName(proxyGrantingTicketStorageClass); + this.proxyGrantingTicketStorage = (ProxyGrantingTicketStorage) storageClass.newInstance(); + } catch (final Exception e) { + throw new RuntimeException(e); + } + } + log.trace("Setting proxyReceptorUrl parameter: " + this.proxyReceptorUrl); this.millisBetweenCleanUps = Integer.parseInt(getPropertyFromInitParams(filterConfig, "millisBetweenCleanUps", Integer.toString(DEFAULT_MILLIS_BETWEEN_CLEANUPS))); } diff --git a/cas-client-support-distributed/pom.xml b/cas-client-support-distributed/pom.xml new file mode 100644 index 0000000..6e1b1b6 --- /dev/null +++ b/cas-client-support-distributed/pom.xml @@ -0,0 +1,34 @@ + + + + cas-client + org.jasig.cas + 3.1.9-SNAPSHOT + + 4.0.0 + + org.jasig.cas + cas-client-support-distributed + jar + + + + org.jasig.cas + cas-client-core + ${project.version} + jar + compile + + + + net.sf.ehcache + ehcache + ${ehcache.version} + compile + jar + + + + \ No newline at end of file diff --git a/cas-client-support-distributed/src/main/java/org/jasig/cas/client/proxy/EhcacheBackedProxyGrantingTicketStorageImpl.java b/cas-client-support-distributed/src/main/java/org/jasig/cas/client/proxy/EhcacheBackedProxyGrantingTicketStorageImpl.java new file mode 100644 index 0000000..67ff534 --- /dev/null +++ b/cas-client-support-distributed/src/main/java/org/jasig/cas/client/proxy/EhcacheBackedProxyGrantingTicketStorageImpl.java @@ -0,0 +1,45 @@ +package org.jasig.cas.client.proxy; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.Element; +import net.sf.ehcache.CacheManager; + +/** + * @author Scott Battaglia + * @version $Revision$ $Date$ + * @since 3.1.9 + */ +public final class EhcacheBackedProxyGrantingTicketStorageImpl implements ProxyGrantingTicketStorage { + + public static final String EHCACHE_CACHE_NAME = "org.jasig.cas.client.proxy.EhcacheBackedProxyGrantingTicketStorageImpl.cache"; + + final Cache cache; + + public EhcacheBackedProxyGrantingTicketStorageImpl() { + this(CacheManager.create().getCache(EHCACHE_CACHE_NAME)); + + } + + public EhcacheBackedProxyGrantingTicketStorageImpl(final Cache cache) { + this.cache = cache; + } + + public void save(final String proxyGrantingTicketIou, final String proxyGrantingTicket) { + final Element element = new Element(proxyGrantingTicketIou, proxyGrantingTicket); + this.cache.put(element); + } + + public String retrieve(final String proxyGrantingTicketIou) { + final Element element = this.cache.get(proxyGrantingTicketIou); + + if (element == null) { + return null; + } + + return (String) element.getValue(); + } + + public void cleanUp() { + return; + } +} diff --git a/pom.xml b/pom.xml index b95a910..755c532 100644 --- a/pom.xml +++ b/pom.xml @@ -129,7 +129,12 @@ cas-client-core cas-client-integration-atlassian + cas-client-support-distributed + + + 1.5.0 +