- /*
 - * @(#)Object.java 1.48 00/02/02
 - *
 - * Copyright 1995-2000 Sun Microsystems, Inc. All Rights Reserved.
 - *
 - * This software is the proprietary information of Sun Microsystems, Inc.
 - * Use is subject to license terms.
 - *
 - */
 - 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.
 - * <p>
 - * @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);
 - }