}
return associationEnd;
}
private AnnotationElement readAnnotationElement(final XMLStreamReader reader) throws XMLStreamException {
AnnotationElement aElement = new AnnotationElement();
List<AnnotationElement> annotationElements = new ArrayList<AnnotationElement>();
List<AnnotationAttribute> annotationAttributes = new ArrayList<AnnotationAttribute>();
aElement.setName(reader.getLocalName());
String elementNamespace = reader.getNamespaceURI();
if (!edmNamespaces.contains(elementNamespace)) {
aElement.setPrefix(reader.getPrefix());
aElement.setNamespace(elementNamespace);
}
for (int i = 0; i < reader.getAttributeCount(); i++) {
AnnotationAttribute annotationAttribute = new AnnotationAttribute();
annotationAttribute.setText(reader.getAttributeValue(i));
annotationAttribute.setName(reader.getAttributeLocalName(i));
annotationAttribute.setPrefix(reader.getAttributePrefix(i));
String namespace = reader.getAttributeNamespace(i);
if (namespace != null && !isDefaultNamespace(namespace)) {
annotationAttribute.setNamespace(namespace);
}
annotationAttributes.add(annotationAttribute);
}
if (!annotationAttributes.isEmpty()) {
aElement.setAttributes(annotationAttributes);
}
while (reader.hasNext() && !(reader.isEndElement() && aElement.getName() != null
&& aElement.getName().equals(reader.getLocalName()))) {
reader.next();
if (reader.isStartElement()) {
annotationElements.add(readAnnotationElement(reader));
} else if (reader.isCharacters()) {
String elementText = "";
do {
elementText = elementText + reader.getText();
reader.next();
} while (reader.isCharacters());
aElement.setText(elementText);
}
}
if (!annotationElements.isEmpty()) {
aElement.setChildElements(annotationElements);
}
return aElement;
}