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