- package org.omg.IOP;
-
-
- /**
- * org/omg/IOP/IORHelper.java .
- * Generated by the IDL-to-Java compiler (portable), version "3.1"
- * from ../../../../src/share/classes/org/omg/PortableInterceptor/IOP.idl
- * Monday, February 23, 2004 7:03:03 AM GMT
- */
-
-
- /**
- * Captures information about a object references, such as whether the
- * object is null, what type it is, what protocols are supported, and what
- * ORB services are available.
- * <p>
- * This data structure need not be used internally to any given ORB,
- * and is not intended to be visible to application-level ORB programmers.
- * It should be used only when crossing object reference domain
- * boundaries, within bridges.
- * <p>
- * This data structure is designed to be efficient in typical
- * single-protocol configurations, while not penalizing multiprotocol ones.
- * <p>
- * Object references have at least one tagged profile. Each profile
- * supports one or more protocols and encapsulates all the basic
- * information the protocols it supports need to identify an object.
- * Any single profile holds enough information to drive a complete
- * invocation using any of the protocols it supports; the content
- * and structure of those profile entries are wholly specified by
- * these protocols. A bridge between two domains may need to know the
- * detailed content of the profile for those domains' profiles,
- * depending on the technique it uses to bridge the domains.
- * <p>
- * Each profile has a unique numeric tag, assigned by the OMG.
- * Profile tags in the range 0x80000000 through 0xffffffff are reserved
- * for future use, and are not currently available for assignment.
- * <p>
- * Null object references are indicated by an empty set of profiles,
- * and by a "Null" type ID (a string which contains only a single
- * terminating character). A Null <code>TypeID</code> is the only
- * mechanism that can be used to represent the type
- * <code>CORBA.Object</code>. Type IDs may only be "Null" in any message,
- * requiring the client to use existing knowledge or to consult the
- * object, to determine interface types supported. The type ID
- * is a Repository ID identifying the interface type, and is provided
- * to allow ORBs to preserve strong typing. This identifier is agreed
- * on within the bridge and, for reasons outside the scope of the
- * interoperability specification, needs to have a much broader scope to
- * address various problems in system evolution and maintenance.
- * Type IDs support detection of type equivalence, and in conjunction
- * with an Interface Repository, allow processes to reason about the
- * relationship of the type of the object referred to and any other type.
- * <p>
- * The type ID, if provided by the server, indicates the most derived
- * type that the server wishes to publish, at the time the reference
- * is generated. The object's actual most derived type may later change
- * to a more derived type. Therefore, the type ID in the IOR can only
- * be interpreted by the client as a hint that the object supports at
- * least the indicated interface. The client can succeed in narrowing
- * the reference to the indicated interface, or to one of its base
- * interfaces, based solely on the type ID in the IOR, but must not fail
- * to narrow the reference without consulting the object via the
- * "_is_a" or "_get_interface" pseudo-operations.
- */
- abstract public class IORHelper
- {
- private static String _id = "IDL:omg.org/IOP/IOR:1.0";
-
- public static void insert (org.omg.CORBA.Any a, org.omg.IOP.IOR that)
- {
- org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
- a.type (type ());
- write (out, that);
- a.read_value (out.create_input_stream (), type ());
- }
-
- public static org.omg.IOP.IOR extract (org.omg.CORBA.Any a)
- {
- return read (a.create_input_stream ());
- }
-
- private static org.omg.CORBA.TypeCode __typeCode = null;
- private static boolean __active = false;
- synchronized public static org.omg.CORBA.TypeCode type ()
- {
- if (__typeCode == null)
- {
- synchronized (org.omg.CORBA.TypeCode.class)
- {
- if (__typeCode == null)
- {
- if (__active)
- {
- return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
- }
- __active = true;
- org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [2];
- org.omg.CORBA.TypeCode _tcOf_members0 = null;
- _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
- _members0[0] = new org.omg.CORBA.StructMember (
- "type_id",
- _tcOf_members0,
- null);
- _tcOf_members0 = org.omg.IOP.TaggedProfileHelper.type ();
- _tcOf_members0 = org.omg.CORBA.ORB.init ().create_sequence_tc (0, _tcOf_members0);
- _members0[1] = new org.omg.CORBA.StructMember (
- "profiles",
- _tcOf_members0,
- null);
- __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (org.omg.IOP.IORHelper.id (), "IOR", _members0);
- __active = false;
- }
- }
- }
- return __typeCode;
- }
-
- public static String id ()
- {
- return _id;
- }
-
- public static org.omg.IOP.IOR read (org.omg.CORBA.portable.InputStream istream)
- {
- org.omg.IOP.IOR value = new org.omg.IOP.IOR ();
- value.type_id = istream.read_string ();
- int _len0 = istream.read_long ();
- value.profiles = new org.omg.IOP.TaggedProfile[_len0];
- for (int _o1 = 0;_o1 < value.profiles.length; ++_o1)
- value.profiles[_o1] = org.omg.IOP.TaggedProfileHelper.read (istream);
- return value;
- }
-
- public static void write (org.omg.CORBA.portable.OutputStream ostream, org.omg.IOP.IOR value)
- {
- ostream.write_string (value.type_id);
- ostream.write_long (value.profiles.length);
- for (int _i0 = 0;_i0 < value.profiles.length; ++_i0)
- org.omg.IOP.TaggedProfileHelper.write (ostream, value.profiles[_i0]);
- }
-
- }