| /* |
| * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. Oracle designates this |
| * particular file as subject to the "Classpath" exception as provided |
| * by Oracle in the LICENSE file that accompanied this code. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| package org.omg.CORBA; |
| |
| /** |
| * The definition for a CORBA object reference. |
| * <p> |
| * A CORBA object reference is a handle for a particular |
| * CORBA object implemented by a server. A CORBA object reference |
| * identifies the same CORBA object each time the reference is used to invoke |
| * a method on the object. |
| * A CORBA object may have multiple, distinct object references. |
| * <p> |
| * The <code>org.omg.CORBA.Object</code> interface is the root of |
| * the inheritance hierarchy for all CORBA object references in the Java |
| * programming language, analogous to <code>java.rmi.Remote</code> |
| * for RMI remote objects. |
| * <p> |
| * A CORBA object may be either local or remote. |
| * If it is a local object (that is, running in the same |
| * VM as the client), invocations may be directly serviced by |
| * the object instance, and the object reference could point to the actual |
| * instance of the object implementation class. |
| * If a CORBA object is a remote object (that is, running in a different |
| * VM from the client), the object reference points to a stub (proxy) which uses the |
| * ORB machinery to make a remote invocation on the server where the object |
| * implementation resides. |
| * <p> |
| * Default implementations of the methods in the interface |
| * <code>org.omg.CORBA.Object</code> |
| * are provided in the class <code>org.omg.CORBA.portable.ObjectImpl</code>, |
| * which is the base class for stubs and object implementations. |
| * |
| * @see org.omg.CORBA.portable.ObjectImpl |
| */ |
| |
| public interface Object { |
| |
| /** |
| * Checks whether this object is an instance of a class that |
| * implements the given interface. |
| * |
| * @param repositoryIdentifier the interface to check against |
| * @return <code>true</code> if this object reference is an instance |
| * of a class that implements the interface; |
| * <code>false</code> otherwise |
| */ |
| boolean _is_a(String repositoryIdentifier); |
| |
| |
| /** |
| * Determines whether the two object references are equivalent, |
| * so far as the ORB can easily determine. Two object references are equivalent |
| * if they are identical. Two distinct object references which in fact refer to |
| * the same object are also equivalent. However, ORBs are not required |
| * to attempt determination of whether two distinct object references |
| * refer to the same object, since such determination could be impractically |
| * expensive. |
| * @param other the other object reference with which to check for equivalence |
| * @return <code>true</code> if this object reference is known to be |
| * equivalent to the given object reference. |
| * Note that <code>false</code> indicates only that the two |
| * object references are distinct, not necessarily that |
| * they reference distinct objects. |
| */ |
| boolean _is_equivalent(org.omg.CORBA.Object other); |
| |
| |
| /** |
| * Determines whether the server object for this object reference has been |
| * destroyed. |
| * @return <code>true</code> if the ORB knows authoritatively that the |
| * server object does not exist; <code>false</code> otherwise |
| */ |
| boolean _non_existent(); |
| |
| |
| /** |
| * Returns an ORB-internal identifier for this object reference. |
| * This is a hash identifier, which does |
| * not change during the lifetime of the object reference, and so |
| * neither will any hash function of that identifier change. The value returned |
| * is not guaranteed to be unique; in other words, another object |
| * reference may have the same hash value. |
| * If two object references hash differently, |
| * then they are distinct object references; however, both may still refer |
| * to the same CORBA object. |
| * |
| * @param maximum the upper bound on the hash value returned by the ORB |
| * @return the ORB-internal hash identifier for this object reference |
| */ |
| int _hash(int maximum); |
| |
| |
| /** |
| * Returns a duplicate of this CORBA object reference. |
| * The server object implementation is not involved in creating |
| * the duplicate, and the implementation cannot distinguish whether |
| * the original object reference or a duplicate was used to make a request. |
| * <P> |
| * Note that this method is not very useful in the Java platform, |
| * since memory management is handled by the VM. |
| * It is included for compliance with the CORBA APIs. |
| * <P> |
| * The method <code>_duplicate</code> may return this object reference itself. |
| * |
| * @return a duplicate of this object reference or this object reference |
| * itself |
| */ |
| org.omg.CORBA.Object _duplicate(); |
| |
| |
| /** |
| * Signals that the caller is done using this object reference, so |
| * internal ORB resources associated with this object reference can be |
| * released. Note that the object implementation is not involved in |
| * this operation, and other references to the same object are not affected. |
| */ |
| void _release(); |
| |
| |
| /** |
| * Obtains an <code>InterfaceDef</code> for the object implementation |
| * referenced by this object reference. |
| * The <code>InterfaceDef</code> object |
| * may be used to introspect on the methods, attributes, and other |
| * type information for the object referred to by this object reference. |
| * |
| * @return the <code>InterfaceDef</code> object in the Interface Repository |
| * which provides type information about the object referred to by |
| * this object reference |
| */ |
| org.omg.CORBA.Object _get_interface_def(); |
| |
| |
| |
| /** |
| * Creates a <code>Request</code> instance for use in the |
| * Dynamic Invocation Interface. |
| * |
| * @param operation the name of the method to be invoked using the |
| * <code>Request</code> instance |
| * @return the newly-created <code>Request</code> instance |
| */ |
| Request _request(String operation); |
| |
| |
| |
| /** |
| * Creates a <code>Request</code> instance initialized with the |
| * given context, method name, list of arguments, and container |
| * for the method's return value. |
| * |
| * @param ctx a <code>Context</code> object containing |
| * a list of properties |
| * @param operation the name of the method to be invoked |
| * @param arg_list an <code>NVList</code> containing the actual arguments |
| * to the method being invoked |
| * @param result a <code>NamedValue</code> object to serve as a |
| * container for the method's return value |
| * @return the newly-created <code>Request</code> object |
| * |
| * @see Request |
| * @see NVList |
| * @see NamedValue |
| */ |
| |
| Request _create_request(Context ctx, |
| String operation, |
| NVList arg_list, |
| NamedValue result); |
| |
| /** |
| * Creates a <code>Request</code> instance initialized with the |
| * given context, method name, list of arguments, container |
| * for the method's return value, list of possible exceptions, |
| * and list of context strings needing to be resolved. |
| * |
| * @param ctx a <code>Context</code> object containing |
| * a list of properties |
| * @param operation the name of the method to be invoked |
| * @param arg_list an <code>NVList</code> containing the actual arguments |
| * to the method being invoked |
| * @param result a <code>NamedValue</code> object to serve as a |
| * container for the method's return value |
| * @param exclist an <code>ExceptionList</code> object containing a |
| * list of possible exceptions the method can throw |
| * @param ctxlist a <code>ContextList</code> object containing a list of |
| * context strings that need to be resolved and sent with the |
| * <code>Request</code> instance |
| * @return the newly-created <code>Request</code> object |
| * |
| * @see Request |
| * @see NVList |
| * @see NamedValue |
| * @see ExceptionList |
| * @see ContextList |
| */ |
| |
| Request _create_request(Context ctx, |
| String operation, |
| NVList arg_list, |
| NamedValue result, |
| ExceptionList exclist, |
| ContextList ctxlist); |
| |
| |
| |
| |
| /** |
| * Returns the <code>Policy</code> object of the specified type |
| * which applies to this object. |
| * |
| * @param policy_type the type of policy to be obtained |
| * @return A <code>Policy</code> object of the type specified by |
| * the policy_type parameter |
| * @exception org.omg.CORBA.BAD_PARAM when the value of policy type |
| * is not valid either because the specified type is not supported by this |
| * ORB or because a policy object of that type is not associated with this |
| * Object |
| */ |
| Policy _get_policy(int policy_type); |
| |
| |
| /** |
| * Retrieves the <code>DomainManagers</code> of this object. |
| * This allows administration services (and applications) to retrieve the |
| * domain managers, and hence the security and other policies applicable |
| * to individual objects that are members of the domain. |
| * |
| * @return the list of immediately enclosing domain managers of this object. |
| * At least one domain manager is always returned in the list since by |
| * default each object is associated with at least one domain manager at |
| * creation. |
| */ |
| DomainManager[] _get_domain_managers(); |
| |
| |
| /** |
| * Returns a new <code>Object</code> with the given policies |
| * either replacing any existing policies in this |
| * <code>Object</code> or with the given policies added |
| * to the existing ones, depending on the value of the |
| * given <code>SetOverrideType</code> object. |
| * |
| * @param policies an array of <code>Policy</code> objects containing |
| * the policies to be added or to be used as replacements |
| * @param set_add either <code>SetOverrideType.SET_OVERRIDE</code>, indicating |
| * that the given policies will replace any existing ones, or |
| * <code>SetOverrideType.ADD_OVERRIDE</code>, indicating that |
| * the given policies should be added to any existing ones |
| * @return a new <code>Object</code> with the given policies replacing |
| * or added to those in this <code>Object</code> |
| */ |
| org.omg.CORBA.Object _set_policy_override(Policy[] policies, |
| SetOverrideType set_add); |
| |
| |
| } |