}
private ExtensionElementImpl parseElement(final XMLStreamReader reader) throws XMLStreamException,
EntityProviderException {
List<ExtensionElement> extensionElements = new ArrayList<ExtensionElement>();
ExtensionElementImpl extElement =
new ExtensionElementImpl().setName(reader.getLocalName()).setNamespace(reader.getNamespaceURI()).setPrefix(
reader.getPrefix());
extElement.setAttributes(parseAttribute(reader));
while (reader.hasNext()
&& !(reader.isEndElement() && extElement.getName() != null && extElement.getName()
.equals(reader.getLocalName()))) {
reader.next();
if (reader.isStartElement()) {
extensionElements.add(parseExtensionElement(reader));
} else if (reader.isCharacters()) {
String extElementText = "";
do {
extElementText = extElementText + reader.getText();
reader.next();
} while (reader.isCharacters());
extElement.setText(extElementText);
}
}
extElement.setElements(extensionElements);
if (extElement.getText() == null && extElement.getAttributes().isEmpty() && extElement.getElements().isEmpty()) {
throw new EntityProviderException(EntityProviderException.INVALID_STATE.addContent("Invalid extension element"));
}
return extElement;
}