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