⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynanyimpl.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)DynAnyImpl.java	1.15 03/06/25 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.impl.dynamicany;import org.omg.CORBA.Any;import org.omg.CORBA.TypeCode;import org.omg.CORBA.TCKind;import org.omg.CORBA.LocalObject;import org.omg.CORBA.ORBPackage.InvalidName;import org.omg.CORBA.portable.OutputStream;import org.omg.DynamicAny.*;import org.omg.DynamicAny.DynAnyPackage.TypeMismatch;import org.omg.DynamicAny.DynAnyPackage.InvalidValue;import com.sun.corba.se.impl.orbutil.ORBConstants ;import com.sun.corba.se.spi.orb.ORB ;import com.sun.corba.se.spi.logging.CORBALogDomains ;import com.sun.corba.se.impl.logging.ORBUtilSystemException ;abstract class DynAnyImpl extends org.omg.CORBA.LocalObject implements DynAny{    protected static final int NO_INDEX = -1;    // A DynAny is destroyable if it is the root of a DynAny hierarchy.    protected static final byte STATUS_DESTROYABLE = 0;    // A DynAny is undestroyable if it is a node in a DynAny hierarchy other than the root.    protected static final byte STATUS_UNDESTROYABLE = 1;    // A DynAny is destroyed if its root has been destroyed.    protected static final byte STATUS_DESTROYED = 2;    //    // Instance variables    //    protected ORB orb = null;    protected ORBUtilSystemException wrapper ;    // An Any is used internally to implement the basic DynAny.    // It stores the DynAnys TypeCode.    // For primitive types it is the only representation.    // For complex types it is the streamed representation.    protected Any any = null;    // Destroyable is the default status for free standing DynAnys.    protected byte status = STATUS_DESTROYABLE;    protected int index = NO_INDEX;    //    // Constructors    //    protected DynAnyImpl() {	wrapper = ORBUtilSystemException.get(             CORBALogDomains.RPC_PRESENTATION ) ;    }    protected DynAnyImpl(ORB orb, Any any, boolean copyValue) {        this.orb = orb;	wrapper = ORBUtilSystemException.get( orb,	    CORBALogDomains.RPC_PRESENTATION ) ;        if (copyValue)            this.any = DynAnyUtil.copy(any, orb);        else            this.any = any;        // set the current position to 0 if any has components, otherwise to -1.        index = NO_INDEX;    }    protected DynAnyImpl(ORB orb, TypeCode typeCode) {        this.orb = orb;	wrapper = ORBUtilSystemException.get( orb,	    CORBALogDomains.RPC_PRESENTATION ) ;        this.any = DynAnyUtil.createDefaultAnyOfType(typeCode, orb);    }    protected DynAnyFactory factory() {        try {            return (DynAnyFactory)orb.resolve_initial_references( 		ORBConstants.DYN_ANY_FACTORY_NAME );        } catch (InvalidName in) {            throw new RuntimeException("Unable to find DynAnyFactory");        }    }    protected Any getAny() {        return any;    }    // Uses getAny() if this is our implementation, otherwise uses to_any()    // which copies the Any.    protected Any getAny(DynAny dynAny) {        if (dynAny instanceof DynAnyImpl)            return ((DynAnyImpl)dynAny).getAny();        else            // _REVISIT_ Nothing we can do about copying at this point            // if this is not our implementation of DynAny.            // To prevent this we would need another representation,            // one where component DynAnys are initialized but not the component Anys.            return dynAny.to_any();    }    protected void writeAny(OutputStream out) {        //System.out.println(this + " writeAny of type " + type().kind().value());        any.write_value(out);    }    protected void setStatus(byte newStatus) {        status = newStatus;    }    protected void clearData() {        // This clears the data part of the Any while keeping the TypeCode info.        any.type(any.type());    }    //    // DynAny interface methods    //    public org.omg.CORBA.TypeCode type() {        if (status == STATUS_DESTROYED) {	    throw wrapper.dynAnyDestroyed() ;        }        return any.type();    }    // Makes a copy of the Any value inside the parameter    public void assign (org.omg.DynamicAny.DynAny dyn_any)        throws org.omg.DynamicAny.DynAnyPackage.TypeMismatch    {        if (status == STATUS_DESTROYED) {	    throw wrapper.dynAnyDestroyed() ;        }        if ((any != null) && (! any.type().equal(dyn_any.type()))) {            throw new TypeMismatch();        }        any = dyn_any.to_any();    }    // Makes a copy of the Any parameter    public void from_any (org.omg.CORBA.Any value)        throws org.omg.DynamicAny.DynAnyPackage.TypeMismatch,               org.omg.DynamicAny.DynAnyPackage.InvalidValue    {        if (status == STATUS_DESTROYED) {	    throw wrapper.dynAnyDestroyed() ;        }        if ((any != null) && (! any.type().equal(value.type()))) {            throw new TypeMismatch();        }        // If the passed Any does not contain a legal value        // (such as a null string), the operation raises InvalidValue.        Any tempAny = null;        try {            tempAny = DynAnyUtil.copy(value, orb);        } catch (Exception e) {            throw new InvalidValue();        }        if ( ! DynAnyUtil.isInitialized(tempAny)) {            throw new InvalidValue();        }        any = tempAny;   }    public abstract org.omg.CORBA.Any to_any();    public abstract boolean equal (org.omg.DynamicAny.DynAny dyn_any);    public abstract void destroy();    public abstract org.omg.DynamicAny.DynAny copy();    // Needed for org.omg.CORBA.Object    private String[] __ids = { "IDL:omg.org/DynamicAny/DynAny:1.0" };    public String[] _ids() {        return __ids;    }}

⌨️ 快捷键说明

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