String elementName = StaxParserUtil.getStartElementName(subEvent);
if (TOKEN_PROVIDER_ELEMENT.equalsIgnoreCase(elementName)) {
subEvent = StaxParserUtil.getNextStartElement(xmlEventReader);
StaxParserUtil.validate(subEvent, TOKEN_PROVIDER_ELEMENT);
TokenProviderType tokenProvider = new TokenProviderType();
// parse the provider attributes (provider class, token type, token element, token namespace).
QName attributeQName = new QName("", PROVIDER_CLASS_ATTRIB);
Attribute attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
tokenProvider.setProviderClass(StaxParserUtil.getAttributeValue(attribute));
attributeQName = new QName("", TOKEN_TYPE_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
tokenProvider.setTokenType(StaxParserUtil.getAttributeValue(attribute));
attributeQName = new QName("", TOKEN_ELEMENT_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
tokenProvider.setTokenElement(StaxParserUtil.getAttributeValue(attribute));
attributeQName = new QName("", TOKEN_ELEMENT_NS_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
tokenProvider.setTokenElementNS(StaxParserUtil.getAttributeValue(attribute));
// parse the provider properties.
while (xmlEventReader.hasNext()) {
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(TOKEN_PROVIDER_ELEMENT))
break;
else
throw logger.parserUnknownEndElement(endElementName);
}
subEvent = StaxParserUtil.peekNextStartElement(xmlEventReader);
if (subEvent == null)
break;
elementName = StaxParserUtil.getStartElementName(subEvent);
if (PROPERTY_ELEMENT.equalsIgnoreCase(elementName)) {
// parse the property key and value.
subEvent = StaxParserUtil.getNextStartElement(xmlEventReader);
KeyValueType keyValue = new KeyValueType();
// parse the key and value attributes.
attributeQName = new QName("", KEY_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
keyValue.setKey(StaxParserUtil.getAttributeValue(attribute));
attributeQName = new QName("", VALUE_ATTRIB);
attribute = subEvent.getAttributeByName(attributeQName);
if (attribute != null)
keyValue.setValue(StaxParserUtil.getAttributeValue(attribute));
EndElement endElement = StaxParserUtil.getNextEndElement(xmlEventReader);
StaxParserUtil.validate(endElement, PROPERTY_ELEMENT);
tokenProvider.add(keyValue);
} else
throw logger.parserUnknownTag(elementName, subEvent.getLocation());
}
tokenProviders.add(tokenProvider);
} else