*/
private ServiceProvidersType parseServiceProviders(XMLEventReader xmlEventReader) throws ParsingException {
StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader);
StaxParserUtil.validate(startElement, SERVICE_PROVIDERS_ELEMENT);
ServiceProvidersType serviceProviders = new ServiceProvidersType();
// parse all token providers one by one.
while (xmlEventReader.hasNext()) {
XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader);
if (xmlEvent == null)
break;
if (xmlEvent instanceof EndElement) {
EndElement endElement = (EndElement) StaxParserUtil.getNextEvent(xmlEventReader);
String endElementName = StaxParserUtil.getEndElementName(endElement);
if (endElementName.equals(SERVICE_PROVIDERS_ELEMENT))
break;
else
throw logger.parserUnknownEndElement(endElementName);
}
StartElement subEvent = StaxParserUtil.peekNextStartElement(xmlEventReader);
if (subEvent == null)
break;
String elementName = StaxParserUtil.getStartElementName(subEvent);
if (SERVICE_PROVIDER_ELEMENT.equalsIgnoreCase(elementName)) {
subEvent = StaxParserUtil.getNextStartElement(xmlEventReader);
StaxParserUtil.validate(subEvent, SERVICE_PROVIDER_ELEMENT);
ServiceProviderType serviceProvider = new ServiceProviderType();
// parse the provider attributes (endpoint, token type and truststore alias).
QName attributeQName = new QName("", TOKEN_TYPE_ATTRIB);
Attribute attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
serviceProvider.setTokenType(StaxParserUtil.getAttributeValue(attribute));
attributeQName = new QName("", ENDPOINT_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
serviceProvider.setEndpoint(StaxParserUtil.getAttributeValue(attribute));
attributeQName = new QName("", TRUSTSTORE_ALIAS_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
serviceProvider.setTruststoreAlias(StaxParserUtil.getAttributeValue(attribute));
EndElement endElement = StaxParserUtil.getNextEndElement(xmlEventReader);
StaxParserUtil.validate(endElement, SERVICE_PROVIDER_ELEMENT);
serviceProviders.add(serviceProvider);
} else
throw logger.parserUnknownTag(elementName, subEvent.getLocation());
}
return serviceProviders;
}