package org.apereo.cas.authentication;
import java.io.Serializable;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
/**
* Basic credential metadata implementation that stores the original credential ID and the original credential type.
* This can be used as a simple converter for any {@link Credential} that doesn't implement {@link CredentialMetaData}.
*
* @author Marvin S. Addison
* @since 4.0.0
*/
public class BasicCredentialMetaData implements CredentialMetaData, Serializable {
/** Serialization version marker. */
private static final long serialVersionUID = 4929579849241505377L;
/** Credential type unique identifier. */
private String id;
/** Type of original credential. */
private Class<? extends Credential> credentialClass;
/** No-arg constructor for serialization support. */
private BasicCredentialMetaData() {
this.id = null;
}
/**
* Creates a new instance from the given credential.
*
* @param credential Credential for which metadata should be created.
*/
public BasicCredentialMetaData(final Credential credential) {
this.id = credential.getId();
this.credentialClass = credential.getClass();
}
@Override
public String getId() {
return this.id;
}
@Override
public Class<? extends Credential> getCredentialClass() {
return this.credentialClass;
}
@Override
public int hashCode() {
return new HashCodeBuilder(19, 21).append(this.id).append(this.credentialClass).toHashCode();
}
@Override
public boolean equals(final Object other) {
if (!(other instanceof BasicCredentialMetaData)) {
return false;
}
final BasicCredentialMetaData md = (BasicCredentialMetaData) other;
final EqualsBuilder builder = new EqualsBuilder();
builder.append(this.id, md.id);
builder.append(this.credentialClass, md.credentialClass);
return builder.isEquals();
}
}