corba/src/share/classes/org/omg/CORBA/package.html
author ohair
Tue, 25 May 2010 15:52:11 -0700
changeset 5555 b2b5ed3f0d0d
parent 4 02bb8761fcce
child 23749 cdbbec8fdf45
permissions -rw-r--r--
6943119: Rebrand source copyright notices Reviewed-by: darcy
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
02bb8761fcce Initial load
duke
parents:
diff changeset
     1
<HTML>
02bb8761fcce Initial load
duke
parents:
diff changeset
     2
<HEAD>
02bb8761fcce Initial load
duke
parents:
diff changeset
     3
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
02bb8761fcce Initial load
duke
parents:
diff changeset
     4
   <META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en]C-gatewaynet  (WinNT; U) 
02bb8761fcce Initial load
duke
parents:
diff changeset
     5
[Netscape]">
02bb8761fcce Initial load
duke
parents:
diff changeset
     6
   <TITLE>package</TITLE>
02bb8761fcce Initial load
duke
parents:
diff changeset
     7
<!--
02bb8761fcce Initial load
duke
parents:
diff changeset
     8
/*
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
     9
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    10
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
02bb8761fcce Initial load
duke
parents:
diff changeset
    11
*
02bb8761fcce Initial load
duke
parents:
diff changeset
    12
* This code is free software; you can redistribute it and/or modify it
02bb8761fcce Initial load
duke
parents:
diff changeset
    13
* under the terms of the GNU General Public License version 2 only, as
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    14
* published by the Free Software Foundation.  Oracle designates this
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    15
* particular file as subject to the "Classpath" exception as provided
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    16
* by Oracle in the LICENSE file that accompanied this code.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    17
*
02bb8761fcce Initial load
duke
parents:
diff changeset
    18
* This code is distributed in the hope that it will be useful, but WITHOUT
02bb8761fcce Initial load
duke
parents:
diff changeset
    19
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
02bb8761fcce Initial load
duke
parents:
diff changeset
    20
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
02bb8761fcce Initial load
duke
parents:
diff changeset
    21
* version 2 for more details (a copy is included in the LICENSE file that
02bb8761fcce Initial load
duke
parents:
diff changeset
    22
* accompanied this code).
02bb8761fcce Initial load
duke
parents:
diff changeset
    23
*
02bb8761fcce Initial load
duke
parents:
diff changeset
    24
* You should have received a copy of the GNU General Public License version
02bb8761fcce Initial load
duke
parents:
diff changeset
    25
* 2 along with this work; if not, write to the Free Software Foundation,
02bb8761fcce Initial load
duke
parents:
diff changeset
    26
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
02bb8761fcce Initial load
duke
parents:
diff changeset
    27
*
5555
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    28
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    29
* or visit www.oracle.com if you need additional information or have any
b2b5ed3f0d0d 6943119: Rebrand source copyright notices
ohair
parents: 4
diff changeset
    30
* questions.
4
02bb8761fcce Initial load
duke
parents:
diff changeset
    31
*/  
02bb8761fcce Initial load
duke
parents:
diff changeset
    32
-->
02bb8761fcce Initial load
duke
parents:
diff changeset
    33
</HEAD>
02bb8761fcce Initial load
duke
parents:
diff changeset
    34
<BODY BGCOLOR="#FFFFFF">
02bb8761fcce Initial load
duke
parents:
diff changeset
    35
Provides the mapping of the OMG CORBA APIs to the Java<SUP><FONT 
02bb8761fcce Initial load
duke
parents:
diff changeset
    36
SIZE=-2>TM</FONT></SUP>
02bb8761fcce Initial load
duke
parents:
diff changeset
    37
programming language, including the class <TT>ORB</TT>, which is implemented
02bb8761fcce Initial load
duke
parents:
diff changeset
    38
so that a programmer can use it as a fully-functional Object Request Broker
02bb8761fcce Initial load
duke
parents:
diff changeset
    39
(ORB).
02bb8761fcce Initial load
duke
parents:
diff changeset
    40
02bb8761fcce Initial load
duke
parents:
diff changeset
    41
<P>For a precise list of supported sections of official CORBA specifications with which 
02bb8761fcce Initial load
duke
parents:
diff changeset
    42
the Java[TM] Platform, Standard Edition 6 complies, see <A 
02bb8761fcce Initial load
duke
parents:
diff changeset
    43
HREF="doc-files/compliance.html"><em>Official Specifications for CORBA support in 
02bb8761fcce Initial load
duke
parents:
diff changeset
    44
Java[TM] SE 6</em></A>.
02bb8761fcce Initial load
duke
parents:
diff changeset
    45
02bb8761fcce Initial load
duke
parents:
diff changeset
    46
02bb8761fcce Initial load
duke
parents:
diff changeset
    47
<H1>General Information</H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
    48
The information in this section is information relevant to someone who 
02bb8761fcce Initial load
duke
parents:
diff changeset
    49
compiles Interface Definition Language (IDL) files and uses the
02bb8761fcce Initial load
duke
parents:
diff changeset
    50
ORB to write clients and servers.
02bb8761fcce Initial load
duke
parents:
diff changeset
    51
02bb8761fcce Initial load
duke
parents:
diff changeset
    52
<P>The classes and interfaces described in this section can be put into 
02bb8761fcce Initial load
duke
parents:
diff changeset
    53
four groups: <tt>ORB classes</tt>, Exceptions, <tt>Helper</tt> classes,
02bb8761fcce Initial load
duke
parents:
diff changeset
    54
and <tt>Holder</tt> classes.
02bb8761fcce Initial load
duke
parents:
diff changeset
    55
02bb8761fcce Initial load
duke
parents:
diff changeset
    56
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
    57
The <tt>ORB</tt> Class</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
    58
02bb8761fcce Initial load
duke
parents:
diff changeset
    59
<P>An ORB handles (or brokers) method invocations between a client and
02bb8761fcce Initial load
duke
parents:
diff changeset
    60
the method's implementation on a server. Because the client and server
02bb8761fcce Initial load
duke
parents:
diff changeset
    61
may be anywhere on a network, and because the invocation and implementation
02bb8761fcce Initial load
duke
parents:
diff changeset
    62
may be written in different programming languages, an ORB does a great
02bb8761fcce Initial load
duke
parents:
diff changeset
    63
deal of work behind the scenes to accomplish this communication.
02bb8761fcce Initial load
duke
parents:
diff changeset
    64
02bb8761fcce Initial load
duke
parents:
diff changeset
    65
<P>Most of what an ORB does is completely transparent to the user, and a major
02bb8761fcce Initial load
duke
parents:
diff changeset
    66
portion of the <TT>CORBA</TT> package consists of classes used by the ORB
02bb8761fcce Initial load
duke
parents:
diff changeset
    67
behind the scenes. The result is that most programmers will use only a
02bb8761fcce Initial load
duke
parents:
diff changeset
    68
small part of this package directly. In fact, most programmers will use
02bb8761fcce Initial load
duke
parents:
diff changeset
    69
only a few methods from the <TT>ORB</TT> class, some exceptions, and 
02bb8761fcce Initial load
duke
parents:
diff changeset
    70
occasionally,
02bb8761fcce Initial load
duke
parents:
diff changeset
    71
a holder class. 
02bb8761fcce Initial load
duke
parents:
diff changeset
    72
<H3>
02bb8761fcce Initial load
duke
parents:
diff changeset
    73
<TT>ORB</TT> Methods</H3>
02bb8761fcce Initial load
duke
parents:
diff changeset
    74
02bb8761fcce Initial load
duke
parents:
diff changeset
    75
<P>Before an application can enter the CORBA environment, it must first: 
02bb8761fcce Initial load
duke
parents:
diff changeset
    76
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
    77
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
    78
<LI>Be initialized into the ORB and possibly the object adapter (POA) environments.
02bb8761fcce Initial load
duke
parents:
diff changeset
    79
<LI>Get references to ORB object (for use in future ORB operations) 
02bb8761fcce Initial load
duke
parents:
diff changeset
    80
and perhaps other objects (including the root POA or some Object Adapter objects). 
02bb8761fcce Initial load
duke
parents:
diff changeset
    81
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
    82
<P>The following operations are provided to initialize applications and obtain
02bb8761fcce Initial load
duke
parents:
diff changeset
    83
 the appropriate object references:
02bb8761fcce Initial load
duke
parents:
diff changeset
    84
 <P>
02bb8761fcce Initial load
duke
parents:
diff changeset
    85
 <UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
    86
 <LI>Operations providing access to the ORB, which are discussed in this
02bb8761fcce Initial load
duke
parents:
diff changeset
    87
 section.
02bb8761fcce Initial load
duke
parents:
diff changeset
    88
 <LI>Operations providing access to Object Adapters, Interface Repository, 
02bb8761fcce Initial load
duke
parents:
diff changeset
    89
 Naming Service, and other Object Services. These operations are described 
02bb8761fcce Initial load
duke
parents:
diff changeset
    90
 in <a href="#adv"><em>Other Classes</em></a>.
02bb8761fcce Initial load
duke
parents:
diff changeset
    91
 </UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
    92
 <P>
02bb8761fcce Initial load
duke
parents:
diff changeset
    93
When an application requires a CORBA environment it needs a mechanism to 
02bb8761fcce Initial load
duke
parents:
diff changeset
    94
get an ORB object reference and possibly an OA object reference 
02bb8761fcce Initial load
duke
parents:
diff changeset
    95
(such as the root POA). This serves two purposes. First, it initializes 
02bb8761fcce Initial load
duke
parents:
diff changeset
    96
an application into the ORB and OA environments. Second, it returns the 
02bb8761fcce Initial load
duke
parents:
diff changeset
    97
ORB object reference and the OA object reference to the application 
02bb8761fcce Initial load
duke
parents:
diff changeset
    98
for use in future ORB and OA operations. 
02bb8761fcce Initial load
duke
parents:
diff changeset
    99
