package fr.mch.mdo.restaurant.services.authentication.jaas;
import java.util.Map;
import javax.security.auth.callback.PasswordCallback;
import fr.mch.mdo.logs.ILogger;
import fr.mch.mdo.restaurant.authentication.IMdoCallback;
import fr.mch.mdo.restaurant.authentication.MdoCallBackType;
import fr.mch.mdo.restaurant.exception.MdoAuthenticationException;
import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl;
/**
* @author user
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates. To enable and disable the creation of type
* comments go to Window>Preferences>Java>Code Generation.
*/
public class PasswordMdoCallback extends PasswordCallback implements IMdoCallback
{
/**
* Default Serial Version UID.
*/
private static final long serialVersionUID = 1L;
private ILogger logger;
public PasswordMdoCallback() {
super("prompt", false);
this.logger = LoggerServiceImpl.getInstance().getLogger(PasswordMdoCallback.class.getName());
}
@Override
public ILogger getLogger() {
return logger;
}
@Override
public void setLogger(ILogger logger) {
this.logger = logger;
}
@Override
public void callback(Map<MdoCallBackType, Object> properties) throws MdoAuthenticationException {
try {
String password = (String) properties.get(MdoCallBackType.MDO_CALLBACK_PASSWORD);
if (password != null) {
super.setPassword(password.toCharArray());
} else {
logger.fatal("message.error.authentication.callback.data.error", new Object[] {this.getClass().getName()});
throw new MdoAuthenticationException("message.error.authentication.callback.data.error", new Object[] {this.getClass().getName()});
}
} catch(Exception e) {
logger.fatal("message.error.authentication.callback.data.error", new Object[] {this.getClass().getName()}, e);
throw new MdoAuthenticationException("message.error.authentication.callback.data.error", new Object[] {this.getClass().getName()}, e);
}
}
}