this.read(iter.next());
}
}
public void readSequence(CorbaObjectHandler obj) throws CorbaBindingException {
CorbaSequenceHandler sequenceObj = (CorbaSequenceHandler)obj;
List<CorbaObjectHandler> seqElements = sequenceObj.getElements();
int length = stream.read_ulong();
if (seqElements.size() == 0) {
// No predefined elements means an unbounded sequence. Use the template element
// to construct each object that is in the input stream.
CorbaObjectHandler template = sequenceObj.getTemplateElement();
Class<?> templateClass = template.getClass();
// we know that we are after the 4 parameter version of the constructor
Class[] paramClasses = new Class[4];
Object[] params = new Object[4];
paramClasses[0] = QName.class;
params[0] = template.getName();
paramClasses[1] = QName.class;
params[1] = template.getIdlType();
paramClasses[2] = TypeCode.class;
params[2] = template.getTypeCode();
paramClasses[3] = Object.class;
params[3] = template.getType();
Constructor templateConstructor = null;
try {
templateConstructor = templateClass.getConstructor(paramClasses);
} catch (java.lang.NoSuchMethodException ex) {
throw new CorbaBindingException("Exception while reading unbounded sequence", ex);
}
for (int i = 0; i < length; ++i) {
CorbaObjectHandler seqElement = null;
try {
seqElement = (CorbaObjectHandler)templateConstructor.newInstance(params);
// A special case arises if we have a unbounded sequence of unbounded sequences. We
// need to obtain the template object so that all nested unbounded sequences can be
// correctly constructed.
if (template instanceof CorbaSequenceHandler) {
CorbaSequenceHandler templateSeq = (CorbaSequenceHandler)template;
((CorbaSequenceHandler)seqElement).
setTemplateElement(templateSeq.getTemplateElement());
}
} catch (java.lang.Exception ex) {
throw new CorbaBindingException("Unable to instantiate sequence element", ex);
}
this.read(seqElement);