02bb8761fcce Initial load
duke
parents:
diff changeset
   100
<P>In order to obtain an ORB object reference, applications call 
02bb8761fcce Initial load
duke
parents:
diff changeset
   101
the <tt>ORB.init</tt> operation. The parameters to the call can comprise an 
02bb8761fcce Initial load
duke
parents:
diff changeset
   102
identifier for the ORB for which the object reference is required,
02bb8761fcce Initial load
duke
parents:
diff changeset
   103
 and an arg_list, which is used to allow environment-specific data to be 
02bb8761fcce Initial load
duke
parents:
diff changeset
   104
 passed into the call. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   105
02bb8761fcce Initial load
duke
parents:
diff changeset
   106
<P>These are the <TT>ORB</TT> methods
02bb8761fcce Initial load
duke
parents:
diff changeset
   107
 that provide access to the ORB:
02bb8761fcce Initial load
duke
parents:
diff changeset
   108
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   109
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   110
<TT><bold>init</bold>()</TT> 
02bb8761fcce Initial load
duke
parents:
diff changeset
   111
02bb8761fcce Initial load
duke
parents:
diff changeset
   112
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   113
<TT><bold>init</bold>(String [] args, Properties props)</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   114
02bb8761fcce Initial load
duke
parents:
diff changeset
   115
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   116
<TT><bold>init</bold>(Applet app, Properties props)</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   117
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   118
02bb8761fcce Initial load
duke
parents:
diff changeset
   119
<P>Using the <tt>init()</tt> method without parameters initiates 
02bb8761fcce Initial load
duke
parents:
diff changeset
   120
a singleton ORB,  which can only
02bb8761fcce Initial load
duke
parents:
diff changeset
   121
give typecode creation <tt>any</tt>s needed in code generated
02bb8761fcce Initial load
duke
parents:
diff changeset
   122
in Helper classes by <tt>idlj</tt>.
02bb8761fcce Initial load
duke
parents:
diff changeset
   123
02bb8761fcce Initial load
duke
parents:
diff changeset
   124
<P>Applications require a portable means by which to obtain their 
02bb8761fcce Initial load
duke
parents:
diff changeset
   125
initial object references. References are required for the root 
02bb8761fcce Initial load
duke
parents:
diff changeset
   126
POA, POA Current, Interface Repository, and various Object Services 
02bb8761fcce Initial load
duke
parents:
diff changeset
   127
instances.  The functionality required by the application is similar
02bb8761fcce Initial load
duke
parents:
diff changeset
   128
 to that provided by the Naming Service. However, the OMG does not 
02bb8761fcce Initial load
duke
parents:
diff changeset
   129
 want to mandate that the Naming Service be made available to all 
02bb8761fcce Initial load
duke
parents:
diff changeset
   130
 applications in order that they may be portably initialized. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   131
 Consequently, the operations shown in this section provide a 
02bb8761fcce Initial load
duke
parents:
diff changeset
   132
 simplified, local version of the Naming Service that applications 
02bb8761fcce Initial load
duke
parents:
diff changeset
   133
 can use to obtain a small, defined set of object references which 
02bb8761fcce Initial load
duke
parents:
diff changeset
   134
 are essential to its operation. Because only a small well-defined 
02bb8761fcce Initial load
duke
parents:
diff changeset
   135
 set of objects are expected with this mechanism, the naming context
02bb8761fcce Initial load
duke
parents:
diff changeset
   136
 can be flattened to be a single-level name space. This simplification
02bb8761fcce Initial load
duke
parents:
diff changeset
   137
 results in only two operations being defined to achieve the functionality
02bb8761fcce Initial load
duke
parents:
diff changeset
   138
  required.
02bb8761fcce Initial load
duke
parents:
diff changeset
   139
  
02bb8761fcce Initial load
duke
parents:
diff changeset
   140
<P>Initial references are obtained via two operations provided in 
02bb8761fcce Initial load
duke
parents:
diff changeset
   141
the ORB object interface, providing facilities to list and 
02bb8761fcce Initial load
duke
parents:
diff changeset
   142
resolve initial object references.  These are:
02bb8761fcce Initial load
duke
parents:
diff changeset
   143
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   144
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   145
<TT><bold>resolve_initial_references</bold>(String name)</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   146
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   147
<TT><bold>list_initial_services</bold>()</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   148
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   149
<TT><bold>register_initial_reference</bold>(String id, 
02bb8761fcce Initial load
duke
parents:
diff changeset
   150
org.omg.CORBA.Object obj)</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   151
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   152
02bb8761fcce Initial load
duke
parents:
diff changeset
   153
<P>An example that uses some of these methods is <A 
02bb8761fcce Initial load
duke
parents:
diff changeset
   154
HREF="{@docRoot}/../technotes/guides/idl/GShome.html">
02bb8761fcce Initial load
duke
parents:
diff changeset
   155
<em>Getting Started with Java IDL</em></A>.
02bb8761fcce Initial load
duke
parents:
diff changeset
   156
02bb8761fcce Initial load
duke
parents:
diff changeset
   157
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   158
Exceptions</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   159
Exceptions in Java IDL are similar to those in any code written in the
02bb8761fcce Initial load
duke
parents:
diff changeset
   160
Java programming language. If a method is defined to throw an exception,
02bb8761fcce Initial load
duke
parents:
diff changeset
   161
then any code using that method must have a <TT>try</TT>/<TT>catch</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   162
block and handle that exception when it is thrown.
02bb8761fcce Initial load
duke
parents:
diff changeset
   163
02bb8761fcce Initial load
duke
parents:
diff changeset
   164
<P>The documentation on <A 
02bb8761fcce Initial load
duke
parents:
diff changeset
   165
HREF="{@docRoot}/../technotes/guides/idl/jidlExceptions.html"><em>Java
02bb8761fcce Initial load
duke
parents:
diff changeset
   166
IDL exceptions</em></A> has more information and explains the difference between
02bb8761fcce Initial load
duke
parents:
diff changeset
   167
system exceptions and user-defined exceptions.
02bb8761fcce Initial load
duke
parents:
diff changeset
   168
02bb8761fcce Initial load
duke
parents:
diff changeset
   169
<P>The following is a list of the system exceptions (which are unchecked
02bb8761fcce Initial load
duke
parents:
diff changeset
   170
exceptions inheriting through <TT><a href="SystemException.html">
02bb8761fcce Initial load
duke
parents:
diff changeset
   171
org.omg.CORBA.SystemException</a></TT> from
02bb8761fcce Initial load
duke
parents:
diff changeset
   172
<TT>java.lang.RuntimeException</TT>) that are defined in the package 
02bb8761fcce Initial load
duke
parents:
diff changeset
   173
<TT>org.omg.CORBA</TT>:
02bb8761fcce Initial load
duke
parents:
diff changeset
   174
<PRE><code>
02bb8761fcce Initial load
duke
parents:
diff changeset
   175
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BAD_CONTEXT
02bb8761fcce Initial load
duke
parents:
diff changeset
   176
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BAD_INV_ORDER
02bb8761fcce Initial load
duke
parents:
diff changeset
   177
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BAD_OPERATION
02bb8761fcce Initial load
duke
parents:
diff changeset
   178
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BAD_PARAM
02bb8761fcce Initial load
duke
parents:
diff changeset
   179
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BAD_TYPECODE
02bb8761fcce Initial load
duke
parents:
diff changeset
   180
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMM_FAILURE
02bb8761fcce Initial load
duke
parents:
diff changeset
   181
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA_CONVERSION
02bb8761fcce Initial load
duke
parents:
diff changeset
   182
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FREE_MEM
02bb8761fcce Initial load
duke
parents:
diff changeset
   183
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMP_LIMIT
02bb8761fcce Initial load
duke
parents:
diff changeset
   184
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INITIALIZE
02bb8761fcce Initial load
duke
parents:
diff changeset
   185
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTERNAL
02bb8761fcce Initial load
duke
parents:
diff changeset
   186
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTF_REPOS
02bb8761fcce Initial load
duke
parents:
diff changeset
   187
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INVALID_TRANSACTION
02bb8761fcce Initial load
duke
parents:
diff changeset
   188
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INV_FLAG
02bb8761fcce Initial load
duke
parents:
diff changeset
   189
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INV_IDENT
02bb8761fcce Initial load
duke
parents:
diff changeset
   190
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INV_OBJREF
02bb8761fcce Initial load
duke
parents:
diff changeset
   191
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INV_POLICY
02bb8761fcce Initial load
duke
parents:
diff changeset
   192
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MARSHAL
02bb8761fcce Initial load
duke
parents:
diff changeset
   193
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="#NO_IMPLEMENT">NO_IMPLEMENT</a>
02bb8761fcce Initial load
duke
parents:
diff changeset
   194
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO_MEMORY
02bb8761fcce Initial load
duke
parents:
diff changeset
   195
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO_PERMISSION
02bb8761fcce Initial load
duke
parents:
diff changeset
   196
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO_RESOURCES
02bb8761fcce Initial load
duke
parents:
diff changeset
   197
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO_RESPONSE
02bb8761fcce Initial load
duke
parents:
diff changeset
   198
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT_NOT_EXIST
02bb8761fcce Initial load
duke
parents:
diff changeset
   199
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJ_ADAPTER
02bb8761fcce Initial load
duke
parents:
diff changeset
   200
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PERSIST_STORE
02bb8761fcce Initial load
duke
parents:
diff changeset
   201
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSACTION_REQUIRED
02bb8761fcce Initial load
duke
parents:
diff changeset
   202
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSACTION_ROLLEDBACK
02bb8761fcce Initial load
duke
parents:
diff changeset
   203
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSIENT
02bb8761fcce Initial load
duke
parents:
diff changeset
   204
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNKNOWN
02bb8761fcce Initial load
duke
parents:
diff changeset
   205
</code></PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   206
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   207
The following is a list of user-defined exceptions defined in the package
02bb8761fcce Initial load
duke
parents:
diff changeset
   208
