synchronized void _OB_unmarshal()

in yoko-core/src/main/java/org/apache/yoko/orb/DynamicAny/DynSeqBase_impl.java [1506:1642]


    synchronized void _OB_unmarshal(InputStream in) {
        int len;
        if (origType_.kind() == org.omg.CORBA.TCKind.tk_array)
            len = length_;
        else {
            len = in.read_ulong();
            resize(len, false);

            if (len == 0)
                return;
        }

        switch (contentKind_.value()) {
        case org.omg.CORBA.TCKind._tk_short: {
            short[] buf = (short[]) buf_;
            in.read_short_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_long: {
            int[] buf = (int[]) buf_;
            in.read_long_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_ushort: {
            short[] buf = (short[]) buf_;
            in.read_ushort_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_ulong: {
            int[] buf = (int[]) buf_;
            in.read_ulong_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_float: {
            float[] buf = (float[]) buf_;
            in.read_float_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_double: {
            double[] buf = (double[]) buf_;
            in.read_double_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_boolean: {
            boolean[] buf = (boolean[]) buf_;
            in.read_boolean_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_char: {
            char[] buf = (char[]) buf_;
            in.read_char_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_octet: {
            byte[] buf = (byte[]) buf_;
            in.read_octet_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_string: {
            String[] buf = (String[]) buf_;
            for (int i = 0; i < len; i++)
                buf[i] = in.read_string();
            break;
        }

        case org.omg.CORBA.TCKind._tk_longlong: {
            long[] buf = (long[]) buf_;
            in.read_longlong_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_ulonglong: {
            long[] buf = (long[]) buf_;
            in.read_ulonglong_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_wchar: {
            char[] buf = (char[]) buf_;
            in.read_wchar_array(buf, 0, len);
            break;
        }

        case org.omg.CORBA.TCKind._tk_wstring: {
            String[] buf = (String[]) buf_;
            for (int i = 0; i < len; i++)
                buf[i] = in.read_wstring();
            break;
        }

        case org.omg.CORBA.TCKind._tk_value: {
            if (dynValueReader_ != null) {
                for (int i = 0; i < len; i++) {
                    org.apache.yoko.orb.OB.Assert
                            ._OB_assert(components_[i] == null);

                    try {
                        components_[i] = dynValueReader_.readValue(in,
                                contentType_);
                    } catch (org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode ex) {
                        org.apache.yoko.orb.OB.Assert._OB_assert(ex);
                        return;
                    }

                    adoptChild(components_[i]);
                }
            } else {
                for (int i = 0; i < len; i++) {
                    org.apache.yoko.orb.OB.Assert
                            ._OB_assert(components_[i] != null);
                    DynAny_impl impl = (DynAny_impl) components_[i];
                    impl._OB_unmarshal(in);
                }
            }

            break;
        }

        default: {
            for (int i = 0; i < len; i++) {
                DynAny_impl impl = (DynAny_impl) components_[i];
                impl._OB_unmarshal(in);
            }
        }
        }

        notifyParent();
    }