duke@1: /* ohair@158: * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. duke@1: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@1: * duke@1: * This code is free software; you can redistribute it and/or modify it duke@1: * under the terms of the GNU General Public License version 2 only, as ohair@158: * published by the Free Software Foundation. Oracle designates this duke@1: * particular file as subject to the "Classpath" exception as provided ohair@158: * by Oracle in the LICENSE file that accompanied this code. duke@1: * duke@1: * This code is distributed in the hope that it will be useful, but WITHOUT duke@1: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@1: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@1: * version 2 for more details (a copy is included in the LICENSE file that duke@1: * accompanied this code). duke@1: * duke@1: * You should have received a copy of the GNU General Public License version duke@1: * 2 along with this work; if not, write to the Free Software Foundation, duke@1: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@1: * ohair@158: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ohair@158: * or visit www.oracle.com if you need additional information or have any ohair@158: * questions. duke@1: */ duke@1: duke@1: package org.omg.CORBA; duke@1: duke@1: import org.omg.CORBA.portable.InputStream; duke@1: import org.omg.CORBA.portable.OutputStream; duke@1: import org.omg.CORBA.portable.Streamable; duke@1: import org.omg.CORBA.portable.IDLEntity; duke@1: duke@1: /** duke@1: * Serves as a container for any data that can be duke@1: * described in IDL or for any IDL primitive type. duke@1: * An Any object is used as a component of a duke@1: * NamedValue object, which provides information about duke@1: * arguments or return values in requests, and which is used to define duke@1: * name/value pairs in Context objects. duke@1:

duke@1: * duke@1: * An Any object consists of two parts: duke@1: *

    duke@1: *
  1. a data value duke@1: *
  2. a TypeCode object describing the type of the data duke@1: * value contained in the Any object. For example, duke@1: * a TypeCode object for an array contains duke@1: * a field for the length of the array and a field for duke@1: * the type of elements in the array. (Note that in this case, the duke@1: * second field of the TypeCode object is itself a duke@1: * TypeCode object.) duke@1: *
duke@1: * duke@1: *

duke@1: * duke@1: * A large part of the Any class consists of pairs of methods duke@1: * for inserting values into and extracting values from an duke@1: * Any object. duke@1: *

duke@1: * For a given primitive type X, these methods are: duke@1: *

duke@1: *
void insert_X(X x) duke@1: *
This method allows the insertion of duke@1: * an instance x of primitive type X duke@1: * into the value field of the Any object. duke@1: * Note that the method duke@1: * insert_X also resets the Any object's duke@1: * type field if necessary. duke@1: *
X extract_X() duke@1: *
This method allows the extraction of an instance of duke@1: * type X from the Any object. duke@1: *
duke@1: *

duke@1: * This method throws the exception BAD_OPERATION under two conditions: duke@1: *

    duke@1: *
  1. the type of the element contained in the Any object is not duke@1: * X duke@1: *
  2. the method extract_X is called before duke@1: * the value field of the Any object duke@1: * has been set duke@1: *
duke@1: *
duke@1: *

duke@1: * There are distinct method pairs for each duke@1: * primitive IDL data type (insert_long and extract_long, duke@1: * insert_string and extract_string, and so on).
duke@1: *

duke@1: * The class Any also has methods for duke@1: * getting and setting the type code, duke@1: * for testing two Any objects for equality, duke@1: * and for reading an Any object from a stream or duke@1: * writing it to a stream. duke@1: *
duke@1: * @since JDK1.2 duke@1: */ duke@1: abstract public class Any implements IDLEntity { duke@1: duke@1: /** duke@1: * Checks for equality between this Any object and the duke@1: * given Any object. Two Any objects are duke@1: * equal if both their values and type codes are equal. duke@1: * duke@1: * @param a the Any object to test for equality duke@1: * @return true if the Any objects are equal; duke@1: * false otherwise duke@1: * @see
CORBA package duke@1: * comments for unimplemented features duke@1: */ duke@1: abstract public boolean equal(Any a); duke@1: duke@1: /** duke@1: * Returns type information for the element contained in this duke@1: * Any object. duke@1: * duke@1: * @return the TypeCode object containing type information duke@1: * about the value contained in this Any object duke@1: */ duke@1: abstract public TypeCode type(); duke@1: duke@1: /** duke@1: * Sets this Any object's type field duke@1: * to the given TypeCode object and clears its value. duke@1: *

duke@1: * Note that using this method to set the type code wipes out the duke@1: * value if there is one. The method duke@1: * is provided primarily so that the type may be set properly for duke@1: * IDL out parameters. Generally, setting the type duke@1: * is done by the insert_X methods, which will set the type duke@1: * to X if it is not already set to X. duke@1: * duke@1: * @param t the TypeCode object giving duke@1: * information for the value in duke@1: * this Any object duke@1: */ duke@1: abstract public void type(TypeCode t); duke@1: duke@1: /////////////////////////////////////////////////////////////////////////// duke@1: // marshalling/unmarshalling routines duke@1: duke@1: /** duke@1: * Reads off (unmarshals) the value of an Any object from duke@1: * the given input stream using the given typecode. duke@1: * duke@1: * @param is the org.omg.CORBA.portable.InputStream duke@1: * object from which to read duke@1: * the value contained in this Any object duke@1: * duke@1: * @param t a TypeCode object containing type information duke@1: * about the value to be read duke@1: * duke@1: * @exception MARSHAL when the given TypeCode object is duke@1: * not consistent with the value that was contained duke@1: * in the input stream duke@1: */ duke@1: abstract public void read_value(InputStream is, TypeCode t) duke@1: throws MARSHAL; duke@1: duke@1: /** duke@1: * Writes out the value of this Any object duke@1: * to the given output stream. If both typecode duke@1: * and value need to be written, use duke@1: * create_output_stream() to create an OutputStream, duke@1: * then use write_any on the OutputStream. duke@1: *

duke@1: * If this method is called on an Any object that has not duke@1: * had a value inserted into its value field, it will throw duke@1: * the exception java.lang.NullPointerException. duke@1: * duke@1: * @param os the org.omg.CORBA.portable.OutputStream duke@1: * object into which to marshal the value duke@1: * of this Any object duke@1: * duke@1: */ duke@1: abstract public void write_value(OutputStream os); duke@1: duke@1: /** duke@1: * Creates an output stream into which this Any object's duke@1: * value can be marshalled. duke@1: * duke@1: * @return the newly-created OutputStream duke@1: */ duke@1: abstract public OutputStream create_output_stream(); duke@1: duke@1: /** duke@1: * Creates an input stream from which this Any object's value duke@1: * can be unmarshalled. duke@1: * duke@1: * @return the newly-created InputStream duke@1: */ duke@1: abstract public InputStream create_input_stream(); duke@1: duke@1: /////////////////////////////////////////////////////////////////////////// duke@1: // basic insertion/extraction methods duke@1: duke@1: /** duke@1: * Extracts the short in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the short stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a short or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public short extract_short() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given short duke@1: * into this Any object's value field. duke@1: * duke@1: * @param s the short to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_short(short s); duke@1: duke@1: /** duke@1: * Extracts the int in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the int stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than an int or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public int extract_long() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given int duke@1: * into this Any object's value field. duke@1: * duke@1: * @param l the int to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_long(int l); duke@1: duke@1: duke@1: /** duke@1: * Extracts the long in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the long stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a long or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public long extract_longlong() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given long duke@1: * into this Any object's value field. duke@1: * duke@1: * @param l the long to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_longlong(long l); duke@1: duke@1: /** duke@1: * Extracts the short in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the short stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a short or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public short extract_ushort() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given short duke@1: * into this Any object's value field. duke@1: * duke@1: * @param s the short to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_ushort(short s); duke@1: duke@1: /** duke@1: * Extracts the int in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the int stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than an int or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public int extract_ulong() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given int duke@1: * into this Any object's value field. duke@1: * duke@1: * @param l the int to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_ulong(int l); duke@1: duke@1: /** duke@1: * Extracts the long in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the long stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a long or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public long extract_ulonglong() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given long duke@1: * into this Any object's value field. duke@1: * duke@1: * @param l the long to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_ulonglong(long l); duke@1: duke@1: /** duke@1: * Extracts the float in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the float stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a float or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public float extract_float() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given float duke@1: * into this Any object's value field. duke@1: * duke@1: * @param f the float to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_float(float f); duke@1: duke@1: /** duke@1: * Extracts the double in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the double stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a double or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public double extract_double() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given double duke@1: * into this Any object's value field. duke@1: * duke@1: * @param d the double to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_double(double d); duke@1: duke@1: /** duke@1: * Extracts the boolean in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the boolean stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a boolean or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public boolean extract_boolean() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given boolean duke@1: * into this Any object's value field. duke@1: * duke@1: * @param b the boolean to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_boolean(boolean b); duke@1: duke@1: /** duke@1: * Extracts the char in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the char stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a char or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public char extract_char() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given char duke@1: * into this Any object's value field. duke@1: * duke@1: * @param c the char to insert into this duke@1: * Any object duke@1: * @exception DATA_CONVERSION if there is a data conversion duke@1: * error duke@1: */ duke@1: abstract public void insert_char(char c) throws DATA_CONVERSION; duke@1: duke@1: /** duke@1: * Extracts the char in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the char stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a char or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public char extract_wchar() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given char duke@1: * into this Any object's value field. duke@1: * duke@1: * @param c the char to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_wchar(char c); duke@1: duke@1: /** duke@1: * Extracts the byte in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the byte stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a byte or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public byte extract_octet() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given byte duke@1: * into this Any object's value field. duke@1: * duke@1: * @param b the byte to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_octet(byte b); duke@1: duke@1: /** duke@1: * Extracts the Any object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the Any object stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than an Any object or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public Any extract_any() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given Any object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param a the Any object to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_any(Any a); duke@1: duke@1: /** duke@1: * Extracts the org.omg.CORBA.Object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the org.omg.CORBA.Object stored in duke@1: * this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than an duke@1: * org.omg.CORBA.Object or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public org.omg.CORBA.Object extract_Object() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given org.omg.CORBA.Object object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param o the org.omg.CORBA.Object object to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_Object(org.omg.CORBA.Object o); duke@1: duke@1: /** duke@1: * Extracts the java.io.Serializable object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the java.io.Serializable object stored in duke@1: * this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a java.io.Serializable duke@1: * object or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public java.io.Serializable extract_Value() throws BAD_OPERATION ; duke@1: duke@1: /** duke@1: * Inserts the given java.io.Serializable object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param v the java.io.Serializable object to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_Value(java.io.Serializable v) ; duke@1: duke@1: /** duke@1: * Inserts the given java.io.Serializable object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param v the java.io.Serializable object to insert into this duke@1: * Any object duke@1: * @param t the TypeCode object that is to be inserted into duke@1: * this Any object's type field duke@1: * and that describes the java.io.Serializable duke@1: * object being inserted duke@1: * @throws MARSHAL if the ORB has a problem marshalling or duke@1: * unmarshalling parameters duke@1: */ duke@1: abstract public void insert_Value(java.io.Serializable v, TypeCode t) duke@1: throws MARSHAL ; duke@1: /** duke@1: * Inserts the given org.omg.CORBA.Object object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param o the org.omg.CORBA.Object instance to insert into this duke@1: * Any object duke@1: * @param t the TypeCode object that is to be inserted into duke@1: * this Any object and that describes duke@1: * the Object being inserted duke@1: * @exception BAD_OPERATION if this method is invalid for this duke@1: * Any object duke@1: * duke@1: */ duke@1: abstract public void insert_Object(org.omg.CORBA.Object o, TypeCode t) duke@1: throws BAD_PARAM; duke@1: duke@1: /** duke@1: * Extracts the String object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the String object stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a String object or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public String extract_string() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given String object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param s the String object to insert into this duke@1: * Any object duke@1: * @exception DATA_CONVERSION if there is a data conversion error duke@1: * @exception MARSHAL if the ORB has a problem marshalling or duke@1: * unmarshalling parameters duke@1: */ duke@1: abstract public void insert_string(String s) throws DATA_CONVERSION, MARSHAL; duke@1: duke@1: /** duke@1: * Extracts the String object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the String object stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a String object or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public String extract_wstring() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given String object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param s the String object to insert into this duke@1: * Any object duke@1: * @exception MARSHAL if the ORB has a problem marshalling or duke@1: * unmarshalling parameters duke@1: */ duke@1: abstract public void insert_wstring(String s) throws MARSHAL; duke@1: duke@1: /** duke@1: * Extracts the TypeCode object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the TypeCode object stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a TypeCode object or the duke@1: * value field has not yet been set duke@1: */ duke@1: abstract public TypeCode extract_TypeCode() throws BAD_OPERATION; duke@1: duke@1: /** duke@1: * Inserts the given TypeCode object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param t the TypeCode object to insert into this duke@1: * Any object duke@1: */ duke@1: abstract public void insert_TypeCode(TypeCode t); duke@1: duke@1: /** duke@1: * Extracts the Principal object in this duke@1: * Any object's value field. duke@1: * Note that the class Principal has been deprecated. duke@1: * duke@1: * @return the Principal object stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a duke@1: * Principal object or the duke@1: * value field has not yet been set duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: * @deprecated Deprecated by CORBA 2.2. duke@1: */ duke@1: @Deprecated duke@1: public Principal extract_Principal() throws BAD_OPERATION { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT() ; duke@1: } duke@1: duke@1: /** duke@1: * Inserts the given Principal object duke@1: * into this Any object's value field. duke@1: * Note that the class Principal has been deprecated. duke@1: * duke@1: * @param p the Principal object to insert into this duke@1: * Any object duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: * @deprecated Deprecated by CORBA 2.2. duke@1: */ duke@1: @Deprecated duke@1: public void insert_Principal(Principal p) { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT() ; duke@1: } duke@1: duke@1: /////////////////////////////////////////////////////////////////////////// duke@1: // insertion/extraction of streamables duke@1: duke@1: /** duke@1: * Extracts a Streamable from this Any object's duke@1: * value field. This method allows the extraction of duke@1: * non-primitive IDL types. duke@1: * duke@1: * @return the Streamable stored in the Any object. duke@1: * @throws BAD_INV_ORDER if the caller has invoked operations in the wrong order duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: */ duke@1: public org.omg.CORBA.portable.Streamable extract_Streamable() duke@1: throws org.omg.CORBA.BAD_INV_ORDER { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT() ; duke@1: } duke@1: duke@1: /** duke@1: * Inserts the given Streamable object duke@1: * into this Any object's value field. duke@1: * This method allows the insertion of non-primitive IDL types. duke@1: * duke@1: * @param s the Streamable object to insert into this duke@1: * Any object; may be a non-primitive duke@1: * IDL type duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: */ duke@1: public void insert_Streamable(Streamable s) { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT() ; duke@1: } duke@1: duke@1: /** duke@1: * Extracts the java.math.BigDecimal object in this duke@1: * Any object's value field. duke@1: * duke@1: * @return the java.math.BigDecimal object duke@1: * stored in this Any object duke@1: * @exception BAD_OPERATION if this Any object duke@1: * contains something other than a duke@1: * java.math.BigDecimal object or the duke@1: * value field has not yet been set duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: */ duke@1: public java.math.BigDecimal extract_fixed() { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT(); duke@1: } duke@1: duke@1: /** duke@1: * Throws an duke@1: * org.omg.CORBA.NO_IMPLEMENT exception. duke@1: *

duke@1: * Inserts the given java.math.BigDecimal object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param value the java.math.BigDecimal object duke@1: * to insert into this Any object duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: */ duke@1: public void insert_fixed(java.math.BigDecimal value) { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT(); duke@1: } duke@1: duke@1: /** duke@1: * Throws an duke@1: * org.omg.CORBA.NO_IMPLEMENT exception. duke@1: *

duke@1: * Inserts the given java.math.BigDecimal object duke@1: * into this Any object's value field. duke@1: * duke@1: * @param value the java.math.BigDecimal object duke@1: * to insert into this Any object duke@1: * @param type the TypeCode object that is to be inserted into duke@1: * this Any object's type field duke@1: * and that describes the java.math.BigDecimal duke@1: * object being inserted duke@1: * @throws org.omg.CORBA.BAD_INV_ORDER if this method is invoked improperly duke@1: * @see CORBA package duke@1: * comments for unimplemented features duke@1: */ duke@1: public void insert_fixed(java.math.BigDecimal value, org.omg.CORBA.TypeCode type) duke@1: throws org.omg.CORBA.BAD_INV_ORDER duke@1: { duke@1: throw new org.omg.CORBA.NO_IMPLEMENT(); duke@1: } duke@1: }