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 + -
显示快捷键?