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 
  26 package org.omg.CORBA;
  27 import 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 
  58 public 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 }