package org.apereo.cas.util.transforms; import org.apereo.cas.authentication.handler.PrincipalNameTransformer; import javax.annotation.PostConstruct; /** * A transformer that converts the form uid to either lowercase or * uppercase. The result is also trimmed. The transformer is also able * to accept and work on the result of a previous transformer that might * have modified the uid, such that the two can be chained. * @author Misagh Moayyed * @since 4.1.0 */ public class ConvertCasePrincipalNameTransformer implements PrincipalNameTransformer { private boolean toUpperCase; private PrincipalNameTransformer delegateTransformer; /** * Instantiates a new transformer. */ public ConvertCasePrincipalNameTransformer() {} /** * Instantiates a new transformer, accepting an inner delegate. * * @param delegate the delegate */ public ConvertCasePrincipalNameTransformer(final PrincipalNameTransformer delegate) { this.delegateTransformer = delegate; } /** * Init the default delegate transformer. */ @PostConstruct public void init() { if (this.delegateTransformer == null) { this.delegateTransformer = formUserId -> formUserId; } } @Override public String transform(final String formUserId) { final String result = this.delegateTransformer.transform(formUserId.trim()).trim(); return this.toUpperCase ? result.toUpperCase(): result.toLowerCase(); } public void setToUpperCase(final boolean toUpperCase) { this.toUpperCase = toUpperCase; } }