/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.jaas; import java.io.IOException; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.NameCallback; import javax.security.auth.callback.PasswordCallback; import javax.security.auth.callback.UnsupportedCallbackException; /** * Class that implements a callback handler to help with jaas testing. * * @author Middleware Services */ public class TestCallbackHandler implements CallbackHandler { /** test name. */ private String name; /** test password. */ private String password; /** @param s to set name with */ public void setName(final String s) { name = s; } /** @param s to set password with */ public void setPassword(final String s) { password = s; } /** * @param callbacks to handle * * @throws IOException if an input or output error occurs * @throws UnsupportedCallbackException if a supplied callback cannot be handled */ public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (Callback callback : callbacks) { if (callback instanceof NameCallback) { final NameCallback nc = (NameCallback) callback; nc.setName(name); } else if (callback instanceof PasswordCallback) { final PasswordCallback pc = (PasswordCallback) callback; if (password != null) { pc.setPassword(password.toCharArray()); } } else { throw new UnsupportedCallbackException(callback, "Unsupported"); } } } }