public void writeObject()

in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/BasicSerializer.java [105:297]


    public void writeObject(Object obj, AbstractHessianOutput out)
            throws IOException {
        switch (_code) {
            case BOOLEAN:
                out.writeBoolean(((Boolean) obj).booleanValue());
                break;

            case BYTE:
            case SHORT:
            case INTEGER:
                out.writeInt(((Number) obj).intValue());
                break;

            case LONG:
                out.writeLong(((Number) obj).longValue());
                break;

            case FLOAT:
                out.writeDouble(Double.parseDouble(String.valueOf(((Number) obj).floatValue())));
                break;
            case DOUBLE:
                out.writeDouble(((Number) obj).doubleValue());
                break;

            case CHARACTER:
            case CHARACTER_OBJECT:
                out.writeString(String.valueOf(obj));
                break;

            case STRING:
                out.writeString((String) obj);
                break;

            case STRING_BUILDER:
                out.writeString(((StringBuilder) obj).toString());
                break;

            case DATE:
                out.writeUTCDate(((Date) obj).getTime());
                break;

            case BOOLEAN_ARRAY: {
                if (out.addRef(obj))
                    return;

                boolean[] data = (boolean[]) obj;
                boolean hasEnd = out.writeListBegin(data.length, "[boolean");
                for (int i = 0; i < data.length; i++)
                    out.writeBoolean(data[i]);

                if (hasEnd)
                    out.writeListEnd();

                break;
            }

            case BYTE_ARRAY: {
                byte[] data = (byte[]) obj;
                out.writeBytes(data, 0, data.length);
                break;
            }

            case SHORT_ARRAY: {
                if (out.addRef(obj))
                    return;

                short[] data = (short[]) obj;
                boolean hasEnd = out.writeListBegin(data.length, "[short");

                for (int i = 0; i < data.length; i++)
                    out.writeInt(data[i]);

                if (hasEnd)
                    out.writeListEnd();
                break;
            }

            case INTEGER_ARRAY: {
                if (out.addRef(obj))
                    return;

                int[] data = (int[]) obj;

                boolean hasEnd = out.writeListBegin(data.length, "[int");

                for (int i = 0; i < data.length; i++)
                    out.writeInt(data[i]);

                if (hasEnd)
                    out.writeListEnd();

                break;
            }

            case LONG_ARRAY: {
                if (out.addRef(obj))
                    return;

                long[] data = (long[]) obj;

                boolean hasEnd = out.writeListBegin(data.length, "[long");

                for (int i = 0; i < data.length; i++)
                    out.writeLong(data[i]);

                if (hasEnd)
                    out.writeListEnd();
                break;
            }

            case FLOAT_ARRAY: {
                if (out.addRef(obj))
                    return;

                float[] data = (float[]) obj;

                boolean hasEnd = out.writeListBegin(data.length, "[float");

                for (int i = 0; i < data.length; i++)
                    out.writeDouble(data[i]);

                if (hasEnd)
                    out.writeListEnd();
                break;
            }

            case DOUBLE_ARRAY: {
                if (out.addRef(obj))
                    return;

                double[] data = (double[]) obj;
                boolean hasEnd = out.writeListBegin(data.length, "[double");

                for (int i = 0; i < data.length; i++)
                    out.writeDouble(data[i]);

                if (hasEnd)
                    out.writeListEnd();
                break;
            }

            case STRING_ARRAY: {
                if (out.addRef(obj))
                    return;

                String[] data = (String[]) obj;

                boolean hasEnd = out.writeListBegin(data.length, "[string");

                for (int i = 0; i < data.length; i++) {
                    out.writeString(data[i]);
                }

                if (hasEnd)
                    out.writeListEnd();
                break;
            }

            case CHARACTER_ARRAY: {
                char[] data = (char[]) obj;
                out.writeString(data, 0, data.length);
                break;
            }

            case OBJECT_ARRAY: {
                if (out.addRef(obj))
                    return;

                Object[] data = (Object[]) obj;

                boolean hasEnd = out.writeListBegin(data.length, "[object");

                for (int i = 0; i < data.length; i++) {
                    out.writeObject(data[i]);
                }

                if (hasEnd)
                    out.writeListEnd();
                break;
            }

            case NULL:
                out.writeNull();
                break;

            case OBJECT:
                ObjectHandleSerializer.SER.writeObject(obj, out);
                break;

            default:
                throw new RuntimeException(_code + " unknown code for " + obj.getClass());
        }
    }