LocalObject.java revision 608:7e06bf1dcb09
1/*
2 * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package org.omg.CORBA;
27import org.omg.CORBA.portable.*;
28
29
30/**
31 * <P>Used as a base class for implementation of a local IDL interface in the
32 * Java language mapping.  It is a class which implements all the operations
33 * in the <tt>org.omg.CORBA.Object</tt> interface.
34 * <P>Local interfaces are implemented by using CORBA::LocalObject
35 *  to provide implementations of <code>Object</code> pseudo
36 *  operations and any other ORB-specific support mechanisms that are
37 *  appropriate for such objects.  Object implementation techniques are
38 *  inherently language-mapping specific.  Therefore, the
39 *  <code>LocalObject</code> type is not defined in IDL, but is specified
40 *  in each language mapping.
41 *  <P>Methods that do not apply to local objects throw
42 *  an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with the message,
43 *  "This is a locally contrained object."  Attempting to use a
44 *  <TT>LocalObject</TT> to create a DII request results in NO_IMPLEMENT
45 *  system exception.  Attempting to marshal or stringify a
46 *  <TT>LocalObject</TT> results in a MARSHAL system exception.  Narrowing
47 *  and widening references to <TT>LocalObjects</TT> must work as for regular
48 *  object references.
49 *  <P><code>LocalObject</code> is to be used as the base class of locally
50 *  constrained objects, such as those in the PortableServer module.
51 *  The specification here is based on the CORBA Components
52 *  Volume I - orbos/99-07-01<P>
53 * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
54     *      comments for unimplemented features</a>
55 */
56
57public class LocalObject implements org.omg.CORBA.Object
58{
59    private static String reason = "This is a locally constrained object.";
60
61    /**
62     * Constructs a default <code>LocalObject</code> instance.
63     */
64    public LocalObject() {}
65
66    /**
67     * <P>Determines whether the two object references are equivalent,
68     * so far as the ORB can easily determine. Two object references are equivalent
69     * if they are identical. Two distinct object references which in fact refer to
70     * the same object are also equivalent. However, ORBs are not required
71     * to attempt determination of whether two distinct object references
72     * refer to the same object, since such determination could be impractically
73     * expensive.
74     * <P>Default implementation of the org.omg.CORBA.Object method. <P>
75     *
76     * @param that the object reference with which to check for equivalence
77     * @return <code>true</code> if this object reference is known to be
78     *         equivalent to the given object reference.
79     *         Note that <code>false</code> indicates only that the two
80     *         object references are distinct, not necessarily that
81     *         they reference distinct objects.
82     */
83    public boolean _is_equivalent(org.omg.CORBA.Object that) {
84        return equals(that) ;
85    }
86
87    /**
88     * Always returns <code>false</code>.
89     * This method is the default implementation of the
90     * <code>org.omg.CORBA.Object</code> method.<P>
91     *
92     * @return <code>false</code>
93     */
94    public boolean _non_existent() {
95        return false;
96    }
97
98    /**
99     * Returns a hash value that is consistent for the
100     * lifetime of the object, using the given number as the maximum.
101     * This method is the default implementation of the
102     * <code>org.omg.CORBA.Object</code> method.<P>
103     * @param maximum an <code>int</code> identifying maximum value of
104     *                  the hashcode
105     * @return this instance's hashcode
106     */
107    public int _hash(int maximum) {
108        return hashCode() ;
109    }
110
111    /**
112     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
113     * the message "This is a locally constrained object."  This method
114     * does not apply to local objects and is therefore not implemented.
115     * This method is the default implementation of the
116     * <code>org.omg.CORBA.Object</code> method.<P>
117     *
118     * @param repository_id a <code>String</code>
119     * @return NO_IMPLEMENT because this is a locally constrained object
120     *      and this method does not apply to local objects
121     * @exception NO_IMPLEMENT because this is a locally constrained object
122     *      and this method does not apply to local objects
123     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
124     *      comments for unimplemented features</a>
125     */
126    public boolean _is_a(String repository_id) {
127        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
128    }
129
130    /**
131     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
132     * the message "This is a locally constrained object."
133     * This method is the default implementation of the
134     * <code>org.omg.CORBA.Object</code> method.<P>
135     * @return a duplicate of this <code>LocalObject</code> instance.
136     * @exception NO_IMPLEMENT
137     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
138     *      comments for unimplemented features</a>
139     */
140    public org.omg.CORBA.Object _duplicate() {
141        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
142    }
143
144    /**
145     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
146     * the message "This is a locally constrained object."
147     * This method is the default implementation of the
148     * <code>org.omg.CORBA.Object</code> method.<P>
149     * @exception NO_IMPLEMENT
150     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
151     *      comments for unimplemented features</a>
152     */
153    public void _release() {
154        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
155    }
156
157    /**
158     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
159     * the message "This is a locally constrained object."
160     * This method is the default implementation of the
161     * <code>org.omg.CORBA.Object</code> method.<P>
162     *
163     * @param operation a <code>String</code> giving the name of an operation
164     *        to be performed by the request that is returned
165     * @return a <code>Request</code> object with the given operation
166     * @exception NO_IMPLEMENT
167     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
168     *      comments for unimplemented features</a>
169     */
170    public Request _request(String operation) {
171        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
172    }
173
174    /**
175     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
176     * the message "This is a locally constrained object."
177     * This method is the default implementation of the
178     * <code>org.omg.CORBA.Object</code> method.<P>
179     *
180     * @param ctx          a <code>Context</code> object containing
181     *                     a list of properties
182     * @param operation    the <code>String</code> representing the name of the
183     *                     method to be invoked
184     * @param arg_list     an <code>NVList</code> containing the actual arguments
185     *                     to the method being invoked
186     * @param result       a <code>NamedValue</code> object to serve as a
187     *                     container for the method's return value
188     * @return a new <code>Request</code> object initialized with the given
189     * arguments
190     * @exception NO_IMPLEMENT
191     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
192     *      comments for unimplemented features</a>
193     */
194    public Request _create_request(Context ctx,
195                                   String operation,
196                                   NVList arg_list,
197                                   NamedValue result) {
198        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
199    }
200
201    /**
202     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
203     * the message "This is a locally constrained object."
204     * This method is the default implementation of the
205     * <code>org.omg.CORBA.Object</code> method.<P>
206     *
207     * @param ctx          a <code>Context</code> object containing
208     *                     a list of properties
209     * @param operation    the name of the method to be invoked
210     * @param arg_list     an <code>NVList</code> containing the actual arguments
211     *                     to the method being invoked
212     * @param result       a <code>NamedValue</code> object to serve as a
213     *                     container for the method's return value
214     * @param exceptions   an <code>ExceptionList</code> object containing a
215     *                     list of possible exceptions the method can throw
216     * @param contexts     a <code>ContextList</code> object containing a list of
217     *                     context strings that need to be resolved and sent
218     *                     with the
219     *                     <code>Request</code> instance
220     * @return the new <code>Request</code> object initialized with the given
221     * arguments
222     * @exception NO_IMPLEMENT
223     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
224     *      comments for unimplemented features</a>
225     */
226    public Request _create_request(Context ctx,
227                                   String operation,
228                                   NVList arg_list,
229                                   NamedValue result,
230                                   ExceptionList exceptions,
231                                   ContextList contexts) {
232        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
233    }
234
235    /**
236     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
237     * the message "This is a locally constrained object." This method
238     * does not apply to local objects and is therefore not implemented.
239     * This method is the default implementation of the
240     * <code>org.omg.CORBA.Object</code> method.<P>
241     * @return NO_IMPLEMENT because this is a locally constrained object
242     *      and this method does not apply to local objects
243     * @exception NO_IMPLEMENT because this is a locally constrained object
244     *      and this method does not apply to local objects
245     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
246     *      comments for unimplemented features</a>
247     */
248    public org.omg.CORBA.Object _get_interface()
249    {
250        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
251    }
252
253    /**
254     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
255     * the message "This is a locally constrained object."
256     * This method is the default implementation of the
257     * <code>org.omg.CORBA.Object</code> method.<P>
258     * @exception NO_IMPLEMENT
259     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
260     *      comments for unimplemented features</a>
261     */
262    public org.omg.CORBA.Object _get_interface_def()
263    {
264        // First try to call the delegate implementation class's
265        // "Object get_interface_def(..)" method (will work for JDK1.2
266        // ORBs).
267        // Else call the delegate implementation class's
268        // "InterfaceDef get_interface(..)" method using reflection
269        // (will work for pre-JDK1.2 ORBs).
270
271        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
272    }
273
274    /**
275     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
276     * the message "This is a locally constrained object."
277     * This method is the default implementation of the
278     * <code>org.omg.CORBA.Object</code> method.<P>
279     * @return the ORB instance that created the Delegate contained in this
280     * <code>ObjectImpl</code>
281     * @exception NO_IMPLEMENT
282     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
283     *      comments for unimplemented features</a>
284     */
285    public org.omg.CORBA.ORB _orb() {
286        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
287    }
288
289    /**
290     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
291     * the message "This is a locally constrained object." This method
292     * does not apply to local objects and is therefore not implemented.
293     * This method is the default implementation of the
294     * <code>org.omg.CORBA.Object</code> method.<P>
295     * @param policy_type  an <code>int</code>
296     * @return NO_IMPLEMENT because this is a locally constrained object
297     *      and this method does not apply to local objects
298     * @exception NO_IMPLEMENT because this is a locally constrained object
299     *      and this method does not apply to local objects
300     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
301     *      comments for unimplemented features</a>
302     */
303    public org.omg.CORBA.Policy _get_policy(int policy_type) {
304        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
305    }
306
307
308    /**
309     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
310     * the message "This is a locally constrained object." This method
311     * does not apply to local objects and is therefore not implemented.
312     * This method is the default implementation of the
313     * <code>org.omg.CORBA.Object</code> method.<P>
314     * @exception NO_IMPLEMENT
315     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
316     *      comments for unimplemented features</a>
317     */
318    public org.omg.CORBA.DomainManager[] _get_domain_managers() {
319        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
320    }
321
322    /**
323     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
324     * the message "This is a locally constrained object." This method
325     * does not apply to local objects and is therefore not implemented.
326     * This method is the default implementation of the
327     * <code>org.omg.CORBA.Object</code> method.
328     *
329     * @param policies an array
330     * @param set_add a flag
331     * @return NO_IMPLEMENT because this is a locally constrained object
332     *      and this method does not apply to local objects
333     * @exception NO_IMPLEMENT because this is a locally constrained object
334     *      and this method does not apply to local objects
335     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
336     *      comments for unimplemented features</a>
337     */
338    public org.omg.CORBA.Object
339        _set_policy_override(org.omg.CORBA.Policy[] policies,
340                             org.omg.CORBA.SetOverrideType set_add) {
341        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
342    }
343
344
345    /**
346     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
347     * the message "This is a locally constrained object."
348     * This method is the default implementation of the
349     * <code>org.omg.CORBA.Object</code> method.<P>
350     * Returns <code>true</code> for this <code>LocalObject</code> instance.<P>
351     * @return <code>true</code> always
352     * @exception NO_IMPLEMENT
353     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
354     *      comments for unimplemented features</a>
355     */
356    public boolean _is_local() {
357        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
358    }
359
360    /**
361     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
362     * the message "This is a locally constrained object."
363     * This method is the default implementation of the
364     * <code>org.omg.CORBA.Object</code> method.<P>
365     * @param operation a <code>String</code> indicating which operation
366     *                  to preinvoke
367     * @param expectedType the class of the type of operation mentioned above
368     * @return NO_IMPLEMENT because this is a locally constrained object
369     *      and this method does not apply to local objects
370     * @exception NO_IMPLEMENT because this is a locally constrained object
371     *      and this method does not apply to local object
372     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
373     *      comments for unimplemented features</a>
374     */
375    public ServantObject _servant_preinvoke(String operation,
376                                            Class expectedType) {
377        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
378    }
379
380    /**
381     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
382     * the message "This is a locally constrained object."
383     * This method is the default implementation of the
384     * <code>org.omg.CORBA.Object</code> method.<P>
385     * @param servant the servant object on which to post-invoke
386     * @exception NO_IMPLEMENT
387     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
388     *      comments for unimplemented features</a>
389     */
390    public void _servant_postinvoke(ServantObject servant) {
391        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
392    }
393
394    /*
395     * The following methods were added by orbos/98-04-03: Java to IDL
396     * Mapping. These are used by RMI over IIOP.
397     */
398
399    /**
400     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
401     * the message "This is a locally constrained object."
402     * This method is the default implementation of the
403     * <code>org.omg.CORBA.Object</code> method.
404     * <P>Called by a stub to obtain an OutputStream for
405     * marshaling arguments. The stub must supply the operation name,
406     * and indicate if a response is expected (i.e is this a oneway
407     * call).<P>
408     * @param operation the name of the operation being requested
409     * @param responseExpected <code>true</code> if a response is expected,
410     *                         <code>false</code> if it is a one-way call
411     * @return NO_IMPLEMENT because this is a locally constrained object
412     *      and this method does not apply to local objects
413     * @exception NO_IMPLEMENT because this is a locally constrained object
414     *      and this method does not apply to local objects
415     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
416     *      comments for unimplemented features</a>
417     */
418    public OutputStream _request(String operation,
419                                 boolean responseExpected) {
420        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
421    }
422
423    /**
424     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
425     * the message "This is a locally constrained object."
426     * This method is the default implementation of the
427     * <code>org.omg.CORBA.Object</code> method.
428     * <P>Called to invoke an operation. The stub provides an
429     * <code>OutputStream</code> that was previously returned by a
430     * <code>_request()</code>
431     * call. <code>_invoke</code> returns an <code>InputStream</code> which
432     * contains the
433     * marshaled reply. If an exception occurs, <code>_invoke</code> may throw an
434     * <code>ApplicationException</code> object which contains an
435     * <code>InputStream</code> from
436     * which the user exception state may be unmarshaled.<P>
437     * @param output the <code>OutputStream</code> to invoke
438     * @return NO_IMPLEMENT because this is a locally constrained object
439     *      and this method does not apply to local objects
440     * @throws ApplicationException If an exception occurs,
441     * <code>_invoke</code> may throw an
442     * <code>ApplicationException</code> object which contains
443     * an <code>InputStream</code> from
444     * which the user exception state may be unmarshaled.
445     * @throws RemarshalException If an exception occurs,
446     * <code>_invoke</code> may throw an
447     * <code>ApplicationException</code> object which contains
448     * an <code>InputStream</code> from
449     * which the user exception state may be unmarshaled.
450     * @exception NO_IMPLEMENT because this is a locally constrained object
451     *      and this method does not apply to local objects
452     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
453     *      comments for unimplemented features</a>
454     */
455    public InputStream _invoke(OutputStream output)
456        throws ApplicationException, RemarshalException
457    {
458        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
459    }
460
461    /**
462     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
463     * the message "This is a locally constrained object."
464     * This method is the default implementation of the
465     * <code>org.omg.CORBA.Object</code> method.
466     * <P>May optionally be called by a stub to release a
467     * reply stream back to the ORB when the unmarshaling has
468     * completed. The stub passes the <code>InputStream</code> returned by
469     * <code>_invoke()</code> or
470     * <code>ApplicationException.getInputStream()</code>.
471     * A null
472     * value may also be passed to <code>_releaseReply</code>, in which case the
473     * method is a no-op.<P>
474     * @param input the reply stream back to the ORB or null
475     * @exception NO_IMPLEMENT
476     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
477     *      comments for unimplemented features</a>
478     */
479    public void _releaseReply(InputStream input) {
480        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
481    }
482
483    /**
484     * Throws an <code>org.omg.CORBA.NO_IMPLEMENT</code> exception with
485     * the message "This is a locally constrained object." This method
486     * does not apply to local objects and is therefore not implemented.
487     * This method is the default implementation of the
488     * <code>org.omg.CORBA.Object</code> method.<P>
489     * @return NO_IMPLEMENT because this is a locally constrained object
490     *      and this method does not apply to local objects
491     * @exception NO_IMPLEMENT because this is a locally constrained object
492     *      and this method does not apply to local objects
493     * @see <a href="package-summary.html#unimpl"><code>CORBA</code> package
494     *      comments for unimplemented features</a>
495     */
496
497    public boolean validate_connection() {
498        throw new org.omg.CORBA.NO_IMPLEMENT(reason);
499    }
500}
501