<TT>org.omg.CORBA</TT>.
02bb8761fcce Initial load
duke
parents:
diff changeset
   209
<PRE><code>
02bb8761fcce Initial load
duke
parents:
diff changeset
   210
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bounds
02bb8761fcce Initial load
duke
parents:
diff changeset
   211
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnknownUserException
02bb8761fcce Initial load
duke
parents:
diff changeset
   212
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WrongTransaction&nbsp;
02bb8761fcce Initial load
duke
parents:
diff changeset
   213
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PolicyError
02bb8761fcce Initial load
duke
parents:
diff changeset
   214
</code></PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   215
02bb8761fcce Initial load
duke
parents:
diff changeset
   216
 <H2>Subpackages</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   217
There are some packages inside the <TT>CORBA</TT> package with
02bb8761fcce Initial load
duke
parents:
diff changeset
   218
"Package" as part of their names. These packages are generally quite small
02bb8761fcce Initial load
duke
parents:
diff changeset
   219
because all they do is provide exceptions or classes for use by interfaces
02bb8761fcce Initial load
duke
parents:
diff changeset
   220
and classes in the <TT>CORBA</TT> package.
02bb8761fcce Initial load
duke
parents:
diff changeset
   221
02bb8761fcce Initial load
duke
parents:
diff changeset
   222
<P>For example, the package <TT><a href="TypeCodePackage/package-summary.html">
02bb8761fcce Initial load
duke
parents:
diff changeset
   223
org.omg.CORBA.TypeCodePackage</a></TT> contains
02bb8761fcce Initial load
duke
parents:
diff changeset
   224
two exceptions thrown by methods in the class <TT>TypeCode</TT>. These
02bb8761fcce Initial load
duke
parents:
diff changeset
   225
exceptions are:
02bb8761fcce Initial load
duke
parents:
diff changeset
   226
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   227
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   228
<TT>BadKind</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   229
02bb8761fcce Initial load
duke
parents:
diff changeset
   230
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   231
<TT>Bounds</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   232
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   233
The package <TT><a href="ORBPackage/package-summary.html">
02bb8761fcce Initial load
duke
parents:
diff changeset
   234
org.omg.CORBA.ORBPackage</a></TT> contains two exceptions:
02bb8761fcce Initial load
duke
parents:
diff changeset
   235
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   236
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   237
<TT>InvalidName</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   238
02bb8761fcce Initial load
duke
parents:
diff changeset
   239
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   240
<TT>InconsistentTypeCode</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   241
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   242
02bb8761fcce Initial load
duke
parents:
diff changeset
   243
<P>Another package that is a subpackage of <tt>CORBA</tt> is the <tt>
02bb8761fcce Initial load
duke
parents:
diff changeset
   244
<a href="portable/package-summary.html">portable</a></tt> package.  It 
02bb8761fcce Initial load
duke
parents:
diff changeset
   245
provides a set of ORB APIs that makes it 
02bb8761fcce Initial load
duke
parents:
diff changeset
   246
possible for code generated by one vendor's IDL compiler to run
02bb8761fcce Initial load
duke
parents:
diff changeset
   247
on another vendor's ORB. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   248
02bb8761fcce Initial load
duke
parents:
diff changeset
   249
02bb8761fcce Initial load
duke
parents:
diff changeset
   250
02bb8761fcce Initial load
duke
parents:
diff changeset
   251
02bb8761fcce Initial load
duke
parents:
diff changeset
   252
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   253
Holder classes</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   254
 
02bb8761fcce Initial load
duke
parents:
diff changeset
   255
02bb8761fcce Initial load
duke
parents:
diff changeset
   256
<P>Support for out and inout parameter passing modes requires the use of 
02bb8761fcce Initial load
duke
parents:
diff changeset
   257
additional  <em><a href="doc-files/generatedfiles.html#holder">holder  
02bb8761fcce Initial load
duke
parents:
diff changeset
   258
classes</a></em>. Because the Java programming language does not support out or 
02bb8761fcce Initial load
duke
parents:
diff changeset
   259
inout parameters, holder classes are needed as a means of passing a parameter
02bb8761fcce Initial load
duke
parents:
diff changeset
   260
that can be modified.   To support portable stubs and skeletons, holder classes also implement
02bb8761fcce Initial load
duke
parents:
diff changeset
   261
 the <tt><a href="portable/Streamable.html">org.omg.CORBA.portable.Streamable</a>
02bb8761fcce Initial load
duke
parents:
diff changeset
   262
 </tt> interface.
02bb8761fcce Initial load
duke
parents:
diff changeset
   263
 
02bb8761fcce Initial load
duke
parents:
diff changeset
   264
 <P>Holder classes are named by appending "Holder" to the name of the type.
02bb8761fcce Initial load
duke
parents:
diff changeset
   265
 The name of the type refers to its name in the Java programming language.  For
02bb8761fcce Initial load
duke
parents:
diff changeset
   266
 example, a holder class for the interface named <tt>Account</tt> in the Java programming
02bb8761fcce Initial load
duke
parents:
diff changeset
   267
 language would be named <tt>AccountHolder</tt>.
02bb8761fcce Initial load
duke
parents:
diff changeset
   268
02bb8761fcce Initial load
duke
parents:
diff changeset
   269
02bb8761fcce Initial load
duke
parents:
diff changeset
   270
<P>Holder classes are available for all of the basic IDL
02bb8761fcce Initial load
duke
parents:
diff changeset
   271
 datatypes in the <tt>org.omg.CORBA</tt> package.  So, for example, 
02bb8761fcce Initial load
duke
parents:
diff changeset
   272
  there are already-defined classes for <tt>LongHolder</tt>, <tt>ShortHolder</tt>,
02bb8761fcce Initial load
duke
parents:
diff changeset
   273
 <tt>FloatHolder</tt>, and so on.  Classes are also generated for 
02bb8761fcce Initial load
duke
parents:
diff changeset
   274
 all named user-defined IDL types except those defined by <tt>typedefs</tt>. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   275
 (Note that in this context user defined includes types that are 
02bb8761fcce Initial load
duke
parents:
diff changeset
   276
 defined in OMG specifications such as those for the Interface
02bb8761fcce Initial load
duke
parents:
diff changeset
   277
  Repository, and other OMG services.) 
02bb8761fcce Initial load
duke
parents:
diff changeset
   278
02bb8761fcce Initial load
duke
parents:
diff changeset
   279
02bb8761fcce Initial load
duke
parents:
diff changeset
   280
<P>Each holder class has:
02bb8761fcce Initial load
duke
parents:
diff changeset
   281
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   282
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   283
<LI>a constructor from an instance
02bb8761fcce Initial load
duke
parents:
diff changeset
   284
<LI>a default constructor
02bb8761fcce Initial load
duke
parents:
diff changeset
   285
<LI>a public instance member, <tt>value</tt> which is the typed value. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   286
<LI>a method for reading an input stream and assigning the contents to the 
02bb8761fcce Initial load
duke
parents:
diff changeset
   287
type's <tt>value</tt> field
02bb8761fcce Initial load
duke
parents:
diff changeset
   288
<LI>a method for writing the value of the <tt>value</tt> field to an output stream
02bb8761fcce Initial load
duke
parents:
diff changeset
   289
<LI>a method for getting the typecode of the type
02bb8761fcce Initial load
duke
parents:
diff changeset
   290
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   291
02bb8761fcce Initial load
duke
parents:
diff changeset
   292
<P>The default constructor sets the value field to the default value for the 
02bb8761fcce Initial load
duke
parents:
diff changeset
   293
type as defined by the Java language: 
02bb8761fcce Initial load
duke
parents:
diff changeset
   294
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   295
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   296
<LI><tt>false</tt> for boolean
02bb8761fcce Initial load
duke
parents:
diff changeset
   297
<LI><tt>0</tt> for numeric and char types
02bb8761fcce Initial load
duke
parents:
diff changeset
   298
<LI><tt>null</tt> for strings and object references
02bb8761fcce Initial load
duke
parents:
diff changeset
   299
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   300
02bb8761fcce Initial load
duke
parents:
diff changeset
   301
02bb8761fcce Initial load
duke
parents:
diff changeset
   302
02bb8761fcce Initial load
duke
parents:
diff changeset
   303
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   304
As an example, if the interface <code>Account</code>, defined in OMG IDL,
02bb8761fcce Initial load
duke
parents:
diff changeset
   305
were mapped to the Java programming language, the following holder class
02bb8761fcce Initial load
duke
parents:
diff changeset
   306
would be generated:
02bb8761fcce Initial load
duke
parents:
diff changeset
   307
<PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   308
public final class AccountHolder implements 
02bb8761fcce Initial load
duke
parents:
diff changeset
   309
    org.omg.CORBA.portable.Streamable
