diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java index 351cb47..b265769 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AuthenticationFilter.java @@ -56,23 +56,25 @@ public class AuthenticationFilter extends AbstractCasFilter { private GatewayResolver gatewayStorage = new DefaultGatewayResolverImpl(); protected void initInternal(final FilterConfig filterConfig) throws ServletException { - super.initInternal(filterConfig); - setCasServerLoginUrl(getPropertyFromInitParams(filterConfig, "casServerLoginUrl", null)); - log.trace("Loaded CasServerLoginUrl parameter: " + this.casServerLoginUrl); - setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false"))); - log.trace("Loaded renew parameter: " + this.renew); - setGateway(parseBoolean(getPropertyFromInitParams(filterConfig, "gateway", "false"))); - log.trace("Loaded gateway parameter: " + this.gateway); - - final String gatewayStorageClass = getPropertyFromInitParams(filterConfig, "gatewayStorageClass", null); - - if (gatewayStorageClass != null) { - try { - this.gatewayStorage = (GatewayResolver) Class.forName(gatewayStorageClass).newInstance(); - } catch (final Exception e) { - log.error(e,e); - throw new ServletException(e); - } + if (!isIgnoreInitConfiguration()) { + super.initInternal(filterConfig); + setCasServerLoginUrl(getPropertyFromInitParams(filterConfig, "casServerLoginUrl", null)); + log.trace("Loaded CasServerLoginUrl parameter: " + this.casServerLoginUrl); + setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false"))); + log.trace("Loaded renew parameter: " + this.renew); + setGateway(parseBoolean(getPropertyFromInitParams(filterConfig, "gateway", "false"))); + log.trace("Loaded gateway parameter: " + this.gateway); + + final String gatewayStorageClass = getPropertyFromInitParams(filterConfig, "gatewayStorageClass", null); + + if (gatewayStorageClass != null) { + try { + this.gatewayStorage = (GatewayResolver) Class.forName(gatewayStorageClass).newInstance(); + } catch (final Exception e) { + log.error(e,e); + throw new ServletException(e); + } + } } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/proxy/ProxyGrantingTicketStorageImpl.java b/cas-client-core/src/main/java/org/jasig/cas/client/proxy/ProxyGrantingTicketStorageImpl.java index 2b533dd..b676c82 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/proxy/ProxyGrantingTicketStorageImpl.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/proxy/ProxyGrantingTicketStorageImpl.java @@ -17,7 +17,7 @@ import org.apache.commons.logging.LogFactory; * Implementation of {@link ProxyGrantingTicketStorage} that is backed by a * HashMap that keeps a ProxyGrantingTicket for a specified amount of time. *

