public CorbaObjectHandler readPrimitiveFromStax(XMLEventReader reader, QName idlType, TypeCode tc)
throws CorbaBindingException {
try {
StartElement startEl = reader.nextEvent().asStartElement();
Characters charEl = reader.nextEvent().asCharacters();
reader.nextEvent().asEndElement();
if (tc.kind().value() == TCKind._tk_any) {
Iterator iter = startEl.getAttributes();
String anySchemaType = null;
while (iter.hasNext()) {
Attribute attr = (Attribute)iter.next();
QName attrName = attr.getName();
if (attrName.getNamespaceURI().equals(XSI_NAMESPACE_URI)
&& attrName.getLocalPart().equals("type")) {
anySchemaType = attr.getValue();
break;
}
}
CorbaAnyHandler obj = new CorbaAnyHandler(startEl.getName(), idlType, tc, null);
obj.setValueFromData(orb, charEl.getData(), anySchemaType);
return obj;
} else {
CorbaPrimitiveHandler obj = new CorbaPrimitiveHandler(startEl.getName(), idlType, tc, null);
obj.setValueFromData(charEl.getData());
return obj;
}
} catch (java.lang.Exception ex) {
LOG.log(Level.SEVERE, "Error: Object not correctly defined in the XML reader");
throw new CorbaBindingException("Invalid XML event read", ex);