public synchronized void write_value()

in yoko-core/src/main/java/org/apache/yoko/orb/CORBA/Any.java [508:678]


    public synchronized void write_value(org.omg.CORBA.portable.OutputStream out) {
        int kind = origType_.kind().value();

        if (value_ instanceof org.omg.CORBA.portable.Streamable
                && kind != org.omg.CORBA.TCKind._tk_value
                && kind != org.omg.CORBA.TCKind._tk_value_box
                && kind != org.omg.CORBA.TCKind._tk_abstract_interface) {
            ((org.omg.CORBA.portable.Streamable) value_)._write(out);
            return;
        }

        switch (kind) {
        case org.omg.CORBA.TCKind._tk_null:
        case org.omg.CORBA.TCKind._tk_void:
            break;

        case org.omg.CORBA.TCKind._tk_short:
            out.write_short((short) ((Integer) value_).intValue());
            break;

        case org.omg.CORBA.TCKind._tk_long:
            out.write_long(((Integer) value_).intValue());
            break;

        case org.omg.CORBA.TCKind._tk_longlong:
            out.write_longlong(((Long) value_).longValue());
            break;

        case org.omg.CORBA.TCKind._tk_ushort:
            out.write_ushort((short) ((Integer) value_).intValue());
            break;

        case org.omg.CORBA.TCKind._tk_ulong:
            out.write_ulong(((Integer) value_).intValue());
            break;

        case org.omg.CORBA.TCKind._tk_ulonglong:
            out.write_ulonglong(((Long) value_).longValue());
            break;

        case org.omg.CORBA.TCKind._tk_float:
            out.write_float(((Float) value_).floatValue());
            break;

        case org.omg.CORBA.TCKind._tk_double:
            out.write_double(((Double) value_).doubleValue());
            break;

        case org.omg.CORBA.TCKind._tk_boolean:
            out.write_boolean(((Boolean) value_).booleanValue());
            break;

        case org.omg.CORBA.TCKind._tk_char:
            out.write_char(((Character) value_).charValue());
            break;

        case org.omg.CORBA.TCKind._tk_wchar:
            out.write_wchar(((Character) value_).charValue());
            break;

        case org.omg.CORBA.TCKind._tk_octet:
            out.write_octet(((Byte) value_).byteValue());
            break;

        case org.omg.CORBA.TCKind._tk_any:
            out.write_any((org.omg.CORBA.Any) value_);
            break;

        case org.omg.CORBA.TCKind._tk_TypeCode:
            out.write_TypeCode((org.omg.CORBA.TypeCode) value_);
            break;

        case org.omg.CORBA.TCKind._tk_Principal:
            out.write_Principal((org.omg.CORBA.Principal) value_);
            break;

        case org.omg.CORBA.TCKind._tk_objref:
            out.write_Object((org.omg.CORBA.Object) value_);
            break;

        case org.omg.CORBA.TCKind._tk_struct:
        case org.omg.CORBA.TCKind._tk_except:
        case org.omg.CORBA.TCKind._tk_union:
        case org.omg.CORBA.TCKind._tk_sequence:
        case org.omg.CORBA.TCKind._tk_array: {
            OutputStream o = (OutputStream) out;
            InputStream in = (InputStream) value_;
            in._OB_reset();
            o.write_InputStream(in, type_);
            break;
        }

        case org.omg.CORBA.TCKind._tk_value: {
            OutputStream o = (OutputStream) out;
            if (value_ instanceof InputStream) {
                InputStream in = (InputStream) value_;
                in._OB_reset();
                o.write_InputStream(in, type_);
            } else
                o.write_value((java.io.Serializable) value_);
            break;
        }

        case org.omg.CORBA.TCKind._tk_value_box: {
            OutputStream o = (OutputStream) out;
            if (value_ instanceof InputStream) {
                InputStream in = (InputStream) value_;
                in._OB_reset();
                o.write_InputStream(in, type_);
            } else {
                o.write_value((java.io.Serializable) value_, origType_, null);
            }
            break;
        }

        case org.omg.CORBA.TCKind._tk_enum:
            out.write_ulong(((Integer) value_).intValue());
            break;

        case org.omg.CORBA.TCKind._tk_string:
            out.write_string((String) value_);
            break;

        case org.omg.CORBA.TCKind._tk_wstring:
            out.write_wstring((String) value_);
            break;

        case org.omg.CORBA.TCKind._tk_fixed: {
            // TODO: check ranges here? compare scale against TypeCode?
            try {
                out.write_fixed(((java.math.BigDecimal) value_)
                        .movePointRight(origType_.fixed_scale()));
            } catch (org.omg.CORBA.TypeCodePackage.BadKind ex) {
                org.apache.yoko.orb.OB.Assert._OB_assert(ex);
            }

            break;
        }

        case org.omg.CORBA.TCKind._tk_abstract_interface: {
            OutputStream o = (OutputStream) out;
            if (value_ != null && value_ instanceof InputStream) {
                InputStream in = (InputStream) value_;
                in._OB_reset();
                org.apache.yoko.orb.OB.Assert
                        ._OB_assert(in.read_boolean() == false);
                o.write_abstract_interface(in.read_value());
            } else
                o.write_abstract_interface(value_);
            break;
        }

        case org.omg.CORBA.TCKind._tk_native:
            throw new org.omg.CORBA.MARSHAL(
                org.apache.yoko.orb.OB.MinorCodes
                    .describeMarshal(org.apache.yoko.orb.OB.MinorCodes.MinorNativeNotSupported),
                org.apache.yoko.orb.OB.MinorCodes.MinorNativeNotSupported,  
                CompletionStatus.COMPLETED_NO);

        case org.omg.CORBA_2_4.TCKind._tk_local_interface:
            throw new org.omg.CORBA.MARSHAL(
                org.apache.yoko.orb.OB.MinorCodes
                    .describeMarshal(org.apache.yoko.orb.OB.MinorCodes.MinorLocalObject),
                org.apache.yoko.orb.OB.MinorCodes.MinorLocalObject,
                org.omg.CORBA.CompletionStatus.COMPLETED_NO);

        case org.omg.CORBA.TCKind._tk_alias:
        default:
            org.apache.yoko.orb.OB.Assert._OB_assert("unable to write tk_alias types");
        }
    }