/*
 * Copyright (c) 1996, 1999, 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;

An object used in the DII and DSI to describe arguments and return values. NamedValue objects are also used in the Context object routines to pass lists of property names and values.

A NamedValue object contains:

  • a name -- If the NamedValue object is used to describe arguments to a request, the name will be an argument identifier specified in the OMG IDL interface definition for the operation being described.
  • a value -- an Any object
  • an argument mode flag -- one of the following:
    • ARG_IN.value
    • ARG_OUT.value
    • ARG_INOUT.value
    • zero -- if this NamedValue object represents a property in a Context object rather than a parameter or return value

The class NamedValue has three methods, which access its fields. The following code fragment demonstrates creating a NamedValue object and then accessing its fields:

   ORB orb = ORB.init(args, null);
   String s = "argument_1";
   org.omg.CORBA.Any myAny = orb.create_any();
   myAny.insert_long(12345);
   int in = org.omg.CORBA.ARG_IN.value;
   org.omg.CORBA.NamedValue nv = orb.create_named_value(
       s, myAny, in);
   System.out.println("This nv name is " + nv.name());
   try {
       System.out.println("This nv value is " + nv.value().extract_long());
       System.out.println("This nv flag is " + nv.flags());
   } catch (org.omg.CORBA.BAD_OPERATION b) {
     System.out.println("extract failed");
   }

If this code fragment were put into a main method, the output would be something like the following:

   This nv name is argument_1
   This nv value is 12345
   This nv flag is 1

Note that the method value returns an Any object. In order to access the long contained in the Any object, we used the method extract_long.

See Also:
Since: JDK1.2
/** * An object used in the DII and DSI to describe * arguments and return values. <code>NamedValue</code> objects * are also used in the <code>Context</code> * object routines to pass lists of property names and values. * <P> * A <code>NamedValue</code> object contains: * <UL> * <LI>a name -- If the <code>NamedValue</code> object is used to * describe arguments to a request, the name will be an argument * identifier specified in the OMG IDL interface definition * for the operation being described. * <LI>a value -- an <code>Any</code> object * <LI>an argument mode flag -- one of the following: * <UL> * <LI><code>ARG_IN.value</code> * <LI><code>ARG_OUT.value</code> * <LI><code>ARG_INOUT.value</code> * <LI>zero -- if this <code>NamedValue</code> object represents a property * in a <code>Context</code> object rather than a parameter or * return value * </UL> * </UL> * <P> * The class <code>NamedValue</code> has three methods, which * access its fields. The following code fragment demonstrates * creating a <code>NamedValue</code> object and then accessing * its fields: * <PRE> * ORB orb = ORB.init(args, null); * String s = "argument_1"; * org.omg.CORBA.Any myAny = orb.create_any(); * myAny.insert_long(12345); * int in = org.omg.CORBA.ARG_IN.value; * org.omg.CORBA.NamedValue nv = orb.create_named_value( * s, myAny, in); * System.out.println("This nv name is " + nv.name()); * try { * System.out.println("This nv value is " + nv.value().extract_long()); * System.out.println("This nv flag is " + nv.flags()); * } catch (org.omg.CORBA.BAD_OPERATION b) { * System.out.println("extract failed"); * } * </PRE> * * <P> * If this code fragment were put into a <code>main</code> method, * the output would be something like the following: * <PRE> * This nv name is argument_1 * This nv value is 12345 * This nv flag is 1 * </PRE> * <P> * Note that the method <code>value</code> returns an <code>Any</code> * object. In order to access the <code>long</code> contained in the * <code>Any</code> object, * we used the method <code>extract_long</code>. * * @see Any * @see ARG_IN * @see ARG_INOUT * @see ARG_OUT * * @since JDK1.2 */
public abstract class NamedValue {
Retrieves the name for this NamedValue object.
Returns: a String object representing the name of this NamedValue object
/** * Retrieves the name for this <code>NamedValue</code> object. * * @return a <code>String</code> object representing * the name of this <code>NamedValue</code> object */
public abstract String name();
Retrieves the value for this NamedValue object.
Returns: an Any object containing the value of this NamedValue object
/** * Retrieves the value for this <code>NamedValue</code> object. * * @return an <code>Any</code> object containing * the value of this <code>NamedValue</code> object */
public abstract Any value();
Retrieves the argument mode flag for this NamedValue object.
Returns: an int representing the argument mode for this NamedValue object
/** * Retrieves the argument mode flag for this <code>NamedValue</code> object. * * @return an <code>int</code> representing the argument * mode for this <code>NamedValue</code> object */
public abstract int flags(); }