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