02bb8761fcce Initial load
duke
parents:
diff changeset
   310
{
02bb8761fcce Initial load
duke
parents:
diff changeset
   311
  // field that holds an Account object
02bb8761fcce Initial load
duke
parents:
diff changeset
   312
  public Account value = null;
02bb8761fcce Initial load
duke
parents:
diff changeset
   313
02bb8761fcce Initial load
duke
parents:
diff changeset
   314
  // default constructor
02bb8761fcce Initial load
duke
parents:
diff changeset
   315
  public AccountHolder ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   316
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   317
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   318
  
02bb8761fcce Initial load
duke
parents:
diff changeset
   319
  // creates a new AccountHolder from initialValue
02bb8761fcce Initial load
duke
parents:
diff changeset
   320
  public AccountHolder (Account initialValue)
02bb8761fcce Initial load
duke
parents:
diff changeset
   321
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   322
    value = initialValue;
02bb8761fcce Initial load
duke
parents:
diff changeset
   323
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   324
  
02bb8761fcce Initial load
duke
parents:
diff changeset
   325
  // reads the contents of i and assigns the contents to value
02bb8761fcce Initial load
duke
parents:
diff changeset
   326
  public void _read (org.omg.CORBA.portable.InputStream i)
02bb8761fcce Initial load
duke
parents:
diff changeset
   327
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   328
    value = AccountHelper.read (i);
02bb8761fcce Initial load
duke
parents:
diff changeset
   329
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   330
02bb8761fcce Initial load
duke
parents:
diff changeset
   331
  // writes value to o
02bb8761fcce Initial load
duke
parents:
diff changeset
   332
  public void _write (org.omg.CORBA.portable.OutputStream o)
02bb8761fcce Initial load
duke
parents:
diff changeset
   333
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   334
    AccountHelper.write (o, value);
02bb8761fcce Initial load
duke
parents:
diff changeset
   335
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   336
 
02bb8761fcce Initial load
duke
parents:
diff changeset
   337
  // returns the typecode for Account
02bb8761fcce Initial load
duke
parents:
diff changeset
   338
  public org.omg.CORBA.TypeCode _type ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   339
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   340
    return AccountHelper.type ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   341
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   342
02bb8761fcce Initial load
duke
parents:
diff changeset
   343
}
02bb8761fcce Initial load
duke
parents:
diff changeset
   344
</PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   345
02bb8761fcce Initial load
duke
parents:
diff changeset
   346
<P>For more information on Holder classes, see Chapter 1.4, <em>Mapping for
02bb8761fcce Initial load
duke
parents:
diff changeset
   347
Basic Types</em> in the <a href="http://cgi.omg.org/cgi-bin/doc?ptc/00-01-08">
02bb8761fcce Initial load
duke
parents:
diff changeset
   348
<em>OMG IDL to Java Language Mapping</em></a>. The Holder classes defined 
02bb8761fcce Initial load
duke
parents:
diff changeset
   349
in the package <TT>org.omg.CORBA</TT> are:
02bb8761fcce Initial load
duke
parents:
diff changeset
   350
<PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   351
&nbsp;&nbsp;&nbsp;&nbsp; <TT>AnyHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   352
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>AnySeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   353
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>BooleanHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   354
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>BooleanSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   355
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ByteHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   356
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>CharHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   357
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>CharSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   358
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>CurrentHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   359
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>DoubleHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   360
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>DoubleSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   361
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>FixedHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   362
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>FloatHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   363
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>FloatSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   364
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>IntHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   365
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>LongHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   366
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>LongLongSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   367
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>LongSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   368
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ObjectHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   369
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>OctetSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   370
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ParameterModeHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   371
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyErrorHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   372
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyListHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   373
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PrincipalHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   374
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ServiceInformationHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   375
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ShortHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   376
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ShortSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   377
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>StringHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   378
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>StringSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   379
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>TypeCodeHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   380
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ULongLongSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   381
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ULongSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   382
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>UnknownUserExceptionHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   383
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>UShortSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   384
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ValueBaseHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   385
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WCharSeqHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   386
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WrongTransactionHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   387
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WStringSeqHolder</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   388
02bb8761fcce Initial load
duke
parents:
diff changeset
   389
</PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   390
02bb8761fcce Initial load
duke
parents:
diff changeset
   391
<h2>Helper Classes </h2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   392
<P>Helper files supply several static methods needed to manipulate the type.
02bb8761fcce Initial load
duke
parents:
diff changeset
   393
 These include:
02bb8761fcce Initial load
duke
parents:
diff changeset
   394
 <P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   395
 <UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   396
 <LI><tt>Any</tt> insert and extract operations for the type
02bb8761fcce Initial load
duke
parents:
diff changeset
   397
 <LI>getting the repository id
02bb8761fcce Initial load
duke
parents:
diff changeset
   398
 <LI>getting the typecode
02bb8761fcce Initial load
duke
parents:
diff changeset
   399
 <LI>reading and writing the type from and to a stream
02bb8761fcce Initial load
duke
parents:
diff changeset
   400
 <LI>implement the <code>ValueHelper</code> interface (if it is  a user-defined
02bb8761fcce Initial load
duke
parents:
diff changeset
   401
   value type)
02bb8761fcce Initial load
duke
parents:
diff changeset
   402
 </UL> 
02bb8761fcce Initial load
duke
parents:
diff changeset
   403
02bb8761fcce Initial load
duke
parents:
diff changeset
   404
<P>The helper class for a mapped IDL interface or abstract interface
02bb8761fcce Initial load
duke
parents:
diff changeset
   405
 also include narrow operation(s). The static narrow method allows 
02bb8761fcce Initial load
duke
parents:
diff changeset
   406
 an <tt>org.omg.CORBA.Object</tt> to be narrowed to the object reference 
02bb8761fcce Initial load
duke
parents:
diff changeset
   407
 of a more specific type. The IDL exception <tt>CORBA.BAD_PARAM</tt> 
02bb8761fcce Initial load
duke
parents:
diff changeset
   408
 is thrown if the narrow fails because the object reference does not 
02bb8761fcce Initial load
duke
parents:
diff changeset
   409
 support the requested type. A different system exception is raised 
02bb8761fcce Initial load
duke
parents:
diff changeset
   410
 to indicate other kinds of errors. Trying to narrow a <tt>null</tt> will always
02bb8761fcce Initial load
duke
parents:
diff changeset
   411
  succeed with a return value of <tt>null</tt>. Generally, the only helper method an application programmer uses is
02bb8761fcce Initial load
duke
parents:
diff changeset
   412
the <code>narrow</code> method.  The other methods are normally used behind
02bb8761fcce Initial load
duke
parents:
diff changeset
   413
the scenes and are transparent to the programmer.
02bb8761fcce Initial load
duke
parents:
diff changeset
   414
02bb8761fcce Initial load
duke
parents:
diff changeset
   415
<P>Helper classes
02bb8761fcce Initial load
duke
parents:
diff changeset
   416
fall into two broad categories, <a href="#value">helpers for value types</a> and
02bb8761fcce Initial load
duke
parents:
diff changeset
   417
<a href="#basic">helpers for non value types</a>. Because all of the helper 
02bb8761fcce Initial load
duke
parents:
diff changeset
   418
classes in one category
02bb8761fcce Initial load
duke
parents:
diff changeset
   419
provide the same methods, one generic explanation of each 
02bb8761fcce Initial load
duke
parents:
diff changeset
   420
category of helper classes is presented here.
02bb8761fcce Initial load
duke
parents:
diff changeset
   421
02bb8761fcce Initial load
duke
parents:
diff changeset
   422
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   423
When OMG IDL is mapped to the Java programming language, 
02bb8761fcce Initial load
duke
parents:
diff changeset
   424
a "helper" class is generated for each user-defined type.
02bb8761fcce Initial load
duke
parents:
diff changeset
   425
This generated class will have the name of the user-defined type with
02bb8761fcce Initial load
duke
parents:
diff changeset
   426
the suffix <code>Helper</code> appended.  For example, if the
02bb8761fcce Initial load
duke
parents:
diff changeset
   427
interface <code>Account</code> is defined in OMG IDL, the
02bb8761fcce Initial load
duke
parents:
diff changeset
   428
<code>idlj</code> compiler will automatically generate a class named
02bb8761fcce Initial load
duke
parents:
diff changeset
   429
<code>AccountHelper</code>.  The <code>AccountHelper</code> class
02bb8761fcce Initial load
duke
parents:
diff changeset
   430
will contain the static methods needed for manipulating instances of the type,
02bb8761fcce Initial load
duke
parents:
diff changeset
   431
in this case, <code>Account</code> objects. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   432
02bb8761fcce Initial load
duke
parents:
diff changeset
   433
02bb8761fcce Initial load
duke
parents:
diff changeset
   434
<a name="narrow"></a>
02bb8761fcce Initial load
duke
parents:
diff changeset
   435
<h3>The <code>narrow</code> Method</h3>
02bb8761fcce Initial load
duke
parents:
diff changeset
   436
When an object is the return value for a method, it is returned in the
02bb8761fcce Initial load
duke
parents:
diff changeset
   437
form of a generic object, either an <code>org.omg.CORBA.Object</code> object
02bb8761fcce Initial load
duke
parents:
diff changeset
   438
or a <code>java.lang.Object</code> object. This object must be cast to its
02bb8761fcce Initial load
duke
parents:
diff changeset
   439
more specific type before it can be operated on.  For example, an
02bb8761fcce Initial load
duke
parents:
diff changeset
   440
<code>Account</code> object will be returned as a generic object and must
02bb8761fcce Initial load
duke
parents:
diff changeset
   441
be narrowed to an <code>Account</code> object so that <code>Account</code>
02bb8761fcce Initial load
duke
parents:
diff changeset
   442
methods may be called on it.
02bb8761fcce Initial load
duke
parents:
diff changeset
   443
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   444
The <code>narrow</code> method has two forms, one that takes an
02bb8761fcce Initial load
duke
parents:
diff changeset
   445
<code>org.omg.CORBA.Object</code> object and one that takes a
02bb8761fcce Initial load
duke
parents:
diff changeset
   446
<code>java.lang.Object</code> object. Whether the interface is abstract or
02bb8761fcce Initial load
duke
parents:
diff changeset
   447
not determines which <code>narrow</code> method its helper class will provide.
02bb8761fcce Initial load
duke
parents:
diff changeset
   448
The helper class for an interface
02bb8761fcce Initial load
duke
parents:
diff changeset
   449
that is not abstract will have a <code>narrow</code> method that takes a CORBA
02bb8761fcce Initial load
duke
parents:
diff changeset
   450
object, whereas the <code>narrow</code> method for an interface that is abstract 
02bb8761fcce Initial load
duke
parents:
diff changeset
   451
will
02bb8761fcce Initial load
duke
parents:
diff changeset
   452
take an object in the Java programming language.  The helper class for a
02bb8761fcce Initial load
duke
parents:
diff changeset
   453
