From aa4afd9c5f0e116496cc5d06e00ee461d1cf549a Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Mon, 25 Oct 2010 03:59:14 +0000 Subject: [PATCH] NOJIRA migrated to Java 5 --- .../authentication/AttributePrincipal.java | 2 +- .../AttributePrincipalImpl.java | 12 ++-- .../client/authentication/SimpleGroup.java | 12 ++-- .../jasig/cas/client/jaas/CasLoginModule.java | 70 +++++++++--------- .../jaas/ServiceAndTicketCallbackHandler.java | 12 ++-- .../cas/client/jaas/TicketCredential.java | 9 ++- .../cas/client/proxy/Cas20ProxyRetriever.java | 5 +- .../cas/client/proxy/CleanUpTimerTask.java | 2 - .../proxy/ProxyGrantingTicketStorageImpl.java | 33 ++++----- .../HashMapBackedSessionMappingStorage.java | 8 +-- .../client/session/SingleSignOutFilter.java | 1 - .../client/session/SingleSignOutHandler.java | 20 ++---- .../cas/client/ssl/AnyHostnameVerifier.java | 14 +--- .../cas/client/ssl/RegexHostnameVerifier.java | 1 - .../client/ssl/WhitelistHostnameVerifier.java | 6 +- .../util/AbstractConfigurationFilter.java | 2 +- .../cas/client/util/AssertionHolder.java | 10 ++- .../jasig/cas/client/util/CommonUtils.java | 72 +++++++++---------- .../cas/client/util/DelegatingFilter.java | 40 +++-------- .../cas/client/util/ErrorRedirectFilter.java | 5 +- .../util/HttpServletRequestWrapperFilter.java | 6 +- .../jasig/cas/client/util/ReflectUtils.java | 12 ++-- .../org/jasig/cas/client/util/XmlUtils.java | 4 +- .../AbstractTicketValidationFilter.java | 2 +- .../AbstractUrlBasedTicketValidator.java | 50 +++++++------ .../cas/client/validation/Assertion.java | 2 +- .../cas/client/validation/AssertionImpl.java | 16 ++--- .../validation/Cas10TicketValidator.java | 3 +- ...0ProxyReceivingTicketValidationFilter.java | 2 +- .../validation/Cas20ProxyTicketValidator.java | 8 +-- .../Cas20ServiceTicketValidator.java | 15 ++-- .../cas/client/validation/ProxyList.java | 17 ++--- .../client/validation/ProxyListEditor.java | 2 +- .../validation/Saml11TicketValidator.java | 4 +- .../cas/client/PublicTestHttpServer.java | 15 +++- .../jasig/cas/client/SerializationTests.java | 4 +- .../AbstractTicketValidatorTests.java | 2 +- .../validation/Cas10TicketValidatorTests.java | 16 ++++- .../Cas20ProxyTicketValidatorTests.java | 28 +++++--- .../Cas20ServiceTicketValidatorTests.java | 32 +++++---- .../Saml11TicketValidatorTests.java | 20 ++++-- .../client/tomcat/AbstractLogoutHandler.java | 10 +-- .../tomcat/AssertionCasRealmDelegate.java | 10 +-- .../client/tomcat/AuthenticatorDelegate.java | 12 +--- .../org/jasig/cas/client/tomcat/CasRealm.java | 1 + .../cas/client/tomcat/LogoutHandler.java | 1 + .../tomcat/PropertiesCasRealmDelegate.java | 21 +++--- .../client/tomcat/StaticUriLogoutHandler.java | 2 +- .../client/tomcat/v6/AssertionCasRealm.java | 4 +- .../tomcat/v6/Cas10CasAuthenticator.java | 2 +- .../client/tomcat/v6/PropertiesCasRealm.java | 7 +- .../client/tomcat/v6/RegexUriLogoutValve.java | 2 +- .../client/tomcat/v6/Saml11Authenticator.java | 2 +- .../client/tomcat/v6/SingleSignOutValve.java | 1 + .../tomcat/v6/StaticUriLogoutValve.java | 2 +- .../client/tomcat/v7/PropertiesCasRealm.java | 7 +- .../client/tomcat/v7/RegexUriLogoutValve.java | 5 +- .../client/tomcat/v7/Saml11Authenticator.java | 2 + .../client/tomcat/v7/SingleSignOutValve.java | 3 +- .../tomcat/v7/StaticUriLogoutValve.java | 7 +- pom.xml | 2 +- 61 files changed, 341 insertions(+), 358 deletions(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipal.java b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipal.java index 974fd08..d17c97f 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipal.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/AttributePrincipal.java @@ -48,6 +48,6 @@ public interface AttributePrincipal extends Principal, Serializable { * The Map of key/value pairs associated with this principal. * @return the map of key/value pairs associated with this principal. */ - Map getAttributes(); + Map getAttributes(); } 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 2d05903..e93978b 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 @@ -42,7 +42,7 @@ public class AttributePrincipalImpl extends SimplePrincipal implements Attribute private static final long serialVersionUID = -1443182634624927187L; /** Map of key/value pairs about this principal. */ - private final Map attributes; + private final Map attributes; /** The CAS 2 ticket used to retrieve a proxy ticket. */ private final String proxyGrantingTicket; @@ -56,7 +56,7 @@ public class AttributePrincipalImpl extends SimplePrincipal implements Attribute * @param name the unique identifier for the principal. */ public AttributePrincipalImpl(final String name) { - this(name, Collections.EMPTY_MAP); + this(name, Collections.emptyMap()); } /** @@ -65,7 +65,7 @@ public class AttributePrincipalImpl extends SimplePrincipal implements Attribute * @param name the unique identifier for the principal. * @param attributes the key/value pairs for this principal. */ - public AttributePrincipalImpl(final String name, final Map attributes) { + public AttributePrincipalImpl(final String name, final Map attributes) { this(name, attributes, null, null); } @@ -77,7 +77,7 @@ public class AttributePrincipalImpl extends SimplePrincipal implements Attribute * @param proxyRetriever the ProxyRetriever implementation to call back to the CAS server. */ public AttributePrincipalImpl(final String name, final String proxyGrantingTicket, final ProxyRetriever proxyRetriever) { - this(name, Collections.EMPTY_MAP, proxyGrantingTicket, proxyRetriever); + this(name, Collections.emptyMap(), proxyGrantingTicket, proxyRetriever); } /** @@ -88,7 +88,7 @@ public class AttributePrincipalImpl extends SimplePrincipal implements Attribute * @param proxyGrantingTicket the ticket associated with this principal. * @param proxyRetriever the ProxyRetriever implementation to call back to the CAS server. */ - public AttributePrincipalImpl(final String name, final Map attributes, final String proxyGrantingTicket, final ProxyRetriever proxyRetriever) { + public AttributePrincipalImpl(final String name, final Map attributes, final String proxyGrantingTicket, final ProxyRetriever proxyRetriever) { super(name); this.attributes = attributes; this.proxyGrantingTicket = proxyGrantingTicket; @@ -97,7 +97,7 @@ public class AttributePrincipalImpl extends SimplePrincipal implements Attribute CommonUtils.assertNotNull(this.attributes, "attributes cannot be null."); } - public Map getAttributes() { + public Map getAttributes() { return this.attributes; } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/SimpleGroup.java b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/SimpleGroup.java index bb95688..11066bc 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/authentication/SimpleGroup.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/authentication/SimpleGroup.java @@ -38,7 +38,7 @@ public final class SimpleGroup extends SimplePrincipal implements Group { private static final long serialVersionUID = 1541943977571896383L; - private final Set members = new HashSet(); + private final Set members = new HashSet(); /** * Creates a new group with the given name. @@ -56,7 +56,7 @@ public final class SimpleGroup extends SimplePrincipal implements Group { return this.members.contains(member); } - public Enumeration members() { + public Enumeration members() { return new EnumerationAdapter(this.members.iterator()); } @@ -71,16 +71,16 @@ public final class SimpleGroup extends SimplePrincipal implements Group { /** * Adapts a {@link java.util.Iterator} onto an {@link java.util.Enumeration}. */ - private static class EnumerationAdapter implements Enumeration { + private static class EnumerationAdapter implements Enumeration { /** Iterator backing enumeration operations */ - private Iterator iterator; + private Iterator iterator; /** * Creates a new instance backed by the given iterator. * @param i Iterator backing enumeration operations. */ - public EnumerationAdapter(final Iterator i) { + public EnumerationAdapter(final Iterator i) { this.iterator = i; } @@ -88,7 +88,7 @@ public final class SimpleGroup extends SimplePrincipal implements Group { return this.iterator.hasNext(); } - public Object nextElement() { + public Principal nextElement() { return this.iterator.next(); } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/jaas/CasLoginModule.java b/cas-client-core/src/main/java/org/jasig/cas/client/jaas/CasLoginModule.java index ce8e71a..3b1a814 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/jaas/CasLoginModule.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/jaas/CasLoginModule.java @@ -24,6 +24,7 @@ import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.IOException; +import java.security.Principal; import java.security.acl.Group; import java.util.*; import java.util.concurrent.Executor; @@ -130,11 +131,11 @@ public class CasLoginModule implements LoginModule { /** * Stores mapping of ticket to assertion to support JAAS providers that - * attempt to periodically reauthenticate to renew principal. Since + * attempt to periodically re-authenticate to renew principal. Since * CAS tickets are one-time-use, a cached assertion must be provided on - * reauthentication. + * re-authentication. */ - protected static final Map ASSERTION_CACHE = new HashMap(); + protected static final Map ASSERTION_CACHE = new HashMap(); /** Executor responsible for assertion cache cleanup */ protected static Executor cacheCleanerExecutor = Executors.newSingleThreadExecutor(); @@ -161,13 +162,13 @@ public class CasLoginModule implements LoginModule { protected TicketCredential ticket; /** Login module shared state */ - protected Map sharedState; + protected Map sharedState; /** Roles to be added to all authenticated principals by default */ protected String[] defaultRoles; /** Names of attributes in the CAS assertion that should be used for role data */ - protected Set roleAttributeNames = new HashSet(); + protected Set roleAttributeNames = new HashSet(); /** Name of JAAS Group containing caller principal */ protected String principalGroupName = DEFAULT_PRINCIPAL_GROUP_NAME; @@ -179,8 +180,7 @@ public class CasLoginModule implements LoginModule { protected boolean cacheAssertions; /** Assertion cache timeout in minutes */ - protected int cacheTimeout; - + protected int cacheTimeout = DEFAULT_CACHE_TIMEOUT; /** * Initializes the CAS login module. @@ -203,16 +203,17 @@ public class CasLoginModule implements LoginModule { *
  • cacheTimeout (optional) - assertion cache timeout in minutes.
  • * */ - public void initialize(final Subject subject, final CallbackHandler handler, final Map state, final Map options) { + + + public void initialize(final Subject subject, final CallbackHandler handler, final Map state, final Map options) { this.assertion = null; this.callbackHandler = handler; this.subject = subject; - this.sharedState = state; + this.sharedState = new HashMap(state); String ticketValidatorClass = null; - final Iterator iter = options.keySet().iterator(); - while (iter.hasNext()) { - final Object key = iter.next(); + + for (final String key : options.keySet()) { log.trace("Processing option " + key); if ("service".equals(key)) { this.service = (String) options.get(key); @@ -245,6 +246,7 @@ public class CasLoginModule implements LoginModule { log.debug("Set cacheTimeout=" + this.cacheTimeout); } } + if (this.cacheAssertions) { cacheCleanerExecutor.execute(new CacheCleaner()); } @@ -275,7 +277,7 @@ public class CasLoginModule implements LoginModule { synchronized(ASSERTION_CACHE) { if (ASSERTION_CACHE.get(ticket) != null) { log.debug("Assertion found in cache."); - this.assertion = (Assertion) ASSERTION_CACHE.get(ticket); + this.assertion = ASSERTION_CACHE.get(ticket); } } } @@ -290,7 +292,7 @@ public class CasLoginModule implements LoginModule { if (log.isDebugEnabled()) { log.debug("Attempting ticket validation with service=" + service + " and ticket=" + ticket); } - this.assertion = this.ticketValidator.validate(this.ticket.getTicket(), service); + this.assertion = this.ticketValidator.validate(this.ticket.getName(), service); } catch (final Exception e) { log.info("Login failed due to CAS ticket validation failure: " + e); @@ -334,20 +336,19 @@ public class CasLoginModule implements LoginModule { // Add group principal containing role data final Group roleGroup = new SimpleGroup(this.roleGroupName); - for (int i = 0; i < defaultRoles.length; i++) { - roleGroup.addMember(new SimplePrincipal(defaultRoles[i])); + + for (final String defaultRole : defaultRoles) { + roleGroup.addMember(new SimplePrincipal(defaultRole)); } - final Map attributes = this.assertion.getPrincipal().getAttributes(); - final Iterator nameIterator = attributes.keySet().iterator(); - while (nameIterator.hasNext()) { - final Object key = nameIterator.next(); + + final Map attributes = this.assertion.getPrincipal().getAttributes(); + for (final String key : attributes.keySet()) { if (this.roleAttributeNames.contains(key)) { // Attribute value is Object if singular or Collection if plural final Object value = attributes.get(key); if (value instanceof Collection) { - final Iterator valueIterator = ((Collection) value).iterator(); - while (valueIterator.hasNext()) { - roleGroup.addMember(new SimplePrincipal(valueIterator.next().toString())); + for (final Object o : (Collection) value) { + roleGroup.addMember(new SimplePrincipal(o.toString())); } } else { roleGroup.addMember(new SimplePrincipal(value.toString())); @@ -357,7 +358,7 @@ public class CasLoginModule implements LoginModule { this.subject.getPrincipals().add(roleGroup); // Place principal name in shared state for downstream JAAS modules (module chaining use case) - this.sharedState.put(LOGIN_NAME, casPrincipal.getName()); + this.sharedState.put(LOGIN_NAME, new Object()); // casPrincipal.getName()); if (log.isDebugEnabled()) { if (log.isDebugEnabled()) { @@ -403,7 +404,7 @@ public class CasLoginModule implements LoginModule { * @param propertyMap Map of property name/value pairs to set on validator instance. * @return Ticket validator with properties set. */ - private TicketValidator createTicketValidator(final String className, final Map propertyMap) { + private TicketValidator createTicketValidator(final String className, final Map propertyMap) { CommonUtils.assertTrue(propertyMap.containsKey("casServerUrlPrefix"), "Required property casServerUrlPrefix not found."); final Class validatorClass = ReflectUtils.loadClass(className); @@ -411,9 +412,8 @@ public class CasLoginModule implements LoginModule { try { final BeanInfo info = Introspector.getBeanInfo(validatorClass); - final Iterator iter = propertyMap.keySet().iterator(); - while (iter.hasNext()) { - final String property = (String) iter.next(); + + for (final String property : propertyMap.keySet()) { if (!"casServerUrlPrefix".equals(property)) { log.debug("Attempting to set TicketValidator property " + property); final String value = (String) propertyMap.get(property); @@ -461,22 +461,16 @@ public class CasLoginModule implements LoginModule { * Removes all principals of the given type from the JAAS subject. * @param clazz Type of principal to remove. */ - private void removePrincipalsOfType(final Class clazz) { - final Iterator iter = this.subject.getPrincipals(clazz).iterator(); - while (iter.hasNext()) { - this.subject.getPrincipals().remove(iter.next()); - } + private void removePrincipalsOfType(final Class clazz) { + this.subject.getPrincipals().removeAll(this.subject.getPrincipals(clazz)); } /** * Removes all credentials of the given type from the JAAS subject. * @param clazz Type of principal to remove. */ - private void removeCredentialsOfType(final Class clazz) { - final Iterator iter = this.subject.getPrivateCredentials(clazz).iterator(); - while (iter.hasNext()) { - this.subject.getPrivateCredentials().remove(iter.next()); - } + private void removeCredentialsOfType(final Class clazz) { + this.subject.getPrivateCredentials().removeAll(this.subject.getPrivateCredentials(clazz)); } /** Removes expired entries from the assertion cache. */ diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/jaas/ServiceAndTicketCallbackHandler.java b/cas-client-core/src/main/java/org/jasig/cas/client/jaas/ServiceAndTicketCallbackHandler.java index e903b95..62bced7 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/jaas/ServiceAndTicketCallbackHandler.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/jaas/ServiceAndTicketCallbackHandler.java @@ -57,13 +57,13 @@ public class ServiceAndTicketCallbackHandler implements CallbackHandler { } public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { - for (int i = 0; i < callbacks.length; i++) { - if (callbacks[i] instanceof NameCallback) { - ((NameCallback) callbacks[i]).setName(this.service); - } else if (callbacks[i] instanceof PasswordCallback) { - ((PasswordCallback) callbacks[i]).setPassword(this.ticket.toCharArray()); + for (final Callback callback : callbacks) { + if (callback instanceof NameCallback) { + ((NameCallback) callback).setName(this.service); + } else if (callback instanceof PasswordCallback) { + ((PasswordCallback) callback).setPassword(this.ticket.toCharArray()); } else { - throw new UnsupportedCallbackException(callbacks[i], "Callback not supported."); + throw new UnsupportedCallbackException(callback, "Callback not supported."); } } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/jaas/TicketCredential.java b/cas-client-core/src/main/java/org/jasig/cas/client/jaas/TicketCredential.java index 7a7451f..2f7e92e 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/jaas/TicketCredential.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/jaas/TicketCredential.java @@ -19,6 +19,8 @@ package org.jasig.cas.client.jaas; +import java.security.Principal; + /** * Strongly-typed wrapper for a ticket credential. * @@ -27,7 +29,7 @@ package org.jasig.cas.client.jaas; * @since 3.1.12 * */ -public final class TicketCredential { +public final class TicketCredential implements Principal { /** Hash code seed value */ private static final int HASHCODE_SEED = 17; @@ -43,10 +45,7 @@ public final class TicketCredential { this.ticket = ticket; } - /** - * @return Ticket identifier string. - */ - public String getTicket() { + public String getName() { return this.ticket; } 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 8b2fd2e..45adbae 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 @@ -24,11 +24,7 @@ import org.apache.commons.logging.LogFactory; import org.jasig.cas.client.util.CommonUtils; import org.jasig.cas.client.util.XmlUtils; -import java.io.BufferedReader; -import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.URL; import java.net.URLEncoder; /** @@ -65,6 +61,7 @@ public final class Cas20ProxyRetriever implements ProxyRetriever { * Main Constructor. * * @param casServerUrl the URL to the CAS server (i.e. http://localhost/cas/) + * @param encoding the encoding to use. */ public Cas20ProxyRetriever(final String casServerUrl, final String encoding) { CommonUtils.assertNotNull(casServerUrl, "casServerUrl cannot be null."); diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/proxy/CleanUpTimerTask.java b/cas-client-core/src/main/java/org/jasig/cas/client/proxy/CleanUpTimerTask.java index 49f0fe4..e48986c 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/proxy/CleanUpTimerTask.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/proxy/CleanUpTimerTask.java @@ -21,8 +21,6 @@ package org.jasig.cas.client.proxy; import java.util.TimerTask; -import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter; - /** * A {@link TimerTask} implementation which performs the * actual 'cleaning' by calling {@link ProxyGrantingTicketStorage#cleanUp()}. 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 28fbbc0..a1d1394 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 @@ -19,10 +19,9 @@ package org.jasig.cas.client.proxy; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -51,7 +50,7 @@ public final class ProxyGrantingTicketStorageImpl implements ProxyGrantingTicket /** * Map that stores the PGTIOU to PGT mappings. */ - private final Map cache = Collections.synchronizedMap(new HashMap()); + private final ConcurrentMap cache = new ConcurrentHashMap(); /** * time, in milliseconds, before a {@link ProxyGrantingTicketHolder} @@ -83,15 +82,14 @@ public final class ProxyGrantingTicketStorageImpl implements ProxyGrantingTicket * Its removed after retrieval. */ public String retrieve(final String proxyGrantingTicketIou) { - final ProxyGrantingTicketHolder holder = (ProxyGrantingTicketHolder) this.cache - .get(proxyGrantingTicketIou); + final ProxyGrantingTicketHolder holder = this.cache.get(proxyGrantingTicketIou); if (holder == null) { log.info("No Proxy Ticket found for [" + proxyGrantingTicketIou + "]."); return null; } - this.cache.remove(holder); + this.cache.remove(proxyGrantingTicketIou); if (log.isDebugEnabled()) { log.debug("Returned ProxyGrantingTicket of [" + holder.getProxyGrantingTicket() + "]"); @@ -99,10 +97,8 @@ public final class ProxyGrantingTicketStorageImpl implements ProxyGrantingTicket return holder.getProxyGrantingTicket(); } - public void save(final String proxyGrantingTicketIou, - final String proxyGrantingTicket) { - final ProxyGrantingTicketHolder holder = new ProxyGrantingTicketHolder( - proxyGrantingTicket); + public void save(final String proxyGrantingTicketIou, final String proxyGrantingTicket) { + final ProxyGrantingTicketHolder holder = new ProxyGrantingTicketHolder(proxyGrantingTicket); if (log.isDebugEnabled()) { log.debug("Saving ProxyGrantingTicketIOU and ProxyGrantingTicket combo: [" + proxyGrantingTicketIou + ", " + proxyGrantingTicket + "]"); @@ -115,16 +111,11 @@ public final class ProxyGrantingTicketStorageImpl implements ProxyGrantingTicket * called regularly via an external thread or timer. */ public void cleanUp() { - synchronized (this.cache) { - for (final Iterator iter = this.cache.values().iterator(); iter - .hasNext();) { - final ProxyGrantingTicketHolder holder = (ProxyGrantingTicketHolder) iter.next(); - - if (holder.isExpired(this.timeout)) { - iter.remove(); - } + for (final Map.Entry holder : this.cache.entrySet()) { + if (holder.getValue().isExpired(this.timeout)) { + this.cache.remove(holder.getKey()); } - } + } } private static final class ProxyGrantingTicketHolder { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/session/HashMapBackedSessionMappingStorage.java b/cas-client-core/src/main/java/org/jasig/cas/client/session/HashMapBackedSessionMappingStorage.java index 9ad9c9a..c58e3a4 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/session/HashMapBackedSessionMappingStorage.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/session/HashMapBackedSessionMappingStorage.java @@ -40,12 +40,12 @@ public final class HashMapBackedSessionMappingStorage implements SessionMappingS /** * Maps the ID from the CAS server to the Session. */ - private final Map MANAGED_SESSIONS = new HashMap(); + private final Map MANAGED_SESSIONS = new HashMap(); /** * Maps the Session ID to the key from the CAS Server. */ - private final Map ID_TO_SESSION_KEY_MAPPING = new HashMap(); + private final Map ID_TO_SESSION_KEY_MAPPING = new HashMap(); private final Log log = LogFactory.getLog(getClass()); @@ -60,7 +60,7 @@ public final class HashMapBackedSessionMappingStorage implements SessionMappingS log.debug("Attempting to remove Session=[" + sessionId + "]"); } - final String key = (String) ID_TO_SESSION_KEY_MAPPING.get(sessionId); + final String key = ID_TO_SESSION_KEY_MAPPING.get(sessionId); if (log.isDebugEnabled()) { if (key != null) { @@ -74,7 +74,7 @@ public final class HashMapBackedSessionMappingStorage implements SessionMappingS } public synchronized HttpSession removeSessionByMappingId(String mappingId) { - final HttpSession session = (HttpSession) MANAGED_SESSIONS.get(mappingId); + final HttpSession session = MANAGED_SESSIONS.get(mappingId); if (session != null) { removeBySessionById(session.getId()); 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 7c3bf9f..6ccee54 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 @@ -39,7 +39,6 @@ import java.io.IOException; * @since 3.1 */ public final class SingleSignOutFilter extends AbstractConfigurationFilter { - private static Log log = LogFactory.getLog(SingleSignOutFilter.class); private static final SingleSignOutHandler handler = new SingleSignOutHandler(); diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java index b5a78a1..1214a82 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/session/SingleSignOutHandler.java @@ -31,10 +31,12 @@ import org.jasig.cas.client.util.XmlUtils; * Performs CAS single sign-out operations in an API-agnostic fashion. * * @author Marvin S. Addison - * @version $Revision$ + * @version $Revision$ $Date$ + * @since 3.1.12 * */ -public class SingleSignOutHandler { +public final class SingleSignOutHandler { + /** Logger instance */ private final Log log = LogFactory.getLog(getClass()); @@ -55,13 +57,6 @@ public class SingleSignOutHandler { public SessionMappingStorage getSessionMappingStorage() { return this.sessionMappingStorage; } - - /** - * @return Name of the parameter containing the authentication token. - */ - public String getArtifactParameterName() { - return artifactParameterName; - } /** * @param name Name of the authentication token parameter. @@ -69,13 +64,6 @@ public class SingleSignOutHandler { public void setArtifactParameterName(final String name) { this.artifactParameterName = name; } - - /** - * @return Name of parameter containing CAS logout request message. - */ - public String getLogoutParameterName() { - return logoutParameterName; - } /** * @param name Name of parameter containing CAS logout request message. diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/AnyHostnameVerifier.java b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/AnyHostnameVerifier.java index 573f05d..ffeb6ed 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/AnyHostnameVerifier.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/AnyHostnameVerifier.java @@ -18,17 +18,9 @@ */ /* - $Id$ - - Copyright (C) 2008-2009 Virginia Tech. - All rights reserved. - - SEE LICENSE FOR MORE INFORMATION - - Author: Middleware - Email: middleware@vt.edu - Version: $Revision$ - Updated: $Date$ + @author Marvin Addison + @version $Revision$ $Date$ + @since 3.1.10 */ package org.jasig.cas.client.ssl; diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/RegexHostnameVerifier.java b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/RegexHostnameVerifier.java index be763d8..748020e 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/RegexHostnameVerifier.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/RegexHostnameVerifier.java @@ -64,5 +64,4 @@ public class RegexHostnameVerifier implements HostnameVerifier { public boolean verify(final String hostname, final SSLSession session) { return pattern.matcher(hostname).matches(); } - } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/WhitelistHostnameVerifier.java b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/WhitelistHostnameVerifier.java index 238090f..7e70a02 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/ssl/WhitelistHostnameVerifier.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/ssl/WhitelistHostnameVerifier.java @@ -66,11 +66,11 @@ public class WhitelistHostnameVerifier implements HostnameVerifier { this.allowedHosts = allowedList.split(",\\s*"); } - /** {@inheritDoc} */ public boolean verify(final String hostname, final SSLSession session) { - for (int i = 0; i < this.allowedHosts.length; i++) { - if (hostname.equalsIgnoreCase(this.allowedHosts[i])) { + + for (final String allowedHost : this.allowedHosts) { + if (hostname.equalsIgnoreCase(allowedHost)) { return true; } } 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 0b6c86d..2e2fdfb 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 @@ -67,7 +67,7 @@ public abstract class AbstractConfigurationFilter implements Filter { log.info("Property [" + propertyName + "] loaded from ServletContext.getInitParameter with value [" + value2 + "]"); return value2; } - InitialContext context = null; + InitialContext context; try { context = new InitialContext(); } catch (final NamingException e) { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/AssertionHolder.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/AssertionHolder.java index f29a489..7959ca0 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/AssertionHolder.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/AssertionHolder.java @@ -22,7 +22,7 @@ package org.jasig.cas.client.util; import org.jasig.cas.client.validation.Assertion; /** - * Static holder that places Assertion in a threadlocal. + * Static holder that places Assertion in a ThreadLocal. * * @author Scott Battaglia * @version $Revision: 11728 $ $Date: 2007-09-26 14:20:43 -0400 (Tue, 26 Sep 2007) $ @@ -33,18 +33,22 @@ public class AssertionHolder { /** * ThreadLocal to hold the Assertion for Threads to access. */ - private static final ThreadLocal threadLocal = new ThreadLocal(); + private static final ThreadLocal threadLocal = new ThreadLocal(); /** * Retrieve the assertion from the ThreadLocal. + * + * @return the Asssertion associated with this thread. */ public static Assertion getAssertion() { - return (Assertion) threadLocal.get(); + return threadLocal.get(); } /** * Add the Assertion to the ThreadLocal. + * + * @param assertion the assertion to add. */ public static void setAssertion(final Assertion assertion) { threadLocal.set(assertion); 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 877738a..45696b7 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 @@ -228,41 +228,40 @@ public final class CommonUtils { return encode ? response.encodeURL(service) : service; } - final StringBuffer buffer = new StringBuffer(); + final StringBuilder buffer = new StringBuilder(); - synchronized (buffer) { - if (!serverName.startsWith("https://") && !serverName.startsWith("http://")) { - buffer.append(request.isSecure() ? "https://" : "http://"); + + 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 = encode ? response.encodeURL(buffer.toString()): buffer.toString(); + if (LOG.isDebugEnabled()) { + LOG.debug("serviceUrl generated: " + returnValue); + } + return returnValue; } - buffer.append(serverName); - buffer.append(request.getRequestURI()); + buffer.append("?"); - if (CommonUtils.isNotBlank(request.getQueryString())) { - final int location = request.getQueryString().indexOf(artifactParameterName + "="); + if (location == -1) { + buffer.append(request.getQueryString()); + } else if (location > 0) { + final int actualLocation = request.getQueryString() + .indexOf("&" + artifactParameterName + "="); - if (location == 0) { - final String returnValue = encode ? response.encodeURL(buffer.toString()): buffer.toString(); - if (LOG.isDebugEnabled()) { - LOG.debug("serviceUrl generated: " + returnValue); - } - return returnValue; - } - - buffer.append("?"); - - if (location == -1) { + if (actualLocation == -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)); - } + } else if (actualLocation > 0) { + buffer.append(request.getQueryString().substring(0, + actualLocation)); } } } @@ -299,6 +298,7 @@ public final class CommonUtils { * Contacts the remote URL and returns the response. * * @param constructedUrl the url to contact. + * @param encoding the encoding to use. * @return the response. */ public static String getResponseFromServer(final URL constructedUrl, final String encoding) { @@ -310,6 +310,7 @@ public final class CommonUtils { * * @param constructedUrl the url to contact. * @param hostnameVerifier Host name verifier to use for HTTPS connections. + * @param encoding the encoding to use. * @return the response. */ public static String getResponseFromServer(final URL constructedUrl, final HostnameVerifier hostnameVerifier, final String encoding) { @@ -328,15 +329,13 @@ public final class CommonUtils { } String line; - final StringBuffer stringBuffer = new StringBuffer(255); + final StringBuilder stringBuffer = new StringBuilder(255); - synchronized (stringBuffer) { - while ((line = in.readLine()) != null) { - stringBuffer.append(line); - stringBuffer.append("\n"); - } - return stringBuffer.toString(); + while ((line = in.readLine()) != null) { + stringBuffer.append(line); + stringBuffer.append("\n"); } + return stringBuffer.toString(); } catch (final Exception e) { LOG.error(e.getMessage(), e); throw new RuntimeException(e); @@ -351,6 +350,7 @@ public final class CommonUtils { * Contacts the remote URL and returns the response. * * @param url the url to contact. + * @param encoding the encoding to use. * @return the response. */ public static String getResponseFromServer(final String url, String encoding) { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/DelegatingFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/DelegatingFilter.java index f96793f..6c71ef8 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/DelegatingFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/DelegatingFilter.java @@ -30,7 +30,6 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import java.io.IOException; -import java.util.Iterator; import java.util.Map; /** @@ -57,7 +56,7 @@ public final class DelegatingFilter implements Filter { /** * The map of filters to delegate to and the criteria (as key). */ - private final Map delegators; + private final Map delegators; /** * The default filter to use if there is no match. @@ -70,25 +69,13 @@ public final class DelegatingFilter implements Filter { */ private final boolean exactMatch; - public DelegatingFilter(final String requestParameterName, final Map delegators, final boolean exactMatch) { + public DelegatingFilter(final String requestParameterName, final Map delegators, final boolean exactMatch) { this(requestParameterName, delegators, exactMatch, null); } - public DelegatingFilter(final String requestParameterName, final Map delegators, final boolean exactMatch, final Filter defaultFilter) { - CommonUtils.assertNotNull(requestParameterName, - "requestParameterName cannot be null."); - CommonUtils.assertTrue(!delegators.isEmpty(), - "delegators cannot be empty."); - - for (final Iterator iter = delegators.keySet().iterator(); iter - .hasNext();) { - final Object object = delegators.get(iter.next()); - - if (!Filter.class.isAssignableFrom(object.getClass())) { - throw new IllegalArgumentException( - "All value objects in the delegators map must be filters."); - } - } + public DelegatingFilter(final String requestParameterName, final Map delegators, final boolean exactMatch, final Filter defaultFilter) { + CommonUtils.assertNotNull(requestParameterName, "requestParameterName cannot be null."); + CommonUtils.assertTrue(!delegators.isEmpty(), "delegators cannot be empty."); this.requestParameterName = requestParameterName; this.delegators = delegators; @@ -100,20 +87,14 @@ public final class DelegatingFilter implements Filter { // nothing to do here } - public void doFilter(final ServletRequest request, - final ServletResponse response, final FilterChain filterChain) - throws IOException, ServletException { + public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain) throws IOException, ServletException { final String parameter = CommonUtils.safeGetParameter((HttpServletRequest) request, this.requestParameterName); if (CommonUtils.isNotEmpty(parameter)) { - for (final Iterator iter = this.delegators.keySet().iterator(); iter - .hasNext();) { - final String key = (String) iter.next(); - - if ((parameter.equals(key) && this.exactMatch) - || (parameter.matches(key) && !this.exactMatch)) { - final Filter filter = (Filter) this.delegators.get(key); + for (final String key : this.delegators.keySet()) { + if ((parameter.equals(key) && this.exactMatch) || (parameter.matches(key) && !this.exactMatch)) { + final Filter filter = this.delegators.get(key); if (log.isDebugEnabled()) { log.debug("Match found for parameter [" + this.requestParameterName + "] with value [" @@ -126,8 +107,7 @@ public final class DelegatingFilter implements Filter { } } - log.debug("No match found for parameter [" + this.requestParameterName - + "] with value [" + parameter + "]"); + log.debug("No match found for parameter [" + this.requestParameterName + "] with value [" + parameter + "]"); if (this.defaultFilter != null) { this.defaultFilter.doFilter(request, response, filterChain); diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/ErrorRedirectFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/ErrorRedirectFilter.java index bb4b729..e6bce4d 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/ErrorRedirectFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/ErrorRedirectFilter.java @@ -54,7 +54,7 @@ public final class ErrorRedirectFilter implements Filter { private final Log log = LogFactory.getLog(getClass()); - private final List errors = new ArrayList(); + private final List errors = new ArrayList(); private String defaultErrorRedirectPage; @@ -70,8 +70,7 @@ public final class ErrorRedirectFilter implements Filter { } catch (final ServletException e) { final Throwable t = e.getCause(); ErrorHolder currentMatch = null; - for (final Iterator iter = this.errors.iterator(); iter.hasNext();) { - final ErrorHolder errorHolder = (ErrorHolder) iter.next(); + for (final ErrorHolder errorHolder : this.errors) { if (errorHolder.exactMatch(t)) { currentMatch = errorHolder; break; diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/HttpServletRequestWrapperFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/HttpServletRequestWrapperFilter.java index d306583..bf14630 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/HttpServletRequestWrapperFilter.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/HttpServletRequestWrapperFilter.java @@ -33,7 +33,6 @@ import javax.servlet.http.HttpSession; import java.io.IOException; import java.security.Principal; import java.util.Collection; -import java.util.Iterator; /** * Implementation of a filter that wraps the normal HttpServletRequest with a @@ -125,8 +124,9 @@ public final class HttpServletRequestWrapperFilter extends AbstractConfiguration final Object value = this.principal.getAttributes().get(roleAttribute); if (value instanceof Collection) { - for (final Iterator iter = ((Collection) value).iterator(); iter.hasNext();) { - if (rolesEqual(role, iter.next())) { + final Collection c = (Collection) value; + for (final Object o : c) { + if (rolesEqual(role, o)) { log.debug("User [" + getRemoteUser() + "] is in role [" + role + "]: " + true); return true; } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/ReflectUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/ReflectUtils.java index b76458f..169399b 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/ReflectUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/ReflectUtils.java @@ -122,7 +122,7 @@ public final class ReflectUtils { } /** - * Sets the given property on the target javabean using bean instrospection. + * Sets the given property on the target JavaBean using bean instrospection. * @param propertyName Property to set. * @param value Property value to set. * @param target Target java bean on which to set property. @@ -131,21 +131,21 @@ public final class ReflectUtils { try { setProperty(propertyName, value, target, Introspector.getBeanInfo(target.getClass())); } catch (final IntrospectionException e) { - throw new RuntimeException("Failed getting bean info on target javabean " + target, e); + throw new RuntimeException("Failed getting bean info on target JavaBean " + target, e); } } /** - * Sets the given property on the target javabean using bean instrospection. + * Sets the given property on the target JavaBean using bean instrospection. * @param propertyName Property to set. * @param value Property value to set. - * @param target Target javabean on which to set property. - * @param info BeanInfo describing the target javabean. + * @param target Target JavaBean on which to set property. + * @param info BeanInfo describing the target JavaBean. */ public static void setProperty(final String propertyName, final Object value, final Object target, final BeanInfo info) { try { final PropertyDescriptor pd = getPropertyDescriptor(info, propertyName); - pd.getWriteMethod().invoke(target, new Object[] { value }); + pd.getWriteMethod().invoke(target, value); } catch (final InvocationTargetException e) { throw new RuntimeException("Error setting property " + propertyName, e.getCause()); } catch (final Exception e) { diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java index 0da67cc..b4d1c8f 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/XmlUtils.java @@ -68,9 +68,9 @@ public final class XmlUtils { * @param element the element to look for * @return the list of text from the elements. */ - public static List getTextForElements(final String xmlAsString, + public static List getTextForElements(final String xmlAsString, final String element) { - final List elements = new ArrayList(2); + final List elements = new ArrayList(2); final XMLReader reader = getXmlReader(); final DefaultHandler handler = new DefaultHandler() { 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 3b56d9f..a94bdf7 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 @@ -92,7 +92,7 @@ public abstract class AbstractTicketValidationFilter extends AbstractCasFilter { final Class verifierClass = Class.forName(className); if (config != null) { final Constructor cons = verifierClass.getConstructor(new Class[] {String.class}); - verifier = (HostnameVerifier) cons.newInstance(new Object[] {config}); + verifier = (HostnameVerifier) cons.newInstance(config); } else { verifier = (HostnameVerifier) verifierClass.newInstance(); } 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 9dba6f3..0921a07 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 @@ -28,7 +28,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; -import java.util.Iterator; import java.util.Map; import javax.net.ssl.HostnameVerifier; @@ -67,7 +66,7 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator /** * A map containing custom parameters to pass to the validation url. */ - private Map customParameters; + private Map customParameters; private String encoding; @@ -86,7 +85,7 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator * * @param urlParameters the map containing the parameters. */ - protected void populateUrlAttributeMap(final Map urlParameters) { + protected void populateUrlAttributeMap(final Map urlParameters) { // nothing to do } @@ -104,7 +103,7 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator * @return the fully constructed URL. */ protected final String constructValidationUrl(final String ticket, final String serviceUrl) { - final Map urlParameters = new HashMap(); + final Map urlParameters = new HashMap(); log.debug("Placing URL parameters in map."); urlParameters.put("ticket", ticket); @@ -123,31 +122,30 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator } final String suffix = getUrlSuffix(); - final StringBuffer buffer = new StringBuffer(urlParameters.size()*10 + this.casServerUrlPrefix.length() + suffix.length() +1); + final StringBuilder buffer = new StringBuilder(urlParameters.size()*10 + this.casServerUrlPrefix.length() + suffix.length() +1); int i = 0; - synchronized (buffer) { - buffer.append(this.casServerUrlPrefix); - if (!this.casServerUrlPrefix.endsWith("/")) { - buffer.append("/"); - } - buffer.append(suffix); - for (final Iterator iter = urlParameters.entrySet().iterator(); iter.hasNext();) { - final Map.Entry entry = (Map.Entry) iter.next(); - final String key = (String) entry.getKey(); - final String value = (String) entry.getValue(); - - if (value != null) { - buffer.append(i++ == 0 ? "?" : "&"); - buffer.append(key); - buffer.append("="); - buffer.append(value); - } - } - - return buffer.toString(); + buffer.append(this.casServerUrlPrefix); + if (!this.casServerUrlPrefix.endsWith("/")) { + buffer.append("/"); } + buffer.append(suffix); + + for (Map.Entry entry : urlParameters.entrySet()) { + final String key = entry.getKey(); + final String value = entry.getValue(); + + if (value != null) { + buffer.append(i++ == 0 ? "?" : "&"); + buffer.append(key); + buffer.append("="); + buffer.append(value); + } + } + + return buffer.toString(); + } /** @@ -218,7 +216,7 @@ public abstract class AbstractUrlBasedTicketValidator implements TicketValidator this.renew = renew; } - public final void setCustomParameters(final Map customParameters) { + public final void setCustomParameters(final Map customParameters) { this.customParameters = customParameters; } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Assertion.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Assertion.java index eecbcb8..75ac70d 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Assertion.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Assertion.java @@ -53,7 +53,7 @@ public interface Assertion extends Serializable { * * @return the map of attributes. */ - Map getAttributes(); + Map getAttributes(); /** * The principal for which this assertion is valid. 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 e23cb1e..a845fe8 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 @@ -23,8 +23,8 @@ 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; -import java.util.HashMap; import java.util.Map; /** @@ -47,7 +47,7 @@ public final class AssertionImpl implements Assertion { private final Date validUntilDate; /** Map of key/value pairs associated with this assertion. I.e. authentication type. */ - private final Map attributes; + private final Map attributes; /** The principal for which this assertion is valid for. */ private final AttributePrincipal principal; @@ -62,12 +62,12 @@ public final class AssertionImpl implements Assertion { } /** - * Creates a new Assrtion with the supplied Principal. + * Creates a new Assertion with the supplied Principal. * * @param principal the Principal to associate with the Assertion. */ public AssertionImpl(final AttributePrincipal principal) { - this(principal, new HashMap()); + this(principal, Collections.emptyMap()); } /** @@ -76,19 +76,19 @@ public final class AssertionImpl implements Assertion { * @param principal the Principal to associate with the Assertion. * @param attributes the key/value pairs for this attribute. */ - public AssertionImpl(final AttributePrincipal principal, final Map attributes) { + public AssertionImpl(final AttributePrincipal principal, final Map attributes) { this(principal, new Date(), null, attributes); } /** - * Creats a new Assertion with the supplied principal, Assertion attributes, and start and valid until dates. + * Creates a new Assertion with the supplied principal, Assertion attributes, and start and valid until dates. * * @param principal the Principal to associate with the Assertion. * @param validFromDate when the assertion is valid from. * @param validUntilDate when the assertion is valid to. * @param attributes the key/value pairs for this attribute. */ - public AssertionImpl(final AttributePrincipal principal, final Date validFromDate, final Date validUntilDate, final Map attributes) { + public AssertionImpl(final AttributePrincipal principal, final Date validFromDate, final Date validUntilDate, final Map attributes) { this.principal = principal; this.validFromDate = validFromDate; this.validUntilDate = validUntilDate; @@ -106,7 +106,7 @@ public final class AssertionImpl implements Assertion { return this.validUntilDate; } - public Map getAttributes() { + public Map getAttributes() { return this.attributes; } 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 b0313b0..7bdfd04 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 @@ -46,8 +46,7 @@ public final class Cas10TicketValidator extends AbstractCasProtocolUrlBasedTicke } try { - final BufferedReader reader = new BufferedReader(new StringReader( - response)); + final BufferedReader reader = new BufferedReader(new StringReader(response)); reader.readLine(); final String name = reader.readLine(); 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 0cb3558..46a46c2 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 @@ -127,7 +127,7 @@ public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketVal validator.setRenew(parseBoolean(getPropertyFromInitParams(filterConfig, "renew", "false"))); validator.setEncoding(getPropertyFromInitParams(filterConfig, "encoding", null)); - final Map additionalParameters = new HashMap(); + final Map additionalParameters = new HashMap(); final List params = Arrays.asList(RESERVED_INIT_PARAMS); for (final Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements();) { 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 ca045b0..2b4d8d1 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 @@ -50,15 +50,15 @@ public class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { } protected void customParseResponse(final String response, final Assertion assertion) throws TicketValidationException { - final List proxies = XmlUtils.getTextForElements(response, "proxy"); - final String[] proxiedList = (String[]) proxies.toArray(new String[proxies.size()]); + final List proxies = XmlUtils.getTextForElements(response, "proxy"); + final String[] proxiedList = proxies.toArray(new String[proxies.size()]); // this means there was nothing in the proxy chain, which is okay - if (proxies == null || proxies.isEmpty() || this.acceptAnyProxy) { + if (proxies.isEmpty() || this.acceptAnyProxy) { return; } - if (allowedProxyChains.contains(proxiedList)) { + if (this.allowedProxyChains.contains(proxiedList)) { return; } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java index f4c2508..c896728 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java @@ -71,7 +71,7 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick * * @param urlParameters the Map containing the existing parameters to send to the server. */ - protected final void populateUrlAttributeMap(final Map urlParameters) { + protected final void populateUrlAttributeMap(final Map urlParameters) { urlParameters.put("pgtUrl", encodeUrl(this.proxyCallbackUrl)); } @@ -97,7 +97,7 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick } final Assertion assertion; - final Map attributes = extractCustomAttributes(response); + final Map attributes = extractCustomAttributes(response); if (CommonUtils.isNotBlank(proxyGrantingTicket)) { final AttributePrincipal attributePrincipal = new AttributePrincipalImpl(principal, attributes, proxyGrantingTicket, this.proxyRetriever); assertion = new AssertionImpl(attributePrincipal); @@ -123,21 +123,21 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick * @param xml the XML to parse. * @return the map of attributes. */ - protected Map extractCustomAttributes(final String xml) { + protected Map extractCustomAttributes(final String xml) { final int pos1 = xml.indexOf(""); final int pos2 = xml.indexOf(""); if (pos1 == -1) { - return Collections.EMPTY_MAP; + return Collections.emptyMap(); } final String attributesText = xml.substring(pos1+16, pos2); - final Map attributes = new HashMap(); + final Map attributes = new HashMap(); final BufferedReader br = new BufferedReader(new StringReader(attributesText)); String line; - final List attributeNames = new ArrayList(); + final List attributeNames = new ArrayList(); try { while ((line = br.readLine()) != null) { final String trimmedLine = line.trim(); @@ -152,8 +152,7 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick //ignore } - for (final Iterator iter = attributeNames.iterator(); iter.hasNext();) { - final String name = (String) iter.next(); + for (final String name : attributeNames) { attributes.put(name, XmlUtils.getTextForElement(xml, name)); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyList.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyList.java index c6cf63a..812e970 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyList.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyList.java @@ -23,7 +23,6 @@ import org.jasig.cas.client.util.CommonUtils; import java.util.ArrayList; import java.util.List; -import java.util.Iterator; import java.util.Arrays; /** @@ -35,26 +34,20 @@ import java.util.Arrays; */ public final class ProxyList { - private final List proxyChains; + private final List proxyChains; - public ProxyList(final List proxyChains) { + public ProxyList(final List proxyChains) { CommonUtils.assertNotNull(proxyChains, "List of proxy chains cannot be null."); - - // Assert that all entries in the list are String[] - for (final Iterator iter = proxyChains.iterator(); iter.hasNext();) { - CommonUtils.assertTrue(iter.next() instanceof String[], "Proxy chains must contain String[] items exclusively."); - } - this.proxyChains = proxyChains; } public ProxyList() { - this(new ArrayList()); + this(new ArrayList()); } public boolean contains(String[] proxiedList) { - for (Iterator iter = this.proxyChains.iterator(); iter.hasNext();) { - if (Arrays.equals(proxiedList, (String[]) iter.next())) { + for (final String[] list : this.proxyChains) { + if (Arrays.equals(proxiedList, list)) { return true; } } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListEditor.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListEditor.java index b074438..ed5e784 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListEditor.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/ProxyListEditor.java @@ -40,7 +40,7 @@ public final class ProxyListEditor extends PropertyEditorSupport { public void setAsText(final String text) throws IllegalArgumentException { final BufferedReader reader = new BufferedReader(new StringReader(text)); - final List proxyChains = new ArrayList(); + final List proxyChains = new ArrayList(); try { String line; diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java index 1d369ff..390e5fb 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Saml11TicketValidator.java @@ -51,8 +51,8 @@ public final class Saml11TicketValidator extends AbstractUrlBasedTicketValidator return "samlValidate"; } - protected void populateUrlAttributeMap(final Map urlParameters) { - final String service = (String) urlParameters.get("service"); + protected void populateUrlAttributeMap(final Map urlParameters) { + final String service = urlParameters.get("service"); urlParameters.remove("service"); urlParameters.remove("ticket"); urlParameters.put("TARGET", service); diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/PublicTestHttpServer.java b/cas-client-core/src/test/java/org/jasig/cas/client/PublicTestHttpServer.java index ed3e177..0cee4ad 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/PublicTestHttpServer.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/PublicTestHttpServer.java @@ -40,6 +40,8 @@ public final class PublicTestHttpServer extends Thread { public final String encoding; + private ServerSocket server; + private PublicTestHttpServer(String data, String encoding, String MIMEType, int port) throws UnsupportedEncodingException { this(data.getBytes(encoding), encoding, MIMEType, port); } @@ -66,10 +68,21 @@ public final class PublicTestHttpServer extends Thread { return httpServer; } + public void shutdown() { + System.out.println("Shutting down connection on port " + server.getLocalPort()); + try { + this.server.close(); + } catch (final Exception e) { + System.err.println(e); + } + + httpServer = null; + } + public void run() { try { - ServerSocket server = new ServerSocket(this.port); + this.server = new ServerSocket(this.port); System.out.println("Accepting connections on port " + server.getLocalPort()); while (true) { diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/SerializationTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/SerializationTests.java index bc0d1e8..76de0bc 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/SerializationTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/SerializationTests.java @@ -74,10 +74,10 @@ public class SerializationTests extends TestCase { final SimplePrincipal simplePrincipal = new SimplePrincipal("simple"); final SimpleGroup simpleGroup = new SimpleGroup("group"); final AttributePrincipalImpl attributePrincipal = - new AttributePrincipalImpl("attr", Collections.singletonMap("LOA", "3")); + new AttributePrincipalImpl("attr", Collections.singletonMap("LOA", "3")); final AssertionPrincipal assertionPrincipal = new AssertionPrincipal( "assertion", - new AssertionImpl(attributePrincipal, Collections.singletonMap("authenticationMethod", "username"))); + new AssertionImpl(attributePrincipal, Collections.singletonMap("authenticationMethod", "username"))); return new Object[] { simplePrincipal, diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/AbstractTicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/AbstractTicketValidatorTests.java index 64d7766..67eee9c 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/validation/AbstractTicketValidatorTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/AbstractTicketValidatorTests.java @@ -28,7 +28,7 @@ import junit.framework.TestCase; * @version $Revision: 11731 $ $Date: 2007-09-27 11:27:21 -0400 (Wed, 27 Sep 2007) $ * @since 3.0 */ -public abstract class AbstractTicketValidatorTests extends TestCase { +public abstract class AbstractTicketValidatorTests { protected static final String CONST_CAS_SERVER_URL = "http://localhost:8085/"; diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas10TicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas10TicketValidatorTests.java index 4409b25..80b76b9 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas10TicketValidatorTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas10TicketValidatorTests.java @@ -21,9 +21,14 @@ package org.jasig.cas.client.validation; import org.jasig.cas.client.PublicTestHttpServer; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import java.io.UnsupportedEncodingException; +import static org.junit.Assert.*; + /** * Test cases for the {@link Cas10TicketValidator}. * @@ -39,10 +44,17 @@ public final class Cas10TicketValidatorTests extends AbstractTicketValidatorTest super(); } - protected void setUp() throws Exception { + @AfterClass + public static void classCleanUp() { + PublicTestHttpServer.instance().shutdown(); + } + + @Before + public void setUp() throws Exception { this.ticketValidator = new Cas10TicketValidator(CONST_CAS_SERVER_URL); } + @Test public void testNoResponse() throws Exception { PublicTestHttpServer.instance().content = "no\n\n" .getBytes(PublicTestHttpServer.instance().encoding); @@ -55,6 +67,7 @@ public final class Cas10TicketValidatorTests extends AbstractTicketValidatorTest } } + @Test public void testYesResponse() throws TicketValidationException, UnsupportedEncodingException { PublicTestHttpServer.instance().content = "yes\nusername\n\n" @@ -64,6 +77,7 @@ public final class Cas10TicketValidatorTests extends AbstractTicketValidatorTest assertEquals(CONST_USERNAME, assertion.getPrincipal().getName()); } + @Test public void testBadResponse() throws UnsupportedEncodingException { PublicTestHttpServer.instance().content = "falalala\n\n" .getBytes(PublicTestHttpServer.instance().encoding); diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidatorTests.java index 4b4562a..5b98e35 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidatorTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidatorTests.java @@ -23,12 +23,17 @@ import org.jasig.cas.client.PublicTestHttpServer; import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage; import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl; import org.jasig.cas.client.proxy.ProxyRetriever; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; +import static org.junit.Assert.*; + /** * Test cases for the {@link Cas20ProxyTicketValidator}. * @@ -45,8 +50,14 @@ public final class Cas20ProxyTicketValidatorTests extends super(); } - protected void setUp() throws Exception { - final List list = new ArrayList(); + @AfterClass + public static void classCleanUp() { + PublicTestHttpServer.instance().shutdown(); + } + + @Before + public void setUp() throws Exception { + final List list = new ArrayList(); list.add(new String[] {"proxy1", "proxy2", "proxy3"}); this.ticketValidator = new Cas20ProxyTicketValidator(CONST_CAS_SERVER_URL); @@ -58,13 +69,11 @@ public final class Cas20ProxyTicketValidatorTests extends } private ProxyGrantingTicketStorage getProxyGrantingTicketStorage() { - final ProxyGrantingTicketStorageImpl proxyGrantingTicketStorageImpl = new ProxyGrantingTicketStorageImpl(); - - return proxyGrantingTicketStorageImpl; + return new ProxyGrantingTicketStorageImpl(); } private ProxyRetriever getProxyRetriever() { - final ProxyRetriever proxyRetriever = new ProxyRetriever() { + return new ProxyRetriever() { /** Unique Id For serialization. */ private static final long serialVersionUID = 1L; @@ -73,10 +82,9 @@ public final class Cas20ProxyTicketValidatorTests extends return "test"; } }; - - return proxyRetriever; } + @Test public void testProxyChainWithValidProxy() throws TicketValidationException, UnsupportedEncodingException { final String USERNAME = "username"; @@ -89,6 +97,7 @@ public final class Cas20ProxyTicketValidatorTests extends assertEquals(USERNAME, assertion.getPrincipal().getName()); } + @Test public void testProxyChainWithInvalidProxy() throws TicketValidationException, UnsupportedEncodingException { final String RESPONSE = "usernamePGTIOU-84678-8a9d...proxy7proxy2proxy3"; @@ -102,7 +111,8 @@ public final class Cas20ProxyTicketValidatorTests extends // expected } } - + + @Test public void testConstructionFromSpringBean() throws TicketValidationException, UnsupportedEncodingException { final ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:cas20ProxyTicketValidator.xml"); diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidatorTests.java index 787334c..460a919 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidatorTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidatorTests.java @@ -24,6 +24,11 @@ import org.jasig.cas.client.PublicTestHttpServer; import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage; import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl; import org.jasig.cas.client.proxy.ProxyRetriever; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; import java.io.UnsupportedEncodingException; @@ -34,8 +39,7 @@ import java.io.UnsupportedEncodingException; * @version $Revision: 11737 $ $Date: 2007-10-03 09:14:02 -0400 (Tue, 03 Oct 2007) $ * @since 3.0 */ -public final class Cas20ServiceTicketValidatorTests extends - AbstractTicketValidatorTests { +public final class Cas20ServiceTicketValidatorTests extends AbstractTicketValidatorTests { private Cas20ServiceTicketValidator ticketValidator; @@ -45,11 +49,13 @@ public final class Cas20ServiceTicketValidatorTests extends super(); } - public Cas20ServiceTicketValidatorTests(Cas20ServiceTicketValidator ticketValidator) { - this.ticketValidator = ticketValidator; + @AfterClass + public static void classCleanUp() { + PublicTestHttpServer.instance().shutdown(); } - protected void setUp() throws Exception { + @Before + public void setUp() throws Exception { this.proxyGrantingTicketStorage = getProxyGrantingTicketStorage(); this.ticketValidator = new Cas20ServiceTicketValidator(CONST_CAS_SERVER_URL); this.ticketValidator.setProxyCallbackUrl("test"); @@ -59,13 +65,11 @@ public final class Cas20ServiceTicketValidatorTests extends } private ProxyGrantingTicketStorage getProxyGrantingTicketStorage() { - final ProxyGrantingTicketStorageImpl proxyGrantingTicketStorageImpl = new ProxyGrantingTicketStorageImpl(); - - return proxyGrantingTicketStorageImpl; + return new ProxyGrantingTicketStorageImpl(); } private ProxyRetriever getProxyRetriever() { - final ProxyRetriever proxyRetriever = new ProxyRetriever() { + return new ProxyRetriever() { /** Unique Id for serialization. */ private static final long serialVersionUID = 1L; @@ -74,10 +78,9 @@ public final class Cas20ServiceTicketValidatorTests extends return "test"; } }; - - return proxyRetriever; } + @Test public void testNoResponse() throws UnsupportedEncodingException { final String RESPONSE = "Ticket ST-1856339-aA5Yuvrxzpv8Tau1cYQ7 not recognized"; PublicTestHttpServer.instance().content = RESPONSE @@ -90,6 +93,7 @@ public final class Cas20ServiceTicketValidatorTests extends } } + @Test public void testYesResponseButNoPgt() throws TicketValidationException, UnsupportedEncodingException { final String USERNAME = "username"; @@ -102,8 +106,10 @@ public final class Cas20ServiceTicketValidatorTests extends final Assertion assertion = this.ticketValidator.validate("test", "test"); assertEquals(USERNAME, assertion.getPrincipal().getName()); + } + @Test public void testYesResponseWithPgt() throws TicketValidationException, UnsupportedEncodingException { final String USERNAME = "username"; @@ -125,7 +131,8 @@ public final class Cas20ServiceTicketValidatorTests extends assertEquals(USERNAME, assertion.getPrincipal().getName()); // assertEquals(PGT, assertion.getProxyGrantingTicketId()); } - + + @Test public void testGetAttributes() throws TicketValidationException, UnsupportedEncodingException { final String USERNAME = "username"; @@ -146,6 +153,7 @@ public final class Cas20ServiceTicketValidatorTests extends //assertEquals(PGT, assertion.getProxyGrantingTicketId()); } + @Test public void testInvalidResponse() throws Exception { final String RESPONSE = ""; PublicTestHttpServer.instance().content = RESPONSE diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java index 5cf2aec..f73a3ac 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/Saml11TicketValidatorTests.java @@ -21,10 +21,15 @@ package org.jasig.cas.client.validation; import org.jasig.cas.client.PublicTestHttpServer; import org.jasig.cas.client.util.CommonUtils; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; import java.io.UnsupportedEncodingException; import java.util.Date; +import static org.junit.Assert.*; + /** * @author Scott Battaglia * @version $Revision$ $Date$ @@ -34,11 +39,18 @@ public final class Saml11TicketValidatorTests extends AbstractTicketValidatorTes private Saml11TicketValidator validator; - protected void setUp() throws Exception { + @Before + public void setUp() throws Exception { this.validator = new Saml11TicketValidator(CONST_CAS_SERVER_URL); this.validator.setTolerance(1000L); } + @AfterClass + public static void classCleanUp() { + PublicTestHttpServer.instance().shutdown(); + } + + @Test public void testValidationFailedResponse() throws UnsupportedEncodingException { final String RESPONSE = "testtestPrincipalurn:oasis:names:tc:SAML:1.0:cm:artifact"; - PublicTestHttpServer.instance().content = RESPONSE - .getBytes(PublicTestHttpServer.instance().encoding); + PublicTestHttpServer.instance().content = RESPONSE.getBytes(PublicTestHttpServer.instance().encoding); try { final Assertion a = this.validator.validate("test", "test"); assertEquals("testPrincipal", a.getPrincipal().getName()); diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AbstractLogoutHandler.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AbstractLogoutHandler.java index f7a55eb..bc86606 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AbstractLogoutHandler.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AbstractLogoutHandler.java @@ -48,20 +48,20 @@ public abstract class AbstractLogoutHandler implements LogoutHandler { /** {@inheritDoc} */ public void logout(final HttpServletRequest request, final HttpServletResponse response) { - this.log.debug("Processing logout request from CAS server."); + log.debug("Processing logout request from CAS server."); final Assertion assertion; final HttpSession httpSession = request.getSession(false); if (httpSession != null && (assertion = (Assertion) httpSession.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION)) != null) { httpSession.removeAttribute(AbstractCasFilter.CONST_CAS_ASSERTION); - this.log.info("Successfully logged out " + assertion.getPrincipal()); + log.info("Successfully logged out " + assertion.getPrincipal()); } else { - this.log.info("Session already ended."); + log.info("Session already ended."); } final String redirectUrl = constructRedirectUrl(request); if (redirectUrl != null) { - this.log.debug("Redirecting to " + redirectUrl); + log.debug("Redirecting to " + redirectUrl); CommonUtils.sendRedirect(response, redirectUrl); } } @@ -73,6 +73,6 @@ public abstract class AbstractLogoutHandler implements LogoutHandler { * @return the url to redirect to. CAN be NULL. */ protected String constructRedirectUrl(final HttpServletRequest request) { - return redirectUrl; + return this.redirectUrl; } } diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AssertionCasRealmDelegate.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AssertionCasRealmDelegate.java index d690dc3..f8dd1e5 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AssertionCasRealmDelegate.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AssertionCasRealmDelegate.java @@ -37,9 +37,11 @@ import org.jasig.cas.client.util.CommonUtils; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public class AssertionCasRealmDelegate implements CasRealm { + /** Default role attribute name */ public static final String DEFAULT_ROLE_NAME = "role"; @@ -63,7 +65,7 @@ public class AssertionCasRealmDelegate implements CasRealm { public String[] getRoles(final Principal p) { CommonUtils.assertTrue(p instanceof AttributePrincipal, "Expected instance of AttributePrincipal but got " + p.getClass()); - final Collection roles = getRoleCollection(p); + final Collection roles = getRoleCollection(p); final String[] array = new String[roles.size()]; roles.toArray(array); return array; @@ -80,7 +82,7 @@ public class AssertionCasRealmDelegate implements CasRealm { * @param p the principal to check. * @return the list of attribute values that matched this role, or an empty collection if they don't. */ - private Collection getRoleCollection(final Principal p) { + private Collection getRoleCollection(final Principal p) { if (!(p instanceof AttributePrincipal)) { return Collections.emptyList(); } @@ -92,9 +94,9 @@ public class AssertionCasRealmDelegate implements CasRealm { } if (attributes instanceof Collection) { - return (Collection) attributes; + return (Collection) attributes; } - return Arrays.asList(new Object[] {attributes}); + return Arrays.asList(attributes.toString()); } } diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AuthenticatorDelegate.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AuthenticatorDelegate.java index 895f6e1..3b26601 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AuthenticatorDelegate.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/AuthenticatorDelegate.java @@ -43,9 +43,11 @@ import org.jasig.cas.client.validation.TicketValidator; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ -public class AuthenticatorDelegate { +public final class AuthenticatorDelegate { + /** Log instance */ private final Log log = LogFactory.getLog(getClass()); @@ -63,7 +65,6 @@ public class AuthenticatorDelegate { private CasRealm realm; - /** * Performs CAS authentication on the given request and returns the principal * determined by the configured {@link CasRealm} on success. @@ -157,13 +158,6 @@ public class AuthenticatorDelegate { this.casServerLoginUrl = casServerLoginUrl; } - /** - * @return the ticketValidator - */ - public TicketValidator getTicketValidator() { - return ticketValidator; - } - /** * @param artifactParameterName the artifactParameterName to set */ diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/CasRealm.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/CasRealm.java index 59a9a1c..3e1a58b 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/CasRealm.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/CasRealm.java @@ -27,6 +27,7 @@ import java.security.Principal; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public interface CasRealm { diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/LogoutHandler.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/LogoutHandler.java index ebe175b..0bd45b8 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/LogoutHandler.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/LogoutHandler.java @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public interface LogoutHandler { diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/PropertiesCasRealmDelegate.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/PropertiesCasRealmDelegate.java index e24e49c..5aba235 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/PropertiesCasRealmDelegate.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/PropertiesCasRealmDelegate.java @@ -43,6 +43,7 @@ import org.jasig.cas.client.util.CommonUtils; * * @author Middleware * @version $Revision$ + * @since 3.1.12 * */ public class PropertiesCasRealmDelegate implements CasRealm { @@ -54,7 +55,7 @@ public class PropertiesCasRealmDelegate implements CasRealm { private String propertiesFilePath; /** Map of usernames to roles */ - private Map roleMap; + private Map> roleMap; /** * @param path Path to properties file container username/role data. @@ -76,15 +77,15 @@ public class PropertiesCasRealmDelegate implements CasRealm { final Properties properties = new Properties(); try { properties.load(new BufferedInputStream(new FileInputStream(file))); - } catch (IOException e) { + } catch (final IOException e) { throw new IllegalStateException("Error loading users/roles from " + file, e); } - roleMap = new HashMap(properties.size()); - final Iterator keys = properties.keySet().iterator(); - while (keys.hasNext()) { - final String user = (String) keys.next(); + this.roleMap = new HashMap>(properties.size()); + final Set keys = new HashSet(properties.keySet()); + + for (final String user : keys) { // Use TreeSet to sort roles - final Set roleSet = new HashSet(); + final Set roleSet = new HashSet(); final String[] roles = properties.getProperty(user).split(",\\s*"); roleSet.addAll(Arrays.asList(roles)); roleMap.put(user, roleSet); @@ -93,7 +94,7 @@ public class PropertiesCasRealmDelegate implements CasRealm { /** {@inheritDoc} */ public Principal authenticate(final Principal p) { - if (roleMap.containsKey(p.getName())) { + if (this.roleMap.containsKey(p.getName())) { return p; } else { return null; @@ -102,7 +103,7 @@ public class PropertiesCasRealmDelegate implements CasRealm { /** {@inheritDoc} */ public String[] getRoles(final Principal p) { - final Set roleSet = (Set) roleMap.get(p.getName()); + final Set roleSet = this.roleMap.get(p.getName()); final String[] roles = new String[roleSet.size()]; roleSet.toArray(roles); return roles; @@ -110,7 +111,7 @@ public class PropertiesCasRealmDelegate implements CasRealm { /** {@inheritDoc} */ public boolean hasRole(final Principal principal, final String role) { - final Set roles = (Set) roleMap.get(principal.getName()); + final Set roles = this.roleMap.get(principal.getName()); return roles != null && roles.contains(role); } diff --git a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/StaticUriLogoutHandler.java b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/StaticUriLogoutHandler.java index ddf61f3..d4a4fdc 100644 --- a/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/StaticUriLogoutHandler.java +++ b/cas-client-integration-tomcat-common/src/main/java/org/jasig/cas/client/tomcat/StaticUriLogoutHandler.java @@ -46,7 +46,7 @@ public final class StaticUriLogoutHandler extends AbstractLogoutHandler { } /** - * Initalializes the component for use. + * Initializes the component for use. */ public void init() { CommonUtils.assertNotNull(this.logoutUri, "logoutUri cannot be null."); diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/AssertionCasRealm.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/AssertionCasRealm.java index 424f2aa..9dcbc15 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/AssertionCasRealm.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/AssertionCasRealm.java @@ -47,11 +47,11 @@ public class AssertionCasRealm extends AbstractCasRealm { * @param name Name of the attribute in the principal that contains role data. */ public void setRoleAttributeName(final String name) { - delegate.setRoleAttributeName(name); + this.delegate.setRoleAttributeName(name); } /** {@inheritDoc} */ protected CasRealm getDelegate() { - return delegate; + return this.delegate; } } diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Cas10CasAuthenticator.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Cas10CasAuthenticator.java index 43f0d9c..b30bdb4 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Cas10CasAuthenticator.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Cas10CasAuthenticator.java @@ -54,6 +54,6 @@ public class Cas10CasAuthenticator extends AbstractCasAuthenticator { super.start(); this.ticketValidator = new Cas10TicketValidator(getCasServerUrlPrefix()); lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null); - this.log.info("Startup completed."); + log.info("Startup completed."); } } diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/PropertiesCasRealm.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/PropertiesCasRealm.java index 59eb85b..080d1ac 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/PropertiesCasRealm.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/PropertiesCasRealm.java @@ -36,6 +36,7 @@ import org.jasig.cas.client.tomcat.PropertiesCasRealmDelegate; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public class PropertiesCasRealm extends AbstractCasRealm { @@ -46,19 +47,19 @@ public class PropertiesCasRealm extends AbstractCasRealm { * @param path Path to properties file container username/role data. */ public void setPropertiesFilePath(final String path) { - delegate.setPropertiesFilePath(path); + this.delegate.setPropertiesFilePath(path); } /** {@inheritDoc} */ public void start() throws LifecycleException { super.start(); - delegate.readProperties(); + this.delegate.readProperties(); this.log.info("Startup completed."); } /** {@inheritDoc} */ protected CasRealm getDelegate() { - return delegate; + return this.delegate; } } diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/RegexUriLogoutValve.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/RegexUriLogoutValve.java index c0b1dbd..150e377 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/RegexUriLogoutValve.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/RegexUriLogoutValve.java @@ -58,6 +58,6 @@ public final class RegexUriLogoutValve extends AbstractLogoutValve { /** {@inheritDoc} */ protected LogoutHandler getLogoutHandler() { - return logoutHandler; + return this.logoutHandler; } } diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Saml11Authenticator.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Saml11Authenticator.java index 4ff19ed..9247985 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Saml11Authenticator.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/Saml11Authenticator.java @@ -28,6 +28,7 @@ import org.jasig.cas.client.validation.TicketValidator; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public class Saml11Authenticator extends AbstractAuthenticator { @@ -41,7 +42,6 @@ public class Saml11Authenticator extends AbstractAuthenticator { /** SAML protocol clock drift tolerance in ms */ private int tolerance = -1; - /** * @param ms SAML clock drift tolerance in milliseconds. */ diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/SingleSignOutValve.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/SingleSignOutValve.java index 66e5b85..d7c5d12 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/SingleSignOutValve.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/SingleSignOutValve.java @@ -39,6 +39,7 @@ import org.jasig.cas.client.session.SingleSignOutHandler; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public class SingleSignOutValve extends AbstractLifecycleValve implements SessionListener { diff --git a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/StaticUriLogoutValve.java b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/StaticUriLogoutValve.java index 30ec3db..0ddbd09 100644 --- a/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/StaticUriLogoutValve.java +++ b/cas-client-integration-tomcat-v6/src/main/java/org/jasig/cas/client/tomcat/v6/StaticUriLogoutValve.java @@ -58,6 +58,6 @@ public final class StaticUriLogoutValve extends AbstractLogoutValve { /** {@inheritDoc} */ protected LogoutHandler getLogoutHandler() { - return logoutHandler; + return this.logoutHandler; } } diff --git a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/PropertiesCasRealm.java b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/PropertiesCasRealm.java index 6d83403..ce1dee1 100644 --- a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/PropertiesCasRealm.java +++ b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/PropertiesCasRealm.java @@ -36,6 +36,7 @@ import org.jasig.cas.client.tomcat.PropertiesCasRealmDelegate; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public class PropertiesCasRealm extends AbstractCasRealm { @@ -46,18 +47,18 @@ public class PropertiesCasRealm extends AbstractCasRealm { * @param path Path to properties file container username/role data. */ public void setPropertiesFilePath(final String path) { - delegate.setPropertiesFilePath(path); + this.delegate.setPropertiesFilePath(path); } /** {@inheritDoc} */ protected void startInternal() throws LifecycleException { super.startInternal(); - delegate.readProperties(); + this.delegate.readProperties(); } /** {@inheritDoc} */ protected CasRealm getDelegate() { - return delegate; + return this.delegate; } } diff --git a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/RegexUriLogoutValve.java b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/RegexUriLogoutValve.java index e0be05f..17a8208 100644 --- a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/RegexUriLogoutValve.java +++ b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/RegexUriLogoutValve.java @@ -34,9 +34,6 @@ import org.jasig.cas.client.tomcat.RegexUriLogoutHandler; * @since 3.1.12 */ public final class RegexUriLogoutValve extends AbstractLogoutValve { - - /** Logger instance */ - private final Log log = LogFactory.getLog(getClass()); private RegexUriLogoutHandler logoutHandler = new RegexUriLogoutHandler(); @@ -56,6 +53,6 @@ public final class RegexUriLogoutValve extends AbstractLogoutValve { /** {@inheritDoc} */ protected LogoutHandler getLogoutHandler() { - return logoutHandler; + return this.logoutHandler; } } diff --git a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/Saml11Authenticator.java b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/Saml11Authenticator.java index 655f66e..8487795 100644 --- a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/Saml11Authenticator.java +++ b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/Saml11Authenticator.java @@ -28,9 +28,11 @@ import org.jasig.cas.client.validation.TicketValidator; * * @author Marvin S. Addison * @version $Revision$ + * @since 3.1.12 * */ public final class Saml11Authenticator extends AbstractAuthenticator { + public static final String AUTH_METHOD = "SAML11"; private static final String NAME = Saml11Authenticator.class.getName(); diff --git a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/SingleSignOutValve.java b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/SingleSignOutValve.java index f4a4c45..f1b0249 100644 --- a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/SingleSignOutValve.java +++ b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/SingleSignOutValve.java @@ -41,7 +41,8 @@ import org.jasig.cas.client.session.SingleSignOutHandler; * HTTP session. * * @author Marvin S. Addison - * @version $Revision$ + * @version $Revision$ $Date$ + * @since 3.1.12 * */ public class SingleSignOutValve extends ValveBase implements SessionListener { diff --git a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/StaticUriLogoutValve.java b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/StaticUriLogoutValve.java index 196e061..aaf5502 100644 --- a/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/StaticUriLogoutValve.java +++ b/cas-client-integration-tomcat-v7/src/main/java/org/jasig/cas/client/tomcat/v7/StaticUriLogoutValve.java @@ -20,8 +20,6 @@ package org.jasig.cas.client.tomcat.v7; import org.apache.catalina.LifecycleException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.jasig.cas.client.tomcat.LogoutHandler; import org.jasig.cas.client.tomcat.StaticUriLogoutHandler; @@ -35,9 +33,6 @@ import org.jasig.cas.client.tomcat.StaticUriLogoutHandler; */ public final class StaticUriLogoutValve extends AbstractLogoutValve { - /** Logger instance */ - private final Log log = LogFactory.getLog(getClass()); - private StaticUriLogoutHandler logoutHandler = new StaticUriLogoutHandler(); public void setRedirectUrl(final String redirectUrl) { @@ -56,6 +51,6 @@ public final class StaticUriLogoutValve extends AbstractLogoutValve { /** {@inheritDoc} */ protected LogoutHandler getLogoutHandler() { - return logoutHandler; + return this.logoutHandler; } } diff --git a/pom.xml b/pom.xml index c468485..d23d59c 100644 --- a/pom.xml +++ b/pom.xml @@ -115,7 +115,7 @@ NwXMoqnmqmUUnosrspqmmmmmmUUnosrspqmmmmmmUUA1jJ junit junit - 3.8.1 + 4.8.2 test