in yoko-core/src/main/java/org/apache/yoko/orb/DynamicAny/DynBasic_impl.java [220:319]
public synchronized boolean equal(org.omg.DynamicAny.DynAny dyn_any) {
if (destroyed_)
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
if (this == dyn_any)
return true;
if (!dyn_any.type().equivalent(type_))
return false;
//
// Don't use Any.equal() here because it calls equal() on
// the TypeCodes, and the semantics of DynAny.equal()
// only require TypeCodes to be equivalent.
//
java.lang.Object v1 = any_.value();
java.lang.Object v2 = ((DynBasic_impl) dyn_any).any_.value();
switch (origType_.kind().value()) {
case org.omg.CORBA.TCKind._tk_null:
case org.omg.CORBA.TCKind._tk_void:
return true;
case org.omg.CORBA.TCKind._tk_short:
case org.omg.CORBA.TCKind._tk_ushort:
case org.omg.CORBA.TCKind._tk_long:
case org.omg.CORBA.TCKind._tk_ulong:
case org.omg.CORBA.TCKind._tk_longlong:
case org.omg.CORBA.TCKind._tk_ulonglong:
case org.omg.CORBA.TCKind._tk_float:
case org.omg.CORBA.TCKind._tk_double:
case org.omg.CORBA.TCKind._tk_boolean:
case org.omg.CORBA.TCKind._tk_char:
case org.omg.CORBA.TCKind._tk_wchar:
case org.omg.CORBA.TCKind._tk_octet:
case org.omg.CORBA.TCKind._tk_string:
case org.omg.CORBA.TCKind._tk_wstring:
return v1.equals(v2);
case org.omg.CORBA.TCKind._tk_any:
return ((org.omg.CORBA.Any) v1).equal((org.omg.CORBA.Any) v2);
case org.omg.CORBA.TCKind._tk_TypeCode:
if (v1 == null && v2 == null)
return true;
else if (v1 == null || v2 == null)
return false;
else
return ((org.omg.CORBA.TypeCode) v1)
.equal((org.omg.CORBA.TypeCode) v2);
case org.omg.CORBA.TCKind._tk_objref:
case org.omg.CORBA_2_4.TCKind._tk_local_interface:
if (v1 == null && v2 == null)
return true;
else if (v1 == null || v2 == null)
return false;
else
return ((org.omg.CORBA.Object) v1)
._is_equivalent((org.omg.CORBA.Object) v2);
case org.omg.CORBA.TCKind._tk_value:
if (v1 == v2)
return true;
else if (v1 == null || v2 == null)
return false;
else {
//
// Currently, it's not possible for a custom valuetype
// to be represented as an InputStream in an any
//
org.apache.yoko.orb.OB.Assert._OB_assert("Unable to compare value types");
}
case org.omg.CORBA.TCKind._tk_abstract_interface:
if (v1 == v2)
return true;
else if (v1 == null || v2 == null)
return false;
else if (v1 instanceof org.omg.CORBA.Object
&& v2 instanceof org.omg.CORBA.Object) {
return ((org.omg.CORBA.Object) v1)
._is_equivalent((org.omg.CORBA.Object) v2);
} else {
//
// Currently, it's not possible for an abstract interface
// to be represented as an InputStream in an any
//
org.apache.yoko.orb.OB.Assert._OB_assert("Unable to compare abstract_interface types");
}
return false;
case org.omg.CORBA.TCKind._tk_Principal:
default:
org.apache.yoko.orb.OB.Assert._OB_assert("Unsupported type code");
}
return false; // The compiler needs this
}