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

* * An Any object consists of two parts: *

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

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

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

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

* This method throws the exception BAD_OPERATION under two conditions: *

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

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

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

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

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

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

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