QName name = obj.getName();
QName elementName = el.getQName();
if (!CorbaUtils.isElementFormQualified(serviceInfo, name.getNamespaceURI())) {
elementName = new QName("", elementName.getLocalPart());
}
CorbaObjectHandler elementObj =
CorbaHandlerUtils.initializeObjectHandler(orb,
elementName,
seqElementType,
typeMaps,
serviceInfo);
obj.setTemplateElement(elementObj);
boolean nestedSequence = isNestedSequence(seqElementType);
if (bound == 0) {
LOG.log(Level.INFO, "Unbounded sequence found");
XMLEvent event = reader.peek();
while (event.getEventType() == XMLStreamConstants.START_ELEMENT) {
StartElement startEl = (StartElement) event;
//REVISIT, check if qualified or unqualified
if (startEl.getName().equals(el.getQName())) {
if (nestedSequence) {
reader.nextEvent().asStartElement();
}
} else {
break;
}
CorbaObjectHandler element = readObjectFromStax(reader, seqElementType, el, true);
if (nestedSequence) {
reader.nextEvent().asEndElement();
}
obj.addElement(element);
event = reader.peek();
}
} else {
LOG.log(Level.INFO, "Bounded sequence found");
for (long i = 0; i < bound; ++i) {
if (nestedSequence) {
reader.nextEvent().asStartElement();
}
CorbaObjectHandler element = readObjectFromStax(reader, seqElementType, el, true);
if (nestedSequence) {
reader.nextEvent().asEndElement();
}
obj.addElement(element);
}