protected void introspect()

in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/UnsafeSerializer.java [168:211]


    protected void introspect(Class<?> cl) {
        ArrayList<Field> primitiveFields = new ArrayList<Field>();
        ArrayList<Field> compoundFields = new ArrayList<Field>();

        for (; cl != null; cl = cl.getSuperclass()) {
            Field[] fields = cl.getDeclaredFields();

            for (int i = 0; i < fields.length; i++) {
                Field field = fields[i];

                if (Modifier.isTransient(field.getModifiers())
                        || Modifier.isStatic(field.getModifiers())) {
                    continue;
                }

        /*
        // XXX: could parameterize the handler to only deal with public
        field.setAccessible(true);
        */

                if (field.getType().isPrimitive()
                        || (field.getType().getName().startsWith("java.lang.")
                        && !field.getType().equals(Object.class))) {
                    primitiveFields.add(field);
                } else {
                    compoundFields.add(field);
                }
            }
        }

        ArrayList<Field> fields = new ArrayList<Field>();
        fields.addAll(primitiveFields);
        fields.addAll(compoundFields);
        Collections.reverse(fields);

        _fields = new Field[fields.size()];
        fields.toArray(_fields);

        _fieldSerializers = new FieldSerializer[_fields.length];

        for (int i = 0; i < _fields.length; i++) {
            _fieldSerializers[i] = getFieldSerializer(_fields[i]);
        }
    }