diff -r 000000000000 -r 7ef37b2cdcad src/share/classes/org/omg/PortableInterceptor/IOP.idl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/classes/org/omg/PortableInterceptor/IOP.idl Wed Apr 27 01:21:28 2016 +0800
@@ -0,0 +1,617 @@
+/*
+ * Copyright (c) 2000, 2003, 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.
+ */
+
+#ifndef _IOP_IDL_
+#define _IOP_IDL_
+
+#include "CORBAX.idl"
+
+#pragma prefix "omg.org"
+
+#ifndef CORBA3
+#define local
+#endif
+
+module IOP {
+ //
+ // Standard Protocol Profile tag values
+ //
+ /** Profile ID */
+ typedef unsigned long ProfileId;
+
+ /**
+ * Identifies profiles that
+ * support the Internet Inter-ORB Protocol. The ProfileBody
+ * of this profile contains a CDR encapsulation of a structure
+ * containing addressing and object identification information used by
+ * IIOP. Version 1.1 of the TAG_INTERNET_IOP
profile
+ * also includes an array of TaggedComponent objects that can
+ * contain additional information supporting optional IIOP features,
+ * ORB services such as security, and future protocol extensions.
+ *
+ * Protocols other than IIOP (such as ESIOPs and other GIOPs) can share
+ * profile information (such as object identity or security
+ * information) with IIOP by encoding their additional profile information
+ * as components in the TAG_INTERNET_IOP
profile. All
+ * TAG_INTERNET_IOP
profiles support IIOP, regardless of
+ * whether they also support additional protocols. Interoperable
+ * ORBs are not required to create or understand any other profile,
+ * nor are they required to create or understand any of the components
+ * defined for other protocols that might share the
+ * TAG_INTERNET_IOP
profile with IIOP.
+ *
+ * The profile_data
for the TAG_INTERNET_IOP
+ * profile is a CDR encapsulation of the IIOP.ProfileBody_1_1
+ * type.
+ */
+ const ProfileId TAG_INTERNET_IOP = 0;
+
+ /**
+ * Indicates that the value encapsulated is of type
+ * MultipleComponentProfile
. In this case, the profile
+ * consists of a list of protocol components, the use of which must
+ * be specified by the protocol using this profile. This profile may
+ * be used to carry IOR components.
+ *
+ * The
+ * 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.
+ *
+ * This data structure is designed to be efficient in typical
+ * single-protocol configurations, while not penalizing multiprotocol ones.
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * 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
+ * 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.
+ */
+ struct IOR {
+ /** The type id, represented as a String. */
+ string type_id;
+
+ /**
+ * An array of tagged profiles associated with this
+ * object reference.
+ */
+ sequence
+ * Specifications of components must include the following information:
+ *
+ * The
+ * The
+ * The
+ * Zero or more instances of the
+ * For values and value helpers, the codebase is transmitted after the
+ * value tag. For stubs and ties, the codebase is transmitted as
+ * the TaggedComponent
+ *
+ *
+ *
+ * A
+ * The encodings currently supported are:
+ *
+ * @param enc The encoding for which to create a profile_data
for the
+ * TAG_MULTIPLE_COMPONENTS
profile is a CDR encapsulation
+ * of the MultipleComponentProfile
type shown above.
+ */
+ const ProfileId TAG_MULTIPLE_COMPONENTS = 1;
+
+ /**
+ * 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.
+ */
+ struct TaggedProfile {
+ /** The tag, represented as a profile id. */
+ ProfileId tag;
+
+ /** The associated profile data. */
+ sequence TypeID
is the only
+ * mechanism that can be used to represent the type
+ * CORBA.Object
. 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.
+ * TaggedComponents
contained in
+ * TAG_INTERNET_IOP
and
+ * TAG_MULTIPLE_COMPONENTS
profiles are identified by
+ * unique numeric tags using a namespace distinct form that is used for
+ * profile tags. Component tags are assigned by the OMG.
+ *
+ *
+ * Specification of protocols must describe how the components affect
+ * the protocol. The following should be specified in any protocol
+ * definition for each TaggedComponent
that the protocol uses:
+ *
+ *
+ */
+ struct TaggedComponent {
+ /** The tag, represented as a component id. */
+ ComponentId tag;
+
+ /** The component data associated with the component id. */
+ sequence TAG_ORB_TYPE
component has an associated value of
+ * type unsigned long (Java long), encoded as a CDR encapsulation,
+ * designating an ORB type ID allocated by the OMG for the ORB type of the
+ * originating ORB. Anyone may register any ORB types by submitting
+ * a short (one-paragraph) description of the ORB type to the OMG,
+ * and will receive a new ORB type ID in return. A list of ORB type
+ * descriptions and values will be made available on the OMG web server.
+ * TAG_ORB_TYPE
component can appear at most once in
+ * any IOR profile. For profiles supporting IIOP 1.1 or greater, it
+ * is optionally present.
+ */
+ const ComponentId TAG_ORB_TYPE = 0 ;
+
+ /**
+ * The code set component of the IOR multi-component profile structure
+ * contains:
+ *
+ *
+ * Both char and wchar conversion code sets are listed in order of
+ * preference.
+ */
+ const ComponentId TAG_CODE_SETS = 1 ;
+
+ /**
+ * A profile component containing the sequence of QoS policies exported
+ * with the object reference by an object adapter.
+ */
+ const ComponentId TAG_POLICIES = 2 ;
+
+ /**
+ * In cases where the same object key is used for more than one
+ * internet location, the following standard IOR Component is defined
+ * for support in IIOP version 1.2.
+ * TAG_ALTERNATE_IIOP_ADDRESS
component has an
+ * associated value of type:
+ *
+ *
+ * encoded as a CDR encapsulation.
+ *
+ * struct {
+ * string HostID,
+ * short Port
+ * };
+ *
+ * TAG_ALTERNATE_IIOP_ADDRESS
+ * component type may be included in a version 1.2
+ * TAG_INTERNET_IOP
Profile. Each of these alternative
+ * addresses may be used by the client orb, in addition to the host
+ * and port address expressed in the body of the Profile. In cases
+ * where one or more TAG_ALTERNATE_IIOP_ADDRESS
components
+ * are present in a TAG_INTERNET_IOP
Profile, no order of
+ * use is prescribed by Version 1.2 of IIOP.
+ */
+ const ComponentId TAG_ALTERNATE_IIOP_ADDRESS = 3 ;
+
+ /**
+ * Class downloading is supported for stubs, ties, values, and
+ * value helpers. The specification allows transmission of codebase
+ * information on the wire for stubs and ties, and enables usage of
+ * pre-existing ClassLoaders when relevant.
+ * TAG_JAVA_CODEBASE
in the IOR
+ * profile, where the component_data
is a CDR encapsulation
+ * of the codebase written as an IDL string. The codebase is a
+ * space-separated list of one or more URLs.
+ */
+ const ComponentId TAG_JAVA_CODEBASE = 25 ;
+
+ /**
+ * RMI-IIOP has multiple stream format versions. A server
+ * can specify its maximum version by including the
+ * TAG_RMI_CUSTOM_MAX_STREAM_FORMAT tagged component or
+ * rely on the default of version 1 for GIOP 1.2 and less
+ * and version 2 for GIOP 1.3 and higher.
+ *
+ * See Java to IDL ptc/02-01-12 1.4.11.
+ */
+ const ComponentId TAG_RMI_CUSTOM_MAX_STREAM_FORMAT = 38 ;
+
+ /** An array of tagged components, forming a multiple component profile. */
+ typedef sequence CosTSInteroperation.PropogationContext
defined in
+ * CORBAservices: Common Object Services Specifications.
+ */
+ const ServiceId TransactionService = 0;
+
+ /**
+ * Identifies a CDR encapsulation of the
+ * CONV_FRAME.CodeSetContext
defined in
+ * Section 13.10.2.5, "GIOP Code Set Service Context," on page 13-43.
+ */
+ const ServiceId CodeSets = 1;
+
+ /**
+ * Identifies a CDR encapsulation of the RMICustomMaxStreamFormat
+ * service context which contains a single byte specifying
+ * the client's maximum RMI-IIOP stream format version.
+ *
+ * See Java to IDL ptc/02-01-12 1.4.12.
+ */
+ const ServiceId RMICustomMaxStreamFormat = 17 ;
+
+ /**
+ * DCOM-CORBA Interworking uses three service contexts as defined in
+ * "DCOM-CORBA Interworking" in the "Interoperability with non-CORBA
+ * Systems" chapter.
+ * ChainBypassCheck
carries a CDR encapsulation of the
+ * struct CosBridging.ChainBypassCheck
. This is carried
+ * only in a Request message as described in Section 20.9.1, "CORBA
+ * Chain Bypass," on page 20-19.
+ */
+ const ServiceId ChainBypassCheck = 2;
+
+ /**
+ * DCOM-CORBA Interworking uses three service contexts as defined in
+ * "DCOM-CORBA Interworking" in the "Interoperability with non-CORBA
+ * Systems" chapter.
+ * ChainBypassInfo
carries a CDR encapsulation of the
+ * struct CosBridging.ChainBypassInfo
. This is carried
+ * only in a Reply message as described in Section 20.9.1, "CORBA Chain
+ * Bypass," on page 20-19.
+ */
+ const ServiceId ChainBypassInfo = 3;
+
+ /**
+ * DCOM-CORBA Interworking uses three service contexts as defined in
+ * "DCOM-CORBA Interworking" in the "Interoperability with non-CORBA
+ * Systems" chapter.
+ * LogicalThreadId
, carries a CDR encapsulation of
+ * the struct CosBridging.LogicalThreadId
as described
+ * in Section 20.10, "Thread Identification," on page 20-21.
+ */
+ const ServiceId LogicalThreadId = 4;
+
+ /**
+ * Identifies a CDR encapsulation of the
+ * IIOP.BiDirIIOPServiceContext
defined in Section 15.8,
+ * "Bi-Directional GIOP," on page 15-55.
+ */
+ const ServiceId BI_DIR_IIOP = 5;
+
+ /**
+ * Identifies a CDR encapsulation of the IOR of the
+ * SendingContext.RunTime
object (see Section 5.6, "Access
+ * to the Sending Context Run Time," on page 5-15).
+ */
+ const ServiceId SendingContextRunTime = 6;
+
+ /**
+ * For information on INVOCATION_POLICIES
refer to the
+ * Asynchronous Messaging specification - orbos/98-05-05.
+ */
+ const ServiceId INVOCATION_POLICIES = 7;
+
+ /**
+ * For information on FORWARDED_IDENTITY
refer to the
+ * Firewall specification - orbos/98-05-04.
+ */
+ const ServiceId FORWARDED_IDENTITY = 8;
+
+ /**
+ * Identifies a CDR encapsulation of a marshaled instance of a
+ * java.lang.Throwable or one of its subclasses as described in Java
+ * to IDL Language Mapping, Section 1.4.8.1, "Mapping of
+ * UnknownExceptionInfo Service Context," on page 1-32.
+ */
+ const ServiceId UnknownExceptionInfo = 9;
+
+ /**
+ * CORBA formal/02-06-01: 13.7.1:
+ * ExceptionDetailMessage identifies a CDR encapsulation of a wstring,
+ * encoded using GIOP 1.2 with a TCS-W of UTF-16. This service context
+ * may be sent on Reply messages with a reply_status of SYSTEM_EXCEPTION
+ * or USER_EXCEPTION. The usage of this service context is defined
+ * by language mappings.
+ *
+ * IDL/Java: ptc/02-01-22: 1.15.2:
+ * When a System Exception is marshaled, its GIOP Reply message shall
+ * include an associated ExceptionDetailMessage service context. The
+ * callee's stack trace is often very valuable debugging information but
+ * may contain sensitive or unwanted information. The wstring within the
+ * service context will therefore contain additional information relating
+ * to the exception, for example the result of calling either
+ * printStackTrace(PrintWriter) or getMessage() on the exception. When
+ * unmarshaling a System Exception on the client side, the wstring from
+ * any ExceptionDetailMessage service context shall become the Java error
+ * message in the unmarshaled exception object.
+ */
+ const ServiceId ExceptionDetailMessage = 14;
+
+
+ // BEGIN part which lived in Interceptors.idl.
+
+ /**
+ * An array of TaggedComponent
objects.
+ */
+ typedef sequenceCodec
provides a mechanism
+ * to transfer these components between their IDL data types and their CDR
+ * encapsulation representations.
+ * Codec
is obtained from the CodecFactory
.
+ * The CodecFactory
is obtained through a call to
+ * ORB.resolve_initial_references( "CodecFactory" )
.
+ */
+ local interface Codec {
+
+ /**
+ * This exception is thrown by Codec.encode
or
+ * Codec.encode_value
when the type is invalid for the
+ * encoding. For example, this exception is thrown if the encoding is
+ * ENCODING_CDR_ENCAPS
version 1.0 and a type
+ * that does not exist in that version, such as wstring
,
+ * is passed to the operation.
+ */
+ exception InvalidTypeForEncoding {};
+
+ /**
+ * This exception is thrown by Codec.decode
or
+ * Codec.decode_value
when the data in the byte array
+ * cannot be decoded into an Any.
+ */
+ exception FormatMismatch {};
+
+ /**
+ * This exception is thrown by decode_value
when the given
+ * TypeCode
does not match the given byte array.
+ */
+ exception TypeMismatch {};
+
+ /**
+ * Converts the given any into a byte array based on the encoding
+ * format effective for this Codec
.
+ *
+ * @param data The data, in the form of an any, to be encoded into
+ * a byte array.
+ * @return A byte array containing the encoded Any. This byte array
+ * contains both the TypeCode
and the data of the type.
+ * @exception InvalidTypeForEncoding thrown if the type is not valid for
+ * the encoding format effective for this Codec
.
+ */
+ CORBA::OctetSeq encode (in any data)
+ raises (InvalidTypeForEncoding);
+
+ /**
+ * Decodes the given byte array into an Any based on the encoding
+ * format effective for this Codec
.
+ *
+ * @param data The data, in the form of a byte array, to be decoded into
+ * an Any.
+ * @return An Any containing the data from the decoded byte array.
+ * @exception FormatMismatch is thrown if the byte array cannot be
+ * decoded into an Any.
+ */
+ any decode (in CORBA::OctetSeq data) raises (FormatMismatch);
+
+ /**
+ * Converts the given any into a byte array based on the encoding
+ * format effective for this Codec. Only the data from the Any is
+ * encoded, not the TypeCode
.
+ *
+ * @param data The data, in the form of an Any, to be encoded into
+ * a byte array.
+ * @return A byte array containing the data from the encoded any.
+ * @exception InvalidTypeForEncoding thrown if the type is not valid for
+ * the encoding format effective for this Codec
.
+ */
+ CORBA::OctetSeq encode_value (in any data)
+ raises (InvalidTypeForEncoding);
+
+ /**
+ * Decodes the given byte array into an Any based on the given
+ * TypeCode
and the encoding format effective for
+ * this Codec
.
+ *
+ * @param data The data, in the form of a byte array, to be decoded
+ * into an Any.
+ * @param tc The TypeCode to be used to decode the data.
+ * @return An Any containing the data from the decoded byte array.
+ * @exception FormatMismatch thrown if the byte array cannot be
+ * decoded into an Any.
+ */
+ any decode_value (in CORBA::OctetSeq data, in CORBA::TypeCode tc)
+ raises (FormatMismatch, TypeMismatch);
+ };
+
+ /**
+ * Defines an encoding format of a Codec
, such as
+ * CDR Encapsulation (ENCODING_CDR_ENCAPS
).
+ */
+ typedef short EncodingFormat;
+
+ /**
+ * The CDR Encapsulation encoding.
+ * @see CodecFactory
+ */
+ const EncodingFormat ENCODING_CDR_ENCAPS = 0;
+
+ /**
+ * Defines the encoding format of a Codec
. This class
+ * details the encoding format, such as CDR Encapsulation encoding, and
+ * the major and minor versions of that format.
+ *
+ *
+ * Vendors are free to support additional encodings.
+ *
+ * @see ENCODING_CDR_ENCAPS
+ */
+ struct Encoding {
+ /**
+ * The encoding format.
+ */
+ EncodingFormat format;
+
+ /**
+ * The major version of this Encoding format.
+ */
+ octet major_version;
+
+ /**
+ * The minor version of this Encoding format.
+ */
+ octet minor_version;
+ };
+
+ /**
+ * ENCODING_CDR_ENCAPS
, version 1.0;ENCODING_CDR_ENCAPS
, version 1.1;ENCODING_CDR_ENCAPS
, version 1.2;ENCODING_CDR_ENCAPS
for all future versions of GIOP as
+ * they arise.Codecs
are obtained from the CodecFactory
.
+ * The CodecFactory
is obtained through a call to
+ * ORB.resolve_initial_references( "CodecFactory" )
.
+ */
+ local interface CodecFactory {
+ /**
+ * This exception is thrown by CodecFactory.create_codec
when
+ * the factory cannot create a Codec
for a given encoding.
+ */
+ exception UnknownEncoding {};
+
+ /**
+ * Create a Codec
of the given encoding.
+ * Codec
.
+ * @return A Codec
obtained with the given encoding.
+ * @exception UnknownEncoding thrown if this factory cannot create a
+ * Codec
of the given encoding.
+ */
+ Codec create_codec (in Encoding enc) raises (UnknownEncoding);
+ };
+
+ // END part which lived in Interceptors.idl.
+
+};
+
+#endif // _IOP_IDL_