/* 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");
}
}
}
}