TypeCode objTypeCode = CorbaUtils.getTypeCode(orb, objIdlType, staxBindingImpl.getCorbaTypeMaps());
CorbaTypeImpl type = CorbaUtils.getCorbaType(objIdlType, staxBindingImpl.getCorbaTypeMaps());
assertTrue(type instanceof Array);
Array arrayType = (Array)type;
CorbaArrayHandler obj = new CorbaArrayHandler(objName, objIdlType, objTypeCode, arrayType);
assertNotNull(obj);
List<CorbaObjectHandler> objElements = new ArrayList<CorbaObjectHandler>();
int arrayData[] = { 2, 4, 6, 8, 10 };
for (int i = 0 ; i < arrayData.length; ++i) {
QName elName = new QName("item");
QName elIdlType = CorbaConstants.NT_CORBA_LONG;
TypeCode elTC = orb.get_primitive_tc(TCKind.tk_long);
CorbaPrimitiveHandler el = new CorbaPrimitiveHandler(elName, elIdlType, elTC, null);
el.setValue(Long.valueOf(arrayData[i]));
obj.addElement(el);
objElements.add(el);
}
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
XMLEventWriter evtWriter = null;
try {
evtWriter = outputFactory.createXMLEventWriter(outStream);
} catch (XMLStreamException ex) {
}
assertNotNull(evtWriter);
try {
XMLEventFactory factory = XMLEventFactory.newInstance();
StartElement startEl = factory.createStartElement(obj.getName(), null, null);
evtWriter.add(startEl);
staxBindingImpl.writeArrayToStax(obj, evtWriter, factory);
EndElement endEl = factory.createEndElement(obj.getName(), null);
evtWriter.add(endEl);
evtWriter.flush();
} catch (XMLStreamException ex) {
}
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = null;
try {
evtReader = inputFactory.createXMLEventReader(inStream);
// read the first tag which should be a start document
XMLEvent evt = evtReader.nextEvent();
assertTrue(evt.isStartDocument());
} catch (XMLStreamException ex) {
}
assertNotNull(evtReader);
CorbaObjectHandler result = staxBindingImpl.readArrayFromStax(evtReader,
obj.getIdlType(),
obj.getTypeCode());
assertNotNull(result);
assertTrue(result instanceof CorbaArrayHandler);
CorbaArrayHandler resultObj = (CorbaArrayHandler)result;
assertTrue(resultObj.getName().equals(obj.getName()));
assertTrue(resultObj.getIdlType().equals(obj.getIdlType()));
assertTrue(resultObj.getTypeCode().equal(obj.getTypeCode()));
List<CorbaObjectHandler> resultElements = resultObj.getElements();
for (int i = 0; i < resultElements.size(); ++i) {
assertTrue(resultElements.get(i) instanceof CorbaPrimitiveHandler);
CorbaPrimitiveHandler resultEl = (CorbaPrimitiveHandler)resultElements.get(i);
CorbaPrimitiveHandler objEl = (CorbaPrimitiveHandler)objElements.get(i);
assertTrue(resultEl.getValueData().equals(objEl.getValueData()));