in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/RecordDeserializer.java [63:95]
public Object readObject(AbstractHessianInput in,
String[] fieldNames)
throws IOException {
try {
Object[] args = new Object[_components.length];
boolean readedIndex[] = new boolean[_components.length];
for (String fieldName : fieldNames) {
RecordUtil.RecordComponent component = _componentMap.get(fieldName);
if (component == null) {
// ignore this field
in.readObject();
continue;
}
Object target;
target = in.readObject(component.type());
args[component.index()] = target;
readedIndex[component.index()] = true;
}
for (int i = 0; i < readedIndex.length; i++) {
if (!readedIndex[i]) {
args[i] = getParamArg(_components[i].type());
}
}
Object obj = _constructor.newInstance(args);
in.addRef(obj);
return obj;
} catch (IOException e) {
throw e;
} catch (Exception e) {
throw new IOExceptionWrapper(_cl.getName() + ":" + e, e);
}
}