package org.apereo.cas.authentication.exceptions; import org.apereo.cas.authentication.Authentication; import org.apereo.cas.authentication.PrincipalException; import java.util.Collections; import java.util.Map; /** * Describes an error condition where a principal could not be resolved. * * @author Marvin S. Addison * @since 4.0.0 */ public class UnresolvedPrincipalException extends PrincipalException { /** * Serialization version marker. */ private static final long serialVersionUID = 380456166081802820L; /** * Error message when there was no error that prevent principal resolution. */ private static final String UNRESOLVED_PRINCIPAL = "No resolver produced a principal."; /** * Creates a new instance from an authentication event that was successful prior to principal resolution. * * @param authentication Authentication event. */ public UnresolvedPrincipalException(final Authentication authentication) { super(UNRESOLVED_PRINCIPAL, authentication.getFailures(), authentication.getSuccesses()); } /** * Instantiates a new Unresolved principal exception. */ public UnresolvedPrincipalException() { super(UNRESOLVED_PRINCIPAL, Collections.emptyMap(), Collections.emptyMap()); } /** * Instantiates a new Unresolved principal exception. * * @param e the e */ public UnresolvedPrincipalException(final Exception e) { super(e.getMessage(), Collections.emptyMap(), Collections.emptyMap()); } /** * Instantiates a new Unresolved principal exception. * Successes are tracked as an empty map. * * @param handlerErrors the handler errors */ public UnresolvedPrincipalException(final Map<String, Class<? extends Exception>> handlerErrors) { super(UNRESOLVED_PRINCIPAL, handlerErrors, Collections.emptyMap()); } /** * Creates a new instance from an authentication event that was successful prior to principal resolution. * This form should be used when a resolver exception prevented principal resolution. * * @param authentication Authentication event. * @param cause Exception that prevented principal resolution. */ public UnresolvedPrincipalException(final Authentication authentication, final Exception cause) { super(cause.getMessage(), authentication.getFailures(), authentication.getSuccesses()); } }