TypeCode objTypeCode = CorbaUtils.getTypeCode(orb, objIdlType, staxObject.getTypeMaps());
CorbaTypeImpl type = CorbaUtils.getCorbaType(objIdlType, staxObject.getTypeMaps());
assertTrue(type instanceof Sequence);
Sequence seqType = (Sequence)type;
CorbaSequenceHandler obj = new CorbaSequenceHandler(objName, objIdlType, objTypeCode, seqType);
assertNotNull(obj);
List<CorbaObjectHandler> objElements = new ArrayList<CorbaObjectHandler>();
short seqData[] = { 1, 3, 5, 7 };
for (int i = 0 ; i < seqData.length; ++i) {
QName elName = new QName("item");
QName elIdlType = CorbaConstants.NT_CORBA_SHORT;
TypeCode elTC = orb.get_primitive_tc(TCKind.tk_short);
CorbaPrimitiveHandler el = new CorbaPrimitiveHandler(elName, elIdlType, elTC, null);
el.setValue(Short.valueOf(seqData[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();
staxObject.writeObjectToStax(obj, evtWriter, factory);
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 = staxObject.readObjectFromStax(evtReader,
obj.getIdlType());
assertNotNull(result);
assertTrue(result instanceof CorbaSequenceHandler);
CorbaSequenceHandler resultObj = (CorbaSequenceHandler)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.getDataFromValue().equals(objEl.getDataFromValue()));