dynanyutil.java

来自「java jdk 1.4的源码」· Java 代码 · 共 126 行

JAVA
126
字号
/* * @(#)DynAnyUtil.java	1.9 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.DynamicAny;import org.omg.CORBA.ORB;import org.omg.CORBA.Any;import org.omg.CORBA.TypeCode;import org.omg.CORBA.TCKind;import org.omg.CORBA.portable.OutputStream;import org.omg.CORBA.NO_IMPLEMENT;//import org.omg.CORBA.ORBPackage.*;import org.omg.CORBA.TypeCodePackage.BadKind;import org.omg.CORBA.TypeCodePackage.Bounds;import org.omg.CORBA.portable.InputStream;import org.omg.DynamicAny.*;import org.omg.DynamicAny.DynAnyPackage.TypeMismatch;import org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode;import java.math.BigDecimal;import com.sun.corba.se.internal.corba.AnyImpl;public class DynAnyUtil{    static boolean isConsistentType(TypeCode typeCode) {        int kind = typeCode.kind().value();        return (kind != TCKind._tk_Principal &&                kind != TCKind._tk_native &&                kind != TCKind._tk_abstract_interface);    }    static boolean isConstructedDynAny(DynAny dynAny) {        // DynFixed is constructed but not a subclass of DynAnyConstructedImpl        //return (dynAny instanceof DynAnyConstructedImpl);        int kind = dynAny.type().kind().value();        return (kind == TCKind._tk_sequence ||                kind == TCKind._tk_struct ||                kind == TCKind._tk_array ||                kind == TCKind._tk_union ||                kind == TCKind._tk_enum ||                kind == TCKind._tk_fixed ||                kind == TCKind._tk_value ||                kind == TCKind._tk_value_box);    }    static DynAny createMostDerivedDynAny(Any any, ORB orb, boolean copyValue)        throws org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode    {        if (any == null || ! DynAnyUtil.isConsistentType(any.type()))            throw new org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode();        switch (any.type().kind().value()) {            case TCKind._tk_sequence:                return new DynSequenceImpl(orb, any, copyValue);            case TCKind._tk_struct:                return new DynStructImpl(orb, any, copyValue);            case TCKind._tk_array:                return new DynArrayImpl(orb, any, copyValue);            case TCKind._tk_union:                return new DynUnionImpl(orb, any, copyValue);            case TCKind._tk_enum:                return new DynEnumImpl(orb, any, copyValue);            case TCKind._tk_fixed:                return new DynFixedImpl(orb, any, copyValue);            case TCKind._tk_value:                return new DynValueImpl(orb, any, copyValue);            case TCKind._tk_value_box:                return new DynValueBoxImpl(orb, any, copyValue);            default:                return new DynAnyBasicImpl(orb, any, copyValue);        }    }    static DynAny createMostDerivedDynAny(TypeCode typeCode, ORB orb)        throws org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode    {        if (typeCode == null || ! DynAnyUtil.isConsistentType(typeCode))            throw new org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode();        switch (typeCode.kind().value()) {            case TCKind._tk_sequence:                return new DynSequenceImpl(orb, typeCode);            case TCKind._tk_struct:                return new DynStructImpl(orb, typeCode);            case TCKind._tk_array:                return new DynArrayImpl(orb, typeCode);            case TCKind._tk_union:                return new DynUnionImpl(orb, typeCode);            case TCKind._tk_enum:                return new DynEnumImpl(orb, typeCode);            case TCKind._tk_fixed:                return new DynFixedImpl(orb, typeCode);            case TCKind._tk_value:                return new DynValueImpl(orb, typeCode);            case TCKind._tk_value_box:                return new DynValueBoxImpl(orb, typeCode);            default:                return new DynAnyBasicImpl(orb, typeCode);        }    }    // Extracts a member value according to the given TypeCode from the given complex Any    // (at the Anys current internal stream position, consuming the anys stream on the way)    // and returns it wrapped into a new Any/*    static Any extractAnyFromAny(TypeCode memberType, Any any, ORB orb) {        // Moved this functionality into AnyImpl because it is needed for Any.equal()        return ((AnyImpl)any).extractAny(memberType, orb);    }*/    // Extracts a member value according to the given TypeCode from the given complex Any    // (at the Anys current internal stream position, consuming the anys stream on the way)    // and returns it wrapped into a new Any    static Any extractAnyFromStream(TypeCode memberType, InputStream input, ORB orb) {        return AnyImpl.extractAnyFromStream(memberType, input, orb);    }    // Creates a default Any of the given type.    static Any createDefaultAnyOfType(TypeCode typeCode, ORB orb) {        Any returnValue = orb.create_any();        // The spec for DynAny differs from Any on initialization via type code:        // 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?