hasOutParamReturn = params.size() > 0;
}
int cbParamCount = 0;
for (Iterator<ParamType> iter = params.iterator(); iter.hasNext();) {
ParamType param = iter.next();
QName elName = null;
Object partValue = null;
if (param.getMode().equals(ModeType.OUT) && hasOutParamReturn) {
// This is actually an OUT parameter to a CORBA application
WebResult wr = callback.getWebResult();
elName = new QName(wr.targetNamespace(), wr.name());
partValue = ret;
} else {
WebParam wp = callback.getWebParam(cbParamCount);
elName = new QName(wp.targetNamespace(), wp.name());
if (wp.mode() != WebParam.Mode.IN) {
partValue = ((Holder)args[cbParamCount]).value;
} else {
partValue = args[cbParamCount];
}
cbParamCount++;
}
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
XMLEventWriter evtWriter = outputFactory.createXMLEventWriter(outStream);
writer.write(partValue, elName, evtWriter);
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = inputFactory.createXMLEventReader(inStream);
QName idlType = param.getIdltype();
CorbaObjectHandler obj = null;
boolean skipRead = false;
if (isServer) {
if (param.getMode().equals(ModeType.IN)) {
skipRead = true;
}
} else if (param.getMode().equals(ModeType.OUT)) {
skipRead = true;
}
if (skipRead) {
obj = CorbaHandlerUtils.initializeObjectHandler(orb, elName, idlType, typeMaps);
} else {
obj = readObjectFromStax(evtReader, idlType, false);
}
CorbaStreamable streamable = new CorbaStreamable(obj, elName);
ModeType paramMode = param.getMode();
if (paramMode.value().equals("in")) {
streamable.setMode(org.omg.CORBA.ARG_IN.value);
} else if (paramMode.value().equals("inout")) {
streamable.setMode(org.omg.CORBA.ARG_INOUT.value);
} else if (paramMode.value().equals("out")) {