package org.apereo.cas.authentication; import com.fasterxml.jackson.annotation.JsonIgnore; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import java.io.Serializable; /** * Base class for CAS credentials that are safe for long-term storage. * * @author Marvin S. Addison * @since 4.0.0 */ public abstract class AbstractCredential implements Credential, CredentialMetaData, Serializable { /** Serialization version marker. */ private static final long serialVersionUID = 8196868021183513898L; /** * @return The credential identifier. */ @Override public String toString() { return getId(); } @Override public boolean equals(final Object other) { if (other == null) { return false; } if (!(other instanceof Credential)) { return false; } if (other == this) { return true; } final EqualsBuilder builder = new EqualsBuilder(); builder.append(getId(), ((Credential) other).getId()); return builder.isEquals(); } @Override public int hashCode() { final HashCodeBuilder builder = new HashCodeBuilder(11, 41); builder.append(getClass().getName()); builder.append(getId()); return builder.toHashCode(); } @JsonIgnore @Override public Class<? extends Credential> getCredentialClass() { return this.getClass(); } }