- * {@link CleanUpRegistry#cleanAll()} must be called on a regular basis to + * {@link ProxyGrantingTicketStorage#cleanUp()} must be called on a regular basis to * keep the HashMap from growing indefinitely. * * @author Scott Battaglia diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java index ce87728..951aebf 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutFilter.java @@ -38,7 +38,9 @@ public final class SingleSignOutFilter extends AbstractConfigurationFilter { private static Log log = LogFactory.getLog(SingleSignOutFilter.class); public void init(final FilterConfig filterConfig) throws ServletException { - setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); + if (!isIgnoreInitConfiguration()) { + setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); + } init(); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java index ab486a4..d8755f2 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractCasFilter.java @@ -48,18 +48,20 @@ public abstract class AbstractCasFilter extends AbstractConfigurationFilter { private String service; public final void init(final FilterConfig filterConfig) throws ServletException { - setServerName(getPropertyFromInitParams(filterConfig, "serverName", null)); - log.trace("Loading serverName property: " + this.serverName); - setService(getPropertyFromInitParams(filterConfig, "service", null)); - log.trace("Loading service property: " + this.service); - setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); - log.trace("Loading artifact parameter name property: " + this.artifactParameterName); - setServiceParameterName(getPropertyFromInitParams(filterConfig, "serviceParameterName", "service")); - log.trace("Loading serviceParameterName property: " + this.serviceParameterName); - setEncodeServiceUrl(parseBoolean(getPropertyFromInitParams(filterConfig, "encodeServiceUrl", "true"))); - log.trace("Loading encodeServiceUrl property: " + this.encodeServiceUrl); + if (!isIgnoreInitConfiguration()) { + setServerName(getPropertyFromInitParams(filterConfig, "serverName", null)); + log.trace("Loading serverName property: " + this.serverName); + setService(getPropertyFromInitParams(filterConfig, "service", null)); + log.trace("Loading service property: " + this.service); + setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); + log.trace("Loading artifact parameter name property: " + this.artifactParameterName); + setServiceParameterName(getPropertyFromInitParams(filterConfig, "serviceParameterName", "service")); + log.trace("Loading serviceParameterName property: " + this.serviceParameterName); + setEncodeServiceUrl(parseBoolean(getPropertyFromInitParams(filterConfig, "encodeServiceUrl", "true"))); + log.trace("Loading encodeServiceUrl property: " + this.encodeServiceUrl); - initInternal(filterConfig); + initInternal(filterConfig); + } init(); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractConfigurationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractConfigurationFilter.java index 44d94f5..9c359f8 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractConfigurationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/AbstractConfigurationFilter.java @@ -19,6 +19,8 @@ public abstract class AbstractConfigurationFilter implements Filter { protected final Log log = LogFactory.getLog(getClass()); + private boolean ignoreInitConfiguration = false; + /** * Retrieves the property from the FilterConfig. First it checks the FilterConfig's initParameters to see if it * has a value. @@ -28,6 +30,7 @@ public abstract class AbstractConfigurationFilter implements Filter { * * @param filterConfig the Filter Configuration. * @param propertyName the property to retrieve. + * @param defaultValue the default value if the property is not found. * @return the property value, following the above conventions. It will always return the more specific value (i.e. * filter vs. context). */ @@ -80,4 +83,12 @@ public abstract class AbstractConfigurationFilter implements Filter { return null; } } + + public final void setIgnoreInitConfiguration(boolean ignoreInitConfiguration) { + this.ignoreInitConfiguration = ignoreInitConfiguration; + } + + protected final boolean isIgnoreInitConfiguration() { + return this.ignoreInitConfiguration; + } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java index 3861f58..b285b72 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractTicketValidationFilter.java @@ -60,7 +60,6 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { } protected void initInternal(final FilterConfig filterConfig) throws ServletException { - super.initInternal(filterConfig); setExceptionOnValidationFailure(parseBoolean(getPropertyFromInitParams(filterConfig, "exceptionOnValidationFailure", "true"))); log.trace("Setting exceptionOnValidationFailure parameter: " + this.exceptionOnValidationFailure); setRedirectAfterValidation(parseBoolean(getPropertyFromInitParams(filterConfig, "redirectAfterValidation", "true"))); @@ -68,6 +67,7 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { setUseSession(parseBoolean(getPropertyFromInitParams(filterConfig, "useSession", "true"))); log.trace("Setting useSession parameter: " + this.useSession); setTicketValidator(getTicketValidator(filterConfig)); + super.initInternal(filterConfig); } public void init() { 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 36834fa..3bc7a72 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 @@ -64,9 +64,15 @@ public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketVal public void init() { super.init(); - CommonUtils.assertNotNull(proxyGrantingTicketStorage, "proxyGrantingTicketStorage cannot be null."); - this.timer = new Timer(true); - this.timerTask = new CleanUpTimerTask(this.proxyGrantingTicketStorage); + CommonUtils.assertNotNull(this.proxyGrantingTicketStorage, "proxyGrantingTicketStorage cannot be null."); + + if (this.timer == null) { + this.timer = new Timer(true); + } + + if (this.timerTask == null) { + this.timerTask = new CleanUpTimerTask(this.proxyGrantingTicketStorage); + } this.timer.schedule(this.timerTask, this.millisBetweenCleanUps, this.millisBetweenCleanUps); }