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;
Object resultMember1ValueObj = resultMember1.getValue();
assertTrue(resultMember1ValueObj instanceof Boolean);
Boolean resultMember1Value = (Boolean)resultMember1ValueObj;
assertTrue(resultMember1Value.booleanValue() == member1Value.booleanValue());
CorbaObjectHandler resultMember2Obj = resultMembers.get(1);
assertTrue(resultMember2Obj instanceof CorbaPrimitiveHandler);
CorbaPrimitiveHandler resultMember2 = (CorbaPrimitiveHandler)resultMember2Obj;
Object resultMember2ValueObj = resultMember2.getValue();
assertTrue(resultMember2ValueObj instanceof String);
String resultMember2Value = (String)resultMember2ValueObj;
assertTrue(resultMember2Value.equals(member2Value));
CorbaObjectHandler resultMember3Obj = resultMembers.get(2);
assertTrue(resultMember3Obj instanceof CorbaPrimitiveHandler);
CorbaPrimitiveHandler resultMember3 = (CorbaPrimitiveHandler)resultMember3Obj;
Object resultMember3ValueObj = resultMember3.getValue();
assertTrue(resultMember3ValueObj instanceof Float);
Float resultMember3Value = (Float)resultMember3ValueObj;
assertTrue(resultMember3Value.floatValue() == member3Value.floatValue());
}