public synchronized boolean equal()

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
    }