non-abstract interface that has at least one abstract base interface will provide
02bb8761fcce Initial load
duke
parents:
diff changeset
   454
both versions of the <code>narrow</code> method.
02bb8761fcce Initial load
duke
parents:
diff changeset
   455
<P>The <A HREF="{@docRoot}/../technotes/guides/idl/jidlExample.html"><em>Hello World</em></A> 
02bb8761fcce Initial load
duke
parents:
diff changeset
   456
tutorial uses a <tt>narrow</tt> method that looks 
02bb8761fcce Initial load
duke
parents:
diff changeset
   457
like this:
02bb8761fcce Initial load
duke
parents:
diff changeset
   458
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   459
<PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   460
        // create and initialize the ORB
02bb8761fcce Initial load
duke
parents:
diff changeset
   461
	ORB orb = ORB.init(args, null);
02bb8761fcce Initial load
duke
parents:
diff changeset
   462
02bb8761fcce Initial load
duke
parents:
diff changeset
   463
        // get the root naming context
02bb8761fcce Initial load
duke
parents:
diff changeset
   464
        org.omg.CORBA.Object objRef = 
02bb8761fcce Initial load
duke
parents:
diff changeset
   465
	    orb.resolve_initial_references("NameService");
02bb8761fcce Initial load
duke
parents:
diff changeset
   466
        // Use NamingContextExt instead of NamingContext. This is 
02bb8761fcce Initial load
duke
parents:
diff changeset
   467
        // part of latest Inter-Operable naming Service.  
02bb8761fcce Initial load
duke
parents:
diff changeset
   468
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
02bb8761fcce Initial load
duke
parents:
diff changeset
   469
 
02bb8761fcce Initial load
duke
parents:
diff changeset
   470
        // resolve the Object Reference in Naming
02bb8761fcce Initial load
duke
parents:
diff changeset
   471
        String name = "Hello";
02bb8761fcce Initial load
duke
parents:
diff changeset
   472
        helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
02bb8761fcce Initial load
duke
parents:
diff changeset
   473
</PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   474
02bb8761fcce Initial load
duke
parents:
diff changeset
   475
<a name="basic"></a>
02bb8761fcce Initial load
duke
parents:
diff changeset
   476
<h3>Example of a Basic Helper Class</h3>
02bb8761fcce Initial load
duke
parents:
diff changeset
   477
A basic helper class, for purposes of this explanation, is one with
02bb8761fcce Initial load
duke
parents:
diff changeset
   478
the methods that are provided by every helper class, plus a <code>narrow</code> 
02bb8761fcce Initial load
duke
parents:
diff changeset
   479
method if the type defined in OMG IDL maps to an interface in the Java
02bb8761fcce Initial load
duke
parents:
diff changeset
   480
programming language.  Types that are not value types will have a basic
02bb8761fcce Initial load
duke
parents:
diff changeset
   481
helper class generated for them.
02bb8761fcce Initial load
duke
parents:
diff changeset
   482
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   483
For example, assuming that the interface <code>Account</code> is not a
02bb8761fcce Initial load
duke
parents:
diff changeset
   484
value type IDL type and is also not an abstract interface and has no
02bb8761fcce Initial load
duke
parents:
diff changeset
   485
abstract base interfaces, its <code>AccountHelper</code> class will look
02bb8761fcce Initial load
duke
parents:
diff changeset
   486
like this:
02bb8761fcce Initial load
duke
parents:
diff changeset
   487
<PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   488
abstract public class AccountHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   489
{
02bb8761fcce Initial load
duke
parents:
diff changeset
   490
  private static String  _id = "IDL:Account:1.0";
02bb8761fcce Initial load
duke
parents:
diff changeset
   491
02bb8761fcce Initial load
duke
parents:
diff changeset
   492
  // inserts an Account object into an Any object
02bb8761fcce Initial load
duke
parents:
diff changeset
   493
  public static void insert (org.omg.CORBA.Any a, Account that)
02bb8761fcce Initial load
duke
parents:
diff changeset
   494
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   495
    org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   496
    a.type (type ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   497
    write (out, that);
02bb8761fcce Initial load
duke
parents:
diff changeset
   498
    a.read_value (out.create_input_stream (), type ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   499
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   500
02bb8761fcce Initial load
duke
parents:
diff changeset
   501
  // extracts an Account object from an Any object
02bb8761fcce Initial load
duke
parents:
diff changeset
   502
  public static Account extract (org.omg.CORBA.Any a)
02bb8761fcce Initial load
duke
parents:
diff changeset
   503
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   504
    return read (a.create_input_stream ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   505
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   506
02bb8761fcce Initial load
duke
parents:
diff changeset
   507
  
02bb8761fcce Initial load
duke
parents:
diff changeset
   508
  private static org.omg.CORBA.TypeCode __typeCode = null;
02bb8761fcce Initial load
duke
parents:
diff changeset
   509
  // gets the typecode for this type
02bb8761fcce Initial load
duke
parents:
diff changeset
   510
  synchronized public static org.omg.CORBA.TypeCode type ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   511
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   512
    if (__typeCode == null)
02bb8761fcce Initial load
duke
parents:
diff changeset
   513
    {
02bb8761fcce Initial load
duke
parents:
diff changeset
   514
      __typeCode = org.omg.CORBA.ORB.init ().create_interface_tc (AccountHelper.id (), "Account");
02bb8761fcce Initial load
duke
parents:
diff changeset
   515
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   516
    return __typeCode;
02bb8761fcce Initial load
duke
parents:
diff changeset
   517
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   518
02bb8761fcce Initial load
duke
parents:
diff changeset
   519
  // gets the repository id for this type
02bb8761fcce Initial load
duke
parents:
diff changeset
   520
  public static String id ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   521
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   522
    return _id;
02bb8761fcce Initial load
duke
parents:
diff changeset
   523
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   524
02bb8761fcce Initial load
duke
parents:
diff changeset
   525
  // reads an Account object from an input stream
02bb8761fcce Initial load
duke
parents:
diff changeset
   526
  public static Account read (org.omg.CORBA.portable.InputStream istream)
02bb8761fcce Initial load
duke
parents:
diff changeset
   527
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   528
    return narrow (istream.read_Object (_AccountStub.class));
02bb8761fcce Initial load
duke
parents:
diff changeset
   529
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   530
02bb8761fcce Initial load
duke
parents:
diff changeset
   531
  // writes an Account object to an outputstream
02bb8761fcce Initial load
duke
parents:
diff changeset
   532
  public static void write (org.omg.CORBA.portable.OutputStream ostream, Account value)
02bb8761fcce Initial load
duke
parents:
diff changeset
   533
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   534
    ostream.write_Object ((org.omg.CORBA.Object) value);
02bb8761fcce Initial load
duke
parents:
diff changeset
   535
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   536
02bb8761fcce Initial load
duke
parents:
diff changeset
   537
  // converts (narrows) an Object to an Account object
02bb8761fcce Initial load
duke
parents:
diff changeset
   538
  public static Account narrow (org.omg.CORBA.Object obj)
02bb8761fcce Initial load
duke
parents:
diff changeset
   539
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   540
    if (obj == null)
02bb8761fcce Initial load
duke
parents:
diff changeset
   541
      return null;
02bb8761fcce Initial load
duke
parents:
diff changeset
   542
    else if (obj instanceof Account)
02bb8761fcce Initial load
duke
parents:
diff changeset
   543
      return (Account)obj;
02bb8761fcce Initial load
duke
parents:
diff changeset
   544
    else if (!obj._is_a (id ()))
02bb8761fcce Initial load
duke
parents:
diff changeset
   545
      throw new org.omg.CORBA.BAD_PARAM ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   546
    else
02bb8761fcce Initial load
duke
parents:
diff changeset
   547
    {
02bb8761fcce Initial load
duke
parents:
diff changeset
   548
      org.omg.CORBA.portable.Delegate delegate = ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   549
      _AccountStub stub = new _AccountStub ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   550
      stub._set_delegate(delegate);
02bb8761fcce Initial load
duke
parents:
diff changeset
   551
      return stub;
02bb8761fcce Initial load
duke
parents:
diff changeset
   552
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   553
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   554
02bb8761fcce Initial load
duke
parents:
diff changeset
   555
}
02bb8761fcce Initial load
duke
parents:
diff changeset
   556
</PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   557
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   558
02bb8761fcce Initial load
duke
parents:
diff changeset
   559
<h3>Value Type Helper Classes</h3>
02bb8761fcce Initial load
duke
parents:
diff changeset
   560
A helper class for a value type includes different renderings of
02bb8761fcce Initial load
duke
parents:
diff changeset
   561
the same methods generated for non-value type methods. The main difference
02bb8761fcce Initial load
duke
parents:
diff changeset
   562
 is that value types are types that can be
02bb8761fcce Initial load
duke
parents:
diff changeset
   563
passed by value as parameters or return values of a method, which means that
02bb8761fcce Initial load
duke
parents:
diff changeset
   564
they must be serializable.
02bb8761fcce Initial load
duke
parents:
diff changeset
   565
<P>Assuming that <code>Address</code> is a value type, the
02bb8761fcce Initial load
duke
parents:
diff changeset
   566
<code>AddressHelper</code> class will look like this:
02bb8761fcce Initial load
duke
parents:
diff changeset
   567
<pre>
02bb8761fcce Initial load
duke
parents:
diff changeset
   568
abstract public class AddressHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   569
{
02bb8761fcce Initial load
duke
parents:
diff changeset
   570
  private static String  _id = "IDL:Address:1.0";
02bb8761fcce Initial load
duke
parents:
diff changeset
   571
02bb8761fcce Initial load
duke
parents:
diff changeset
   572
  // same as for non-value type
02bb8761fcce Initial load
duke
parents:
diff changeset
   573
  public static void insert (org.omg.CORBA.Any a, Address that)
02bb8761fcce Initial load
duke
parents:
diff changeset
   574
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   575
    org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
02bb8761fcce Initial load
duke
parents:
diff changeset
   576
    a.type (type ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   577
    write (out, that);
02bb8761fcce Initial load
duke
parents:
diff changeset
   578
    a.read_value (out.create_input_stream (), type ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   579
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   580
02bb8761fcce Initial load
duke
parents:
diff changeset
   581
  // same as for non-value type
02bb8761fcce Initial load
duke
parents:
diff changeset
   582
  public static Address extract (org.omg.CORBA.Any a)
02bb8761fcce Initial load
duke
parents:
diff changeset
   583
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   584
    return read (a.create_input_stream ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   585
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   586
02bb8761fcce Initial load
duke
parents:
diff changeset
   587
  private static org.omg.CORBA.TypeCode __typeCode = null;
02bb8761fcce Initial load
duke
parents:
diff changeset
   588
  private static boolean __active = false;
02bb8761fcce Initial load
duke
parents:
diff changeset
   589
  
02bb8761fcce Initial load
duke
parents:
diff changeset
   590
  // getting the typecode for the type
02bb8761fcce Initial load
duke
parents:
diff changeset
   591
  synchronized public static org.omg.CORBA.TypeCode type ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   592
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   593
    if (__typeCode == null)
02bb8761fcce Initial load
duke
parents:
diff changeset
   594
    {
02bb8761fcce Initial load
duke
parents:
diff changeset
   595
      synchronized (org.omg.CORBA.TypeCode.class)
02bb8761fcce Initial load
duke
parents:
diff changeset
   596
      {
02bb8761fcce Initial load
duke
parents:
diff changeset
   597
        if (__typeCode == null)
02bb8761fcce Initial load
duke
parents:
diff changeset
   598
        {
02bb8761fcce Initial load
duke
parents:
diff changeset
   599
          if (__active)
02bb8761fcce Initial load
duke
parents:
diff changeset
   600
          {
02bb8761fcce Initial load
duke
parents:
diff changeset
   601
            return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
02bb8761fcce Initial load
duke
parents:
diff changeset
   602
          }
02bb8761fcce Initial load
duke
parents:
diff changeset
   603
          __active = true;
02bb8761fcce Initial load
duke
parents:
diff changeset
   604
          org.omg.CORBA.ValueMember[] _members0 = new org.omg.CORBA.ValueMember[0];
02bb8761fcce Initial load
duke
parents:
diff changeset
   605
          org.omg.CORBA.TypeCode _tcOf_members0 = null;
02bb8761fcce Initial load
duke
parents:
diff changeset
   606
          __typeCode = org.omg.CORBA.ORB.init ().create_value_tc (_id, "Address", org.omg.CORBA.VM_NONE.value, null, _members0);
02bb8761fcce Initial load
duke
parents:
diff changeset
   607
          __active = false;
02bb8761fcce Initial load
duke
parents:
diff changeset
   608
        }
02bb8761fcce Initial load
duke
parents:
diff changeset
   609
      }
02bb8761fcce Initial load
duke
parents:
diff changeset
   610
    }
02bb8761fcce Initial load
duke
parents:
diff changeset
   611
    return __typeCode;
02bb8761fcce Initial load
duke
parents:
diff changeset
   612
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   613
02bb8761fcce Initial load
duke
parents:
diff changeset
   614
  // same as for non-value type
02bb8761fcce Initial load
duke
parents:
diff changeset
   615
  public static String id ()
02bb8761fcce Initial load
duke
parents:
diff changeset
   616
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   617
    return _id;
02bb8761fcce Initial load
duke
parents:
diff changeset
   618
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   619
02bb8761fcce Initial load
duke
parents:
diff changeset
   620
  // reads a serializable instance of Address from the given input stream
02bb8761fcce Initial load
duke
parents:
diff changeset
   621
  public static Address read (org.omg.CORBA.portable.InputStream istream)
02bb8761fcce Initial load
duke
parents:
diff changeset
   622
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   623
    return (Address)((org.omg.CORBA_2_3.portable.InputStream) istream).read_value (id ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   624
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   625
02bb8761fcce Initial load
duke
parents:
diff changeset
   626
  // writes a serializable instance of Address to the given output stream
02bb8761fcce Initial load
duke
parents:
diff changeset
   627
  public static void write (org.omg.CORBA.portable.OutputStream ostream, Address value)
02bb8761fcce Initial load
duke
parents:
diff changeset
   628
  {
02bb8761fcce Initial load
duke
parents:
diff changeset
   629
    ((org.omg.CORBA_2_3.portable.OutputStream) ostream).write_value (value, id ());
02bb8761fcce Initial load
duke
parents:
diff changeset
   630
  }
02bb8761fcce Initial load
duke
parents:
diff changeset
   631
02bb8761fcce Initial load
duke
parents:
diff changeset
   632
02bb8761fcce Initial load
duke
parents:
diff changeset
   633
}
02bb8761fcce Initial load
duke
parents:
diff changeset
   634
</pre>
02bb8761fcce Initial load
duke
parents:
diff changeset
   635
02bb8761fcce Initial load
duke
parents:
diff changeset
   636
<P>The Helper classes defined in the package <TT>org.omg.CORBA</TT> are:
02bb8761fcce Initial load
duke
parents:
diff changeset
   637
<PRE><code>
02bb8761fcce Initial load
duke
parents:
diff changeset
   638
&nbsp;&nbsp;&nbsp;&nbsp; <TT>AnySeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   639
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>BooleanSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   640
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>CharSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   641
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>CompletionStatusHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   642
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>CurrentHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   643
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>DefinitionKindHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   644
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>DoubleSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   645
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>FieldNameHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   646
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>FloatSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   647
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>IdentifierHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   648
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>IDLTypeHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   649
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>LongLongSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   650
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>LongSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   651
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>NameValuePairHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   652
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ObjectHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   653
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>OctetSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   654
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ParameterModeHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   655
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyErrorCodeHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   656
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyErrorHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   657
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   658
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyListHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   659
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>PolicyTypeHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   660
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>RepositoryIdHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   661
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ServiceDetailHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   662
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ServiceInformationHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   663
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>SetOverrideTypeHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   664
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ShortSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   665
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>StringSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   666
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>StringValueHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   667
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>StructMemberHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   668
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ULongLongSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   669
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ULongSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   670
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>UnionMemberHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   671
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>UnknownUserExceptionHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   672
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>UShortSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   673
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ValueBaseHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   674
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>ValueMemberHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   675
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>VersionSpecHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   676
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>VisibilityHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   677
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WCharSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   678
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WrongTransactionHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   679
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WStringSeqHelper
02bb8761fcce Initial load
duke
parents:
diff changeset
   680
</TT>&nbsp;&nbsp;&nbsp;&nbsp; <TT>WStringValueHelper</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   681
02bb8761fcce Initial load
duke
parents:
diff changeset
   682
</code></PRE>
02bb8761fcce Initial load
duke
parents:
diff changeset
   683
<a name="adv"></a>
02bb8761fcce Initial load
duke
parents:
diff changeset
   684
<H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
   685
Other Classes</H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
   686
The other classes and interfaces in the <TT>CORBA</TT> package, which are
02bb8761fcce Initial load
duke
parents:
diff changeset
   687
used behind the scenes, can be put into four groups. Three of the groups
02bb8761fcce Initial load
duke
parents:
diff changeset
   688
are used with requests in some capacity, and the fourth group, concerning
02bb8761fcce Initial load
duke
parents:
diff changeset
   689
the Interface Repository, is a category by itself.
02bb8761fcce Initial load
duke
parents:
diff changeset
   690
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   691
Classes Created by an ORB</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   692
The first group contains classes that are created by an ORB and contain
02bb8761fcce Initial load
duke
parents:
diff changeset
   693
information used in request operations. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   694
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   695
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   696
<TT>TCKind</TT> -- indicates the kind (datatype) for a <TT>TypeCode</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   697
object
02bb8761fcce Initial load
duke
parents:
diff changeset
   698
02bb8761fcce Initial load
duke
parents:
diff changeset
   699
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   700
<TT>TypeCode</TT> -- indicates a datatype and possibly other information
02bb8761fcce Initial load
duke
parents:
diff changeset
   701
02bb8761fcce Initial load
duke
parents:
diff changeset
   702
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   703
<TT>Any</TT> -- contains a value and its typecode
02bb8761fcce Initial load
duke
parents:
diff changeset
   704
02bb8761fcce Initial load
duke
parents:
diff changeset
   705
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   706
<TT>NamedValue</TT> -- contains a name, an <TT>Any</TT> object, and an
02bb8761fcce Initial load
duke
parents:
diff changeset
   707
argument mode flag. <TT>NamedValue</TT> objects contain information about
02bb8761fcce Initial load
duke
parents:
diff changeset
   708
method arguments, method return values, or a context.
02bb8761fcce Initial load
duke
parents:
diff changeset
   709
02bb8761fcce Initial load
duke
parents:
diff changeset
   710
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   711
<TT>ContextList</TT> -- a list of strings that describe the contexts that
02bb8761fcce Initial load
duke
parents:
diff changeset
   712
need to be resolved and sent with an invocation
02bb8761fcce Initial load
duke
parents:
diff changeset
   713
02bb8761fcce Initial load
duke
parents:
diff changeset
   714
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   715
<TT>ExceptionList</TT> -- a list of <TT>TypeCode</TT>s for exceptions that
02bb8761fcce Initial load
duke
parents:
diff changeset
   716
may be thrown by a method
02bb8761fcce Initial load
duke
parents:
diff changeset
   717
02bb8761fcce Initial load
duke
parents:
diff changeset
   718
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   719
<TT>Environment</TT> -- a container for the exception thrown during a method
02bb8761fcce Initial load
duke
parents:
diff changeset
   720
invocation
02bb8761fcce Initial load
duke
parents:
diff changeset
   721
02bb8761fcce Initial load
duke
parents:
diff changeset
   722
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   723
<TT>Context</TT> -- a list of <TT>NamedValue</TT> objects used to pass
02bb8761fcce Initial load
duke
parents:
diff changeset
   724
auxiliary information from client to server
02bb8761fcce Initial load
duke
parents:
diff changeset
   725
02bb8761fcce Initial load
duke
parents:
diff changeset
   726
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   727
<TT>NVList</TT> -- a list of <TT>NamedValue</TT> objects, used to pass
02bb8761fcce Initial load
duke
parents:
diff changeset
   728
arguments or get results
02bb8761fcce Initial load
duke
parents:
diff changeset
   729
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   730
02bb8761fcce Initial load
duke
parents:
diff changeset
   731
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   732
Classes That Deal with Requests</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   733
The second group of classes deals with requests:
02bb8761fcce Initial load
duke
parents:
diff changeset
   734
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   735
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   736
<TT>Object</TT> -- the base class for all CORBA object references
02bb8761fcce Initial load
duke
parents:
diff changeset
   737
02bb8761fcce Initial load
duke
parents:
diff changeset
   738
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   739
<TT>Request</TT> -- the main class in the DII, which contains methods for
02bb8761fcce Initial load
duke
parents:
diff changeset
   740
adding arguments to the request, for accessing information about the method
02bb8761fcce Initial load
duke
parents:
diff changeset
   741
being invoked (the method name, its arguments, exceptions it throws, and
02bb8761fcce Initial load
duke
parents:
diff changeset
   742
so on), and for making invocations on the request
02bb8761fcce Initial load
duke
parents:
diff changeset
   743
02bb8761fcce Initial load
duke
parents:
diff changeset
   744
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   745
<TT>DynamicImplementation</TT> -- the base class for server implementations
02bb8761fcce Initial load
duke
parents:
diff changeset
   746
using the DSI. It has the method <TT>invoke</TT>, which is used by an 
02bb8761fcce Initial load
duke
parents:
diff changeset
   747
implementation
02bb8761fcce Initial load
duke
parents:
diff changeset
   748
of this class to determine the state of a <TT>ServerRequest</TT> object
02bb8761fcce Initial load
duke
parents:
diff changeset
   749
and to set its result or exception
02bb8761fcce Initial load
duke
parents:
diff changeset
   750
02bb8761fcce Initial load
duke
parents:
diff changeset
   751
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   752
<TT>ServerRequest</TT> -- captures the explicit state of a request for
02bb8761fcce Initial load
duke
parents:
diff changeset
   753
the Dynamic Skeleton Interface
02bb8761fcce Initial load
duke
parents:
diff changeset
   754
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   755
02bb8761fcce Initial load
duke
parents:
diff changeset
   756
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   757
Interfaces That Serve as Constants</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   758
The third group contains interfaces that serve as constants. The IDL-to-Java
02bb8761fcce Initial load
duke
parents:
diff changeset
   759
mapping mandates that IDL enums are mapped to a Java class with the enumerated
02bb8761fcce Initial load
duke
parents:
diff changeset
   760
values represented as public static final fields in that class (e.g. 
02bb8761fcce Initial load
duke
parents:
diff changeset
   761
DefinitionKind).
02bb8761fcce Initial load
duke
parents:
diff changeset
   762
On the other hand IDL constants defined outside of an IDL interface are
02bb8761fcce Initial load
duke
parents:
diff changeset
   763
mapped to a Java interface for each constant.
02bb8761fcce Initial load
duke
parents:
diff changeset
   764
02bb8761fcce Initial load
duke
parents:
diff changeset
   765
<P>This is why several interfaces in the <TT>org.omg.CORBA</TT> package
02bb8761fcce Initial load
duke
parents:
diff changeset
   766
consist of a single field, <TT>value</TT>, which is a <TT>short</TT>. This
02bb8761fcce Initial load
duke
parents:
diff changeset
   767
field is a constant used for such things as an error code or value modifier.
02bb8761fcce Initial load
duke
parents:
diff changeset
   768
For example, the <TT>value</TT> field of the interface <TT>BAD_POLICY</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   769
is one of the possible reasons for the exception <TT>PolicyError</TT> to
02bb8761fcce Initial load
duke
parents:
diff changeset
   770
be thrown. To specify this error code, you would use <TT>BAD_POLICY.value</TT>.
02bb8761fcce Initial load
duke
parents:
diff changeset
   771
02bb8761fcce Initial load
duke
parents:
diff changeset
   772
<P>The exception <TT>PolicyError</TT> uses the <TT>value</TT> field of
02bb8761fcce Initial load
duke
parents:
diff changeset
   773
the following interfaces as its possible error codes.
02bb8761fcce Initial load
duke
parents:
diff changeset
   774
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   775
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   776
<TT>BAD_POLICY</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   777
02bb8761fcce Initial load
duke
parents:
diff changeset
   778
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   779
<TT>BAD_POLICY_TYPE</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   780
02bb8761fcce Initial load
duke
parents:
diff changeset
   781
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   782
<TT>BAD_POLICY_VALUE</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   783
02bb8761fcce Initial load
duke
parents:
diff changeset
   784
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   785
<TT>UNSUPPORTED_POLICY</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   786
02bb8761fcce Initial load
duke
parents:
diff changeset
   787
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   788
<TT>UNSUPPORTED_POLICY_VALUE</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   789
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   790
The method <TT>TypeCode.type_modifier</TT> returns the <TT>value</TT> field
02bb8761fcce Initial load
duke
parents:
diff changeset
   791
of one of the following interfaces. The <TT>VM</TT> in the names of these
02bb8761fcce Initial load
duke
parents:
diff changeset
   792
interfaces stands for "value modifier."
02bb8761fcce Initial load
duke
parents:
diff changeset
   793
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   794
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   795
<TT>VM_NONE</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   796
02bb8761fcce Initial load
duke
parents:
diff changeset
   797
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   798
<TT>VM_ABSTRACT</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   799
02bb8761fcce Initial load
duke
parents:
diff changeset
   800
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   801
<TT>VM_CUSTOM</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   802
02bb8761fcce Initial load
duke
parents:
diff changeset
   803
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   804
<TT>VM_TRUNCATABLE</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   805
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   806
The following constants are returned by a <code>ValueMember</code> object's
02bb8761fcce Initial load
duke
parents:
diff changeset
   807
access method to denote the visibility of the <code>ValueMember</code> object.
02bb8761fcce Initial load
duke
parents:
diff changeset
   808
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   809
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   810
<TT>PRIVATE_MEMBER</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   811
02bb8761fcce Initial load
duke
parents:
diff changeset
   812
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   813
<TT>PUBLIC_MEMBER</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   814
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   815
These flags, used in <TT>NamedValue</TT> objects or as parameters to methods,
02bb8761fcce Initial load
duke
parents:
diff changeset
   816
are defined in the following interfaces:
02bb8761fcce Initial load
duke
parents:
diff changeset
   817
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   818
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   819
<TT>ARG_IN</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   820
02bb8761fcce Initial load
duke
parents:
diff changeset
   821
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   822
<TT>ARG_INOUT</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   823
02bb8761fcce Initial load
duke
parents:
diff changeset
   824
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   825
<TT>ARG_OUT</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   826
02bb8761fcce Initial load
duke
parents:
diff changeset
   827
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   828
<TT>CTX_RESTRICT_SCOPE</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   829
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   830
02bb8761fcce Initial load
duke
parents:
diff changeset
   831
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   832
Interface Repository Interfaces and Classes</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   833
A fourth group contains the Interface Repository interfaces and classes,
02bb8761fcce Initial load
duke
parents:
diff changeset
   834
which are generated by the <TT>idlj</TT> compiler from the OMG IDL
02bb8761fcce Initial load
duke
parents:
diff changeset
   835
interface <TT>ir.idl</TT>. The purpose of the Interface Repository is to
02bb8761fcce Initial load
duke
parents:
diff changeset
   836
identify the interfaces stored in it so that they can be accessed by an
02bb8761fcce Initial load
duke
parents:
diff changeset
   837
ORB. Each module, type, interface, attribute, operation, parameter, exception,
02bb8761fcce Initial load
duke
parents:
diff changeset
   838
constant, and so on is described completely by the Interface Repository
02bb8761fcce Initial load
duke
parents:
diff changeset
   839
API.
02bb8761fcce Initial load
duke
parents:
diff changeset
   840
02bb8761fcce Initial load
duke
parents:
diff changeset
   841
<P>An ORB does not require that there be an interface repository, and Java
02bb8761fcce Initial load
duke
parents:
diff changeset
   842
IDL does not include one. Even though this release does not include an
02bb8761fcce Initial load
duke
parents:
diff changeset
   843
implementation of an interface repository, the following IR classes and
02bb8761fcce Initial load
duke
parents:
diff changeset
   844
interfaces have been included for the purpose of creating typecodes (see
02bb8761fcce Initial load
duke
parents:
diff changeset
   845
create_value_tc, create_struct_tc, create_union_tc and create_exception_tc
02bb8761fcce Initial load
duke
parents:
diff changeset
   846
methods in interface org.omg.CORBA.ORB):
02bb8761fcce Initial load
duke
parents:
diff changeset
   847
<BR>&nbs
02bb8761fcce Initial load
duke
parents:
diff changeset
   848
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   849
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   850
IRObject
02bb8761fcce Initial load
duke
parents:
diff changeset
   851
02bb8761fcce Initial load
duke
parents:
diff changeset
   852
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   853
IDLType
02bb8761fcce Initial load
duke
parents:
diff changeset
   854
02bb8761fcce Initial load
duke
parents:
diff changeset
   855
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   856
DefinitionKind
02bb8761fcce Initial load
duke
parents:
diff changeset
   857
02bb8761fcce Initial load
duke
parents:
diff changeset
   858
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   859
StructMember
02bb8761fcce Initial load
duke
parents:
diff changeset
   860
02bb8761fcce Initial load
duke
parents:
diff changeset
   861
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   862
UnionMember
02bb8761fcce Initial load
duke
parents:
diff changeset
   863
02bb8761fcce Initial load
duke
parents:
diff changeset
   864
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   865
ValueMember
02bb8761fcce Initial load
duke
parents:
diff changeset
   866
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   867
<!-- End Page Data -->
02bb8761fcce Initial load
duke
parents:
diff changeset
   868
<HR>
02bb8761fcce Initial load
duke
parents:
diff changeset
   869
<H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
   870
Related Documentation</H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
   871
For overviews, guides, and a tutorial, please see:
02bb8761fcce Initial load
duke
parents:
diff changeset
   872
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   873
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   874
<A HREF="{@docRoot}/../technotes/guides/idl/index.html">Java IDL home page</A>
02bb8761fcce Initial load
duke
parents:
diff changeset
   875
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   876
02bb8761fcce Initial load
duke
parents:
diff changeset
   877
02bb8761fcce Initial load
duke
parents:
diff changeset
   878
02bb8761fcce Initial load
duke
parents:
diff changeset
   879
02bb8761fcce Initial load
duke
parents:
diff changeset
   880
<P><A NAME="unimpl"></A>
02bb8761fcce Initial load
duke
parents:
diff changeset
   881
<H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
   882
CORBA Features Not Implemented in Java IDL</H1>
02bb8761fcce Initial load
duke
parents:
diff changeset
   883
02bb8761fcce Initial load
duke
parents:
diff changeset
   884
<P>Some of the API included in <TT>org.omg</TT> subpackages is provided for
02bb8761fcce Initial load
duke
parents:
diff changeset
   885
conformance with the current OMG CORBA specification but is not implemented
02bb8761fcce Initial load
duke
parents:
diff changeset
   886
in Sun's release of the JDK<SUP><FONT SIZE=-2>TM</FONT></SUP>. This enables
02bb8761fcce Initial load
duke
parents:
diff changeset
   887
other JDK licensees to provide implementations of this API in standard
02bb8761fcce Initial load
duke
parents:
diff changeset
   888
extensions and products.
02bb8761fcce Initial load
duke
parents:
diff changeset
   889
02bb8761fcce Initial load
duke
parents:
diff changeset
   890
<P><A NAME="NO_IMPLEMENT"></A>
02bb8761fcce Initial load
duke
parents:
diff changeset
   891
<h2>Features That Throw NO_IMPLEMENT</h2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   892
02bb8761fcce Initial load
duke
parents:
diff changeset
   893
<P>Some of the API included in <TT>org.omg</TT> subpackages throw 
02bb8761fcce Initial load
duke
parents:
diff changeset
   894
<tt>NO_IMPLEMENT</tt> exceptions for various reasons.  Among these reasons
02bb8761fcce Initial load
duke
parents:
diff changeset
   895
are:
02bb8761fcce Initial load
duke
parents:
diff changeset
   896
<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   897
	<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   898
	<LI>In some cases, for example <tt>LocalObject</tt>, the complete
02bb8761fcce Initial load
duke
parents:
diff changeset
   899
	implementation according to the specification indicates that 
02bb8761fcce Initial load
duke
parents:
diff changeset
   900
	these API should throw <tt>NO_IMPLEMENT</tt>.
02bb8761fcce Initial load
duke
parents:
diff changeset
   901
	<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   902
	<LI>In most cases, for example methods in <tt>ORB.java</tt>, 
02bb8761fcce Initial load
duke
parents:
diff changeset
   903
	methods that throw  
02bb8761fcce Initial load
duke
parents:
diff changeset
   904
	<tt>NO_IMPLEMENT</tt> are actually implemented in subclasses
02bb8761fcce Initial load
duke
parents:
diff changeset
   905
	elsewhere in the ORB code.
02bb8761fcce Initial load
duke
parents:
diff changeset
   906
	<P>
02bb8761fcce Initial load
duke
parents:
diff changeset
   907
	<LI>In some cases, for example <tt>_get_interface_def()</tt> 
02bb8761fcce Initial load
duke
parents:
diff changeset
   908
	and <tt>_get_interface</tt>, API are really not yet implemented.
02bb8761fcce Initial load
duke
parents:
diff changeset
   909
	</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   910
02bb8761fcce Initial load
duke
parents:
diff changeset
   911
02bb8761fcce Initial load
duke
parents:
diff changeset
   912
02bb8761fcce Initial load
duke
parents:
diff changeset
   913
02bb8761fcce Initial load
duke
parents:
diff changeset
   914
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   915
General Summary of Features or API Not Implemented in This Release:</H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   916
02bb8761fcce Initial load
duke
parents:
diff changeset
   917
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   918
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   919
Interface Repository. An Interface Repository is not required for normal
02bb8761fcce Initial load
duke
parents:
diff changeset
   920
operation of Java IDL.
02bb8761fcce Initial load
duke
parents:
diff changeset
   921
02bb8761fcce Initial load
duke
parents:
diff changeset
   922
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   923
Java IDL does not support <TT>long double</TT>.  
02bb8761fcce Initial load
duke
parents:
diff changeset
   924
02bb8761fcce Initial load
duke
parents:
diff changeset
   925
02bb8761fcce Initial load
duke
parents:
diff changeset
   926
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   927
Policies (<TT><a href="Policy.html">org.omg.CORBA.Policy</a></TT>) and methods for getting them are not implemented.
02bb8761fcce Initial load
duke
parents:
diff changeset
   928
02bb8761fcce Initial load
duke
parents:
diff changeset
   929
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   930
Domain managers (<TT><a href="DomainManager.html">org.omg.CORBA.DomainManager</a></TT>) and methods for
02bb8761fcce Initial load
duke
parents:
diff changeset
   931
getting them are not implemented.
02bb8761fcce Initial load
duke
parents:
diff changeset
   932
02bb8761fcce Initial load
duke
parents:
diff changeset
   933
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   934
Service Information <TT><a href="ServiceInformation.html">org.omg.CORBA.ServiceInformation</a></TT> and ORB method <TT>public boolean get_service_information(short service_type, 
02bb8761fcce Initial load
duke
parents:
diff changeset
   935
ServiceInformationHolder
02bb8761fcce Initial load
duke
parents:
diff changeset
   936
service_info)</TT>  are not implemented.
02bb8761fcce Initial load
duke
parents:
diff changeset
   937
02bb8761fcce Initial load
duke
parents:
diff changeset
   938
<LI>ORB methods for supporting single-threading (<tt>perform_work</tt>, <tt>work_pending</tt>) are not implemented.
02bb8761fcce Initial load
duke
parents:
diff changeset
   939
02bb8761fcce Initial load
duke
parents:
diff changeset
   940
<LI>IDL contexts.
02bb8761fcce Initial load
duke
parents:
diff changeset
   941
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   942
02bb8761fcce Initial load
duke
parents:
diff changeset
   943
<HR>
02bb8761fcce Initial load
duke
parents:
diff changeset
   944
<H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   945
Specific List of Unimplemented Features in Package <TT>org.omg.CORBA</TT></H2>
02bb8761fcce Initial load
duke
parents:
diff changeset
   946
02bb8761fcce Initial load
duke
parents:
diff changeset
   947
02bb8761fcce Initial load
duke
parents:
diff changeset
   948
<H3>
02bb8761fcce Initial load
duke
parents:
diff changeset
   949
Unimplemented Methods in package <TT>org.omg.CORBA</TT>:</H3>
02bb8761fcce Initial load
duke
parents:
diff changeset
   950
02bb8761fcce Initial load
duke
parents:
diff changeset
   951
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   952
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   953
<TT>ORB</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   954
02bb8761fcce Initial load
duke
parents:
diff changeset
   955
<UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   956
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   957
<TT>public org.omg.CORBA.Policy create_policy(int type, org.omg.CORBA.Any
02bb8761fcce Initial load
duke
parents:
diff changeset
   958
val)</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   959
02bb8761fcce Initial load
duke
parents:
diff changeset
   960
02bb8761fcce Initial load
duke
parents:
diff changeset
   961
02bb8761fcce Initial load
duke
parents:
diff changeset
   962
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   963
<TT>public void perform_work()</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   964
02bb8761fcce Initial load
duke
parents:
diff changeset
   965
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   966
<TT>public boolean work_pending()</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   967
02bb8761fcce Initial load
duke
parents:
diff changeset
   968
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   969
<TT>public org.omg.CORBA.Current get_current()</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   970
02bb8761fcce Initial load
duke
parents:
diff changeset
   971
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   972
<TT>create_operation_list</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   973
02bb8761fcce Initial load
duke
parents:
diff changeset
   974
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   975
<TT>get_default_context</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   976
02bb8761fcce Initial load
duke
parents:
diff changeset
   977
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   978
<TT>get_service_information</TT>
02bb8761fcce Initial load
duke
parents:
diff changeset
   979
02bb8761fcce Initial load
duke
parents:
diff changeset
   980
<LI>
02bb8761fcce Initial load
duke
parents:
diff changeset
   981
obsolete <TT>DynAnys</TT> (deprecated in favor of <tt>DynamicAny</tt> package)
02bb8761fcce Initial load
duke
parents:
diff changeset
   982
02bb8761fcce Initial load
duke
parents:
diff changeset
   983
02bb8761fcce Initial load
duke
parents:
diff changeset
   984
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   985
02bb8761fcce Initial load
duke
parents:
diff changeset
   986
02bb8761fcce Initial load
duke
parents:
diff changeset
   987
02bb8761fcce Initial load
duke
parents:
diff changeset
   988
</UL>
02bb8761fcce Initial load
duke
parents:
diff changeset
   989
@since JDK1.2
02bb8761fcce Initial load
duke
parents:
diff changeset
   990
@serial exclude
02bb8761fcce Initial load
duke
parents:
diff changeset
   991
</BODY>
02bb8761fcce Initial load
duke
parents:
diff changeset
   992
</HTML>