QName objIdlType = new QName(staxTestNamespaceURI, "TestStruct", staxTestPrefix);
CorbaTypeImpl type = CorbaUtils.getCorbaType(objIdlType, staxObject.getTypeMaps());
assertTrue(type instanceof Struct);
Struct structType = (Struct)type;
TypeCode objTypeCode = CorbaUtils.getTypeCode(orb, objIdlType, staxObject.getTypeMaps());
CorbaStructHandler obj = new CorbaStructHandler(objName, objIdlType, objTypeCode, structType);
assertNotNull(obj);
List<MemberType> structMembers = structType.getMember();
// For this test, we know what each of the members are. Create the correct handler and assign
// each member a value
MemberType m1 = structMembers.get(0);
TypeCode m1TypeCode = CorbaUtils.getTypeCode(orb, m1.getIdltype(), staxObject.getTypeMaps());
CorbaPrimitiveHandler member1 = new CorbaPrimitiveHandler(new QName(m1.getName()),
m1.getIdltype(),
m1TypeCode,
null);
Boolean member1Value = new Boolean(false);
member1.setValue(member1Value);
obj.addMember(member1);
MemberType m2 = structMembers.get(1);
TypeCode m2TypeCode = CorbaUtils.getTypeCode(orb, m2.getIdltype(), staxObject.getTypeMaps());
CorbaPrimitiveHandler member2 = new CorbaPrimitiveHandler(new QName(m2.getName()),
m2.getIdltype(),
m2TypeCode,
null);
String member2Value = "Member 2 string";
member2.setValue(member2Value);
obj.addMember(member2);
MemberType m3 = structMembers.get(2);
TypeCode m3TypeCode = CorbaUtils.getTypeCode(orb, m3.getIdltype(), staxObject.getTypeMaps());
CorbaPrimitiveHandler member3 = new CorbaPrimitiveHandler(new QName(m3.getName()),
m3.getIdltype(),
m3TypeCode,
null);
Float member3Value = new Float(12345.678);
member3.setValue(member3Value);
obj.addMember(member3);
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 resultObj = staxObject.readObjectFromStax(evtReader,
obj.getIdlType());
assertNotNull(resultObj);
assertTrue(resultObj instanceof CorbaStructHandler);
CorbaStructHandler result = (CorbaStructHandler)resultObj;
List<CorbaObjectHandler> resultMembers = result.getMembers();
assertTrue(resultMembers.size() == 3);
CorbaObjectHandler resultMember1Obj = resultMembers.get(0);
assertTrue(resultMember1Obj instanceof CorbaPrimitiveHandler);
CorbaPrimitiveHandler resultMember1 = (CorbaPrimitiveHandler)resultMember1Obj;