diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipalImpl.java b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipalImpl.java index 375df24..96c5a22 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipalImpl.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipalImpl.java @@ -1,6 +1,7 @@ package org.jasig.cas.client.authentication; import org.jasig.cas.client.proxy.ProxyRetriever; +import org.jasig.cas.client.util.CommonUtils; import java.util.Collections; import java.util.Map; @@ -69,6 +70,9 @@ public class AttributePrincipalImpl implements AttributePrincipal{ this.attributes = attributes; this.proxyGrantingTicket = proxyGrantingTicket; this.proxyRetriever = proxyRetriever; + + CommonUtils.assertNotNull(this.name, "name cannot be null."); + CommonUtils.assertNotNull(this.attributes, "attributes cannot be null."); } public Map getAttributes() { 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 67ea407..4cbbae2 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 @@ -5,16 +5,19 @@ */ package org.jasig.cas.client.authentication; +import org.jasig.cas.client.util.AbstractCasFilter; import org.jasig.cas.client.util.CommonUtils; import org.jasig.cas.client.validation.Assertion; -import org.jasig.cas.client.util.AbstractCasFilter; -import javax.servlet.*; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; -import java.net.URLEncoder; /** * Filter implementation to intercept all requests and attempt to authenticate @@ -35,7 +38,7 @@ import java.net.URLEncoder; */ public class AuthenticationFilter extends AbstractCasFilter { - protected static final String CONST_CAS_GATEWAY = "_const_cas_gateway_"; + public static final String CONST_CAS_GATEWAY = "_const_cas_gateway_"; /** * The URL to the CAS Server login. @@ -52,14 +55,19 @@ public class AuthenticationFilter extends AbstractCasFilter { */ private boolean gateway = false; - public void init(final FilterConfig filterConfig) throws ServletException { - super.init(filterConfig); + protected void initInternal(final FilterConfig filterConfig) throws ServletException { + super.initInternal(filterConfig); setCasServerLoginUrl(getPropertyFromInitParams(filterConfig, "casServerLoginUrl", null)); setRenew(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false"))); setGateway(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig, "gateway", "false"))); } - public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { + public void init() { + super.init(); + CommonUtils.assertNotNull(this.casServerLoginUrl, "casServerLoginUrl cannot be null."); + } + + public final void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { final HttpServletRequest request = (HttpServletRequest) servletRequest; final HttpServletResponse response = (HttpServletResponse) servletResponse; final HttpSession session = request.getSession(false); @@ -77,10 +85,7 @@ public class AuthenticationFilter extends AbstractCasFilter { } final String serviceUrl = constructServiceUrl(request, response); - final String urlToRedirectTo = this.casServerLoginUrl + "?" + getServiceParameterName() + "=" - + URLEncoder.encode(serviceUrl, "UTF-8") - + (this.renew ? "&renew=true" : "") - + (this.gateway ? "&gateway=true" : ""); + final String urlToRedirectTo = CommonUtils.constructRedirectUrl(this.casServerLoginUrl, getServiceParameterName(), serviceUrl, this.renew, this.gateway); if (log.isDebugEnabled()) { log.debug("redirecting to \"" + urlToRedirectTo + "\""); @@ -98,15 +103,15 @@ public class AuthenticationFilter extends AbstractCasFilter { filterChain.doFilter(request, response); } - public void setRenew(final boolean renew) { + public final void setRenew(final boolean renew) { this.renew = renew; } - public void setGateway(final boolean gateway) { + public final void setGateway(final boolean gateway) { this.gateway = gateway; } - public void setCasServerLoginUrl(final String casServerLoginUrl) { + public final void setCasServerLoginUrl(final String casServerLoginUrl) { this.casServerLoginUrl = casServerLoginUrl; } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/proxy/Cas20ProxyRetriever.java b/cas-client-core/src/main/java/org/jasig/cas/client/proxy/Cas20ProxyRetriever.java index badee2c..c98012f 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/proxy/Cas20ProxyRetriever.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/proxy/Cas20ProxyRetriever.java @@ -35,7 +35,7 @@ public final class Cas20ProxyRetriever implements ProxyRetriever { /** * Instance of Commons Logging. */ - protected final Log log = LogFactory.getLog(this.getClass()); + private final Log log = LogFactory.getLog(this.getClass()); /** * Url to CAS server. 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 b0cb891..ff66ac0 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 @@ -29,6 +29,9 @@ public final class ProxyGrantingTicketStorageImpl implements */ private static final long DEFAULT_TIMEOUT = 60000; + /** + * Map that stores the PGTIOU to PGT mappings. + */ private final Map cache = new HashMap(); /** 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 d28f668..3e0cb4b 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 @@ -14,7 +14,7 @@ import javax.servlet.http.HttpSession; import java.io.IOException; /** - * Implements the Single Sign Out protocol. + * Implements the Single Sign Out protocol. It handles registering the session and destroying the session. * * @author Scott Battaglia * @version $Revision$ $Date$ @@ -22,10 +22,19 @@ import java.io.IOException; */ public final class SingleSignOutFilter extends AbstractConfigurationFilter { + /** + * The name of the artifact parameter. This is used to capture the session identifier. + */ private String artifactParameterName = "ticket"; public void init(final FilterConfig filterConfig) throws ServletException { setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); + + init(); + } + + public void init() { + CommonUtils.assertNotNull(this.artifactParameterName, "artifactParameterName cannot be null."); } public void setArtifactParameterName(final String artifactParameterName) { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHttpSessionListener.java b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHttpSessionListener.java index 8895d05..29aed85 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHttpSessionListener.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHttpSessionListener.java @@ -18,10 +18,16 @@ import java.util.Map; * @version $Revision$ Date$ * @since 3.1 */ -public class SingleSignOutHttpSessionListener implements HttpSessionListener { +public final class SingleSignOutHttpSessionListener implements HttpSessionListener { + /** + * Maps the ID from the CAS server to the Session. + */ private static final Map MANAGED_SESSIONS = new HashMap(); + /** + * Maps the Session ID to the key from the CAS Server. + */ private static final Map ID_TO_SESSION_KEY_MAPPING = new HashMap(); public void sessionCreated(final HttpSessionEvent event) { @@ -40,6 +46,12 @@ public class SingleSignOutHttpSessionListener implements HttpSessionListener { MANAGED_SESSIONS.put(key, value); } + /** + * Method to remove the session from the mapping based on the key returned from the + * CAS server. + * + * @param key the key to look up in the map of sessions. + */ public static void removeSession(final String key) { final HttpSession session = (HttpSession) MANAGED_SESSIONS.get(key); 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 1da6921..1f6c07d 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 @@ -30,8 +30,10 @@ public abstract class AbstractCasFilter extends AbstractConfigurationFilter { /** Instance of commons logging for logging purposes. */ protected final Log log = LogFactory.getLog(getClass()); + /** Defines the parameter to look for for the artifact. */ private String artifactParameterName = "ticket"; + /** Defines the parameter to look for for the service. */ private String serviceParameterName = "service"; /** @@ -42,78 +44,36 @@ public abstract class AbstractCasFilter extends AbstractConfigurationFilter { /** The exact url of the service. */ private String service; - public void init(final FilterConfig filterConfig) throws ServletException { + public final void init(final FilterConfig filterConfig) throws ServletException { setServerName(getPropertyFromInitParams(filterConfig, "serverName", null)); setService(getPropertyFromInitParams(filterConfig, "service", null)); setArtifactParameterName(getPropertyFromInitParams(filterConfig, "artifactParameterName", "ticket")); setServiceParameterName(getPropertyFromInitParams(filterConfig, "serviceParameterName", "service")); + + initInternal(filterConfig); + init(); + } + + /** Controls the ordering of filter initialiation and checking by defining a method that runs before the init. */ + protected void initInternal(final FilterConfig filterConfig) throws ServletException { + // template method + } + + /** + * Initialization method. Called by Filter's init method or by Spring. + */ + public void init() { + CommonUtils.assertNotNull(this.artifactParameterName, "artifactParameterName cannot be null."); + CommonUtils.assertNotNull(this.serviceParameterName, "serviceParameterName cannot be null."); + CommonUtils.assertTrue(CommonUtils.isNotEmpty(this.serverName) || CommonUtils.isNotEmpty(this.service), "serverName or service must be set."); } public final void destroy() { // nothing to do } - /** - * Constructs a service url from the HttpServletRequest or from the given - * serviceUrl. Prefers the serviceUrl provided if both a serviceUrl and a - * serviceName. - * - * @param request the HttpServletRequest - * @param response the HttpServletResponse - * @return the service url to use. - */ - protected final String constructServiceUrl(final HttpServletRequest request, - final HttpServletResponse response) { - if (CommonUtils.isNotBlank(this.service)) { - return response.encodeURL(this.service); - } - - final StringBuffer buffer = new StringBuffer(); - - synchronized (buffer) { - if (!this.serverName.startsWith("https://") && !this.serverName.startsWith("http://")) { - buffer.append(request.isSecure() ? "https://" : "http://"); - } - - buffer.append(this.serverName); - buffer.append(request.getRequestURI()); - - if (CommonUtils.isNotBlank(request.getQueryString())) { - final int location = request.getQueryString().indexOf( - this.artifactParameterName + "="); - - if (location == 0) { - final String returnValue = response.encodeURL(buffer - .toString()); - if (log.isDebugEnabled()) { - log.debug("serviceUrl generated: " + returnValue); - } - return returnValue; - } - - buffer.append("?"); - - if (location == -1) { - buffer.append(request.getQueryString()); - } else if (location > 0) { - final int actualLocation = request.getQueryString() - .indexOf("&" + this.artifactParameterName + "="); - - if (actualLocation == -1) { - buffer.append(request.getQueryString()); - } else if (actualLocation > 0) { - buffer.append(request.getQueryString().substring(0, - actualLocation)); - } - } - } - } - - final String returnValue = response.encodeURL(buffer.toString()); - if (log.isDebugEnabled()) { - log.debug("serviceUrl generated: " + returnValue); - } - return returnValue; + protected final String constructServiceUrl(final HttpServletRequest request, final HttpServletResponse response) { + return CommonUtils.constructServiceUrl(request, response, this.service, this.serverName, this.artifactParameterName); } public final void setServerName(final String serverName) { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java index 2efe6ee..b372dcb 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java @@ -5,6 +5,13 @@ */ package org.jasig.cas.client.util; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Collection; /** @@ -16,6 +23,9 @@ import java.util.Collection; */ public final class CommonUtils { + /** Instance of Commons Logging. */ + private static final Log LOG = LogFactory.getLog(CommonUtils.class); + private CommonUtils() { // nothing to do } @@ -103,4 +113,88 @@ public final class CommonUtils { return !isBlank(string); } + /** + * Constructs the URL to use to redirect to the CAS server. + * + * @param casServerLoginUrl the CAS Server login url. + * @param serviceParameterName the name of the parameter that defines the service. + * @param serviceUrl the actual service's url. + * @param renew whether we should send renew or not. + * @param gateway where we should send gateway or not. + * @return the fully constructed redirect url. + */ + public static final String constructRedirectUrl(final String casServerLoginUrl, final String serviceParameterName, final String serviceUrl, final boolean renew, final boolean gateway) { + try { + return casServerLoginUrl + "?" + serviceParameterName + "=" + + URLEncoder.encode(serviceUrl, "UTF-8") + + (renew ? "&renew=true" : "") + + (gateway ? "&gateway=true" : ""); + } catch (final UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + +/** + * Constructs a service url from the HttpServletRequest or from the given + * serviceUrl. Prefers the serviceUrl provided if both a serviceUrl and a + * serviceName. + * + * @param request the HttpServletRequest + * @param response the HttpServletResponse + * @return the service url to use. + */ + public static final String constructServiceUrl(final HttpServletRequest request, + final HttpServletResponse response, final String service, final String serverName, final String artifactParameterName) { + if (CommonUtils.isNotBlank(service)) { + return response.encodeURL(service); + } + + final StringBuffer buffer = new StringBuffer(); + + synchronized (buffer) { + if (!serverName.startsWith("https://") && !serverName.startsWith("http://")) { + buffer.append(request.isSecure() ? "https://" : "http://"); + } + + buffer.append(serverName); + buffer.append(request.getRequestURI()); + + if (CommonUtils.isNotBlank(request.getQueryString())) { + final int location = request.getQueryString().indexOf( + artifactParameterName + "="); + + if (location == 0) { + final String returnValue = response.encodeURL(buffer + .toString()); + if (LOG.isDebugEnabled()) { + LOG.debug("serviceUrl generated: " + returnValue); + } + return returnValue; + } + + buffer.append("?"); + + if (location == -1) { + buffer.append(request.getQueryString()); + } else if (location > 0) { + final int actualLocation = request.getQueryString() + .indexOf("&" + artifactParameterName + "="); + + if (actualLocation == -1) { + buffer.append(request.getQueryString()); + } else if (actualLocation > 0) { + buffer.append(request.getQueryString().substring(0, + actualLocation)); + } + } + } + } + + final String returnValue = response.encodeURL(buffer.toString()); + if (LOG.isDebugEnabled()) { + LOG.debug("serviceUrl generated: " + returnValue); + } + return returnValue; + } + } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractCasProtocolUrlBasedTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractCasProtocolUrlBasedTicketValidator.java index 6d84f8f..7e7540a 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractCasProtocolUrlBasedTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractCasProtocolUrlBasedTicketValidator.java @@ -41,6 +41,7 @@ public abstract class AbstractCasProtocolUrlBasedTicketValidator extends Abstrac } } catch (final IOException e) { + log.error(e,e); return null; } finally { if (connection != null) { 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 d1a983f..5f2abf4 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 @@ -54,14 +54,19 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { return this.ticketValidator; } - public void init(final FilterConfig filterConfig) throws ServletException { - super.init(filterConfig); + protected void initInternal(final FilterConfig filterConfig) throws ServletException { + super.initInternal(filterConfig); setExceptionOnValidationFailure(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig, "exceptionOnValidationFailure", "true"))); setRedirectAfterValidation(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig, "redirectAfterValidation", "false"))); setUseSession(Boolean.parseBoolean(getPropertyFromInitParams(filterConfig, "useSession", "true"))); setTicketValidator(getTicketValidator(filterConfig)); } + public void init() { + super.init(); + CommonUtils.assertNotNull(this.ticketValidator, "ticketValidator cannot be null."); + } + /** * Pre-process the request before the normal filter process starts. This could be useful for pre-empting code. * diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractUrlBasedTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractUrlBasedTicketValidator.java index f1db47f..ce51773 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractUrlBasedTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AbstractUrlBasedTicketValidator.java @@ -2,6 +2,7 @@ package org.jasig.cas.client.validation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jasig.cas.client.util.CommonUtils; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; @@ -44,6 +45,7 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator */ protected AbstractUrlBasedTicketValidator(final String casServerUrlPrefix) { this.casServerUrlPrefix = casServerUrlPrefix; + CommonUtils.assertNotNull(this.casServerUrlPrefix, "casServerUrlPrefix cannot be null."); } /** @@ -51,7 +53,7 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator * * @param urlParameters the map containing the parameters. */ - protected void populateUrlAttributeMap(Map urlParameters) { + protected void populateUrlAttributeMap(final Map urlParameters) { // nothing to do } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AssertionImpl.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AssertionImpl.java index 7e61875..a956fc8 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/AssertionImpl.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/AssertionImpl.java @@ -2,6 +2,7 @@ package org.jasig.cas.client.validation; import org.jasig.cas.client.authentication.AttributePrincipal; import org.jasig.cas.client.authentication.AttributePrincipalImpl; +import org.jasig.cas.client.util.CommonUtils; import java.util.Collections; import java.util.Date; @@ -15,7 +16,7 @@ import java.util.Map; * @since 3.1 * */ -public class AssertionImpl implements Assertion { +public final class AssertionImpl implements Assertion { /** The date from which the assertion is valid. */ private final Date validFromDate; @@ -70,6 +71,10 @@ public class AssertionImpl implements Assertion { this.validFromDate = validFromDate; this.validUntilDate = validUntilDate; this.attributes = attributes; + + CommonUtils.assertNotNull(this.principal, "principal cannot be null."); + CommonUtils.assertNotNull(this.validFromDate, "validFromDate cannot be null."); + CommonUtils.assertNotNull(this.attributes, "attributes cannot be null."); } public Date getValidFromDate() { return this.validFromDate; diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidator.java index 2e6676e..e5ebecd 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas10TicketValidator.java @@ -11,7 +11,7 @@ import java.io.StringReader; * @version $Revision$ $Date$ * @since 3.1 */ -public class Cas10TicketValidator extends AbstractCasProtocolUrlBasedTicketValidator { +public final class Cas10TicketValidator extends AbstractCasProtocolUrlBasedTicketValidator { public Cas10TicketValidator(final String casServerUrlPrefix) { super(casServerUrlPrefix); 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 2f488a7..1b13675 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 @@ -48,11 +48,17 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic */ private ProxyGrantingTicketStorage proxyGrantingTicketStorage = new ProxyGrantingTicketStorageImpl(); - public void init(final FilterConfig filterConfig) throws ServletException { - super.init(filterConfig); + protected void initInternal(final FilterConfig filterConfig) throws ServletException { + super.initInternal(filterConfig); setProxyReceptorUrl(getPropertyFromInitParams(filterConfig, "proxyReceptorUrl", null)); } + public void init() { + super.init(); + CommonUtils.assertNotNull(this.proxyReceptorUrl, "proxyReceptorUrl cannot be null."); + CommonUtils.assertNotNull(this.proxyGrantingTicketStorage, "proxyGrantingTicketStorage cannot be null."); + } + /** * Constructs a Cas20ServiceTicketValidator or a Cas20ProxyTicketValidator based on supplied parameters. * @@ -95,7 +101,7 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic /** * This processes the ProxyReceptor request before the ticket validation code executes. */ - protected final boolean preFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { + protected boolean preFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException { final HttpServletRequest request = (HttpServletRequest) servletRequest; final HttpServletResponse response = (HttpServletResponse) servletResponse; final String requestUri = request.getRequestURI(); @@ -126,18 +132,15 @@ public final class Cas20ProxyReceivingTicketValidationFilter extends AbstractTic proxyGrantingTicket); response.getWriter().write(""); - response - .getWriter() - .write( - ""); + response.getWriter().write(""); return false; } - public final void setProxyReceptorUrl(final String proxyReceptorUrl) { + public void setProxyReceptorUrl(final String proxyReceptorUrl) { this.proxyReceptorUrl = proxyReceptorUrl; } - public final void setProxyGrantingTicketStorage(final ProxyGrantingTicketStorage proxyGrantingTicketStorage) { + public void setProxyGrantingTicketStorage(final ProxyGrantingTicketStorage proxyGrantingTicketStorage) { this.proxyGrantingTicketStorage = proxyGrantingTicketStorage; } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java index cae4a5e..18ea289 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java @@ -2,6 +2,7 @@ package org.jasig.cas.client.validation; import org.jasig.cas.client.util.XmlUtils; +import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -13,12 +14,12 @@ import java.util.List; * @version $Revision$ $Date$ * @since 3.1 */ -public class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { +public final class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { private boolean acceptAnyProxy; /** This should be a list of an array of Strings */ - private List allowedProxyChains; + private List allowedProxyChains = new ArrayList(); public Cas20ProxyTicketValidator(final String casServerUrlPrefix) { super(casServerUrlPrefix); @@ -33,7 +34,7 @@ public class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { final String[] proxiedList = (String[]) proxies.toArray(new String[proxies.size()]); // this means there was nothing in the proxy chain, which is okay - if (proxies.isEmpty() || this.acceptAnyProxy) { + if (proxies == null || proxies.isEmpty() || this.acceptAnyProxy) { return; } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/InvalidProxyChainTicketValidationException.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/InvalidProxyChainTicketValidationException.java index 108adfb..ada932d 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/InvalidProxyChainTicketValidationException.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/InvalidProxyChainTicketValidationException.java @@ -7,7 +7,7 @@ package org.jasig.cas.client.validation; * @version $Revision$ $Date$ * @since 3.1 */ -public class InvalidProxyChainTicketValidationException extends TicketValidationException { +public final class InvalidProxyChainTicketValidationException extends TicketValidationException { /** * Constructs an exception with the supplied message. diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListPropertyEditor.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListPropertyEditor.java index 98d2565..05a1615 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListPropertyEditor.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListPropertyEditor.java @@ -13,12 +13,12 @@ import java.util.List; * @since 3.1 * */ -public class ProxyListPropertyEditor extends PropertyEditorSupport { +public final class ProxyListPropertyEditor extends PropertyEditorSupport { /** * The new list of proxies to create. Its a list of String arrays. */ - private List proxyChains = new ArrayList(); + private final List proxyChains = new ArrayList(); public Object getValue() { return this.proxyChains; diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java index a904ff3..c9714d9 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidationFilter.java @@ -12,7 +12,7 @@ import javax.servlet.FilterConfig; * @version $Revision$ $Date$ * @since 3.1 */ -public class Saml11TicketValidationFilter extends AbstractTicketValidationFilter { +public final class Saml11TicketValidationFilter extends AbstractTicketValidationFilter { public Saml11TicketValidationFilter() { setArtifactParameterName("SAMLart"); diff --git a/pom.xml b/pom.xml index 7d69db1..bfc41a8 100644 --- a/pom.xml +++ b/pom.xml @@ -137,6 +137,11 @@ Ibiblio Repository http://www.ibiblio.org/maven2 + + jboss + JBoss Repository + http://repository.jboss.com/maven2 +