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