public AuthenticationRequest extractSecurityInfo(final String soap) throws ExtractionException
{
if (soap == null || !soap.startsWith("<"))
return null;
XMLEventReader xmlReader = null;
User user = null;
Set<Object> credentials = new HashSet<Object>();
try
{
xmlReader = XML_INPUT_FACTORY.createXMLEventReader(new StringReader(soap));
while (xmlReader.hasNext())
{
XMLEvent xmlEvent = xmlReader.nextEvent();
if (isStartOfHeader(xmlEvent))
{
while (xmlReader.hasNext())
{
xmlEvent = xmlReader.nextEvent();
if (isStartOfUsernameToken(xmlEvent))
{
while (xmlReader.hasNext())
{
xmlEvent = xmlReader.nextEvent();
if (isStartOfUsername(xmlEvent))
{
XMLEvent username = xmlReader.nextEvent();
if (username.isCharacters())
{
// username is a required element.
user = new User(((Characters) username).getData());
}
}
if (isStartOfPassword(xmlEvent))
{
final XMLEvent password = xmlReader.nextEvent();
if (password.isCharacters())
{
final Characters characters = (Characters) password;
final String data = characters.getData();
// Password is an optional element