public Object readObject()

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);
        }
    }