src/share/classes/org/omg/CORBA/portable/Delegate.java

Tue, 21 Jan 2014 16:26:59 +0000

author
msheppar
date
Tue, 21 Jan 2014 16:26:59 +0000
changeset 615
8b0b643ffd42
parent 158
91006f157c46
child 748
6845b95cba6b
permissions
-rw-r--r--

8025005: Enhance CORBA initializations
Summary: restructure ORB.init() processing flow.
Reviewed-by: alanb, coffeys, skoivu

     1 /*
     2  * Copyright (c) 1997, 2002, 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 package org.omg.CORBA.portable;
    27 import org.omg.CORBA.Request;
    28 import org.omg.CORBA.NamedValue;
    29 import org.omg.CORBA.NVList;
    30 import org.omg.CORBA.Context;
    31 import org.omg.CORBA.ContextList;
    32 import org.omg.CORBA.ExceptionList;
    33 import org.omg.CORBA.TypeCode;
    34 import org.omg.CORBA.SystemException;
    36 /**
    37  * Specifies a portable API for ORB-vendor-specific
    38  * implementation of the org.omg.CORBA.Object methods.
    39  *
    40  * Each stub (proxy) contains a delegate
    41  * object, to which all org.omg.CORBA.Object methods are forwarded.
    42  * This allows a stub generated by one vendor's ORB to work with the delegate
    43  * from another vendor's ORB.
    44  *
    45  * @see org.omg.CORBA.Object
    46  * @author OMG
    47  */
    49 public abstract class Delegate {
    51     /**
    52      * Return an InterfaceDef for the object reference provided.
    53      * @param self The object reference whose InterfaceDef needs to be returned
    54      * @return the InterfaceDef
    55      */
    56     public abstract org.omg.CORBA.Object get_interface_def(
    57         org.omg.CORBA.Object self);
    59     /**
    60      * Returns a duplicate of the object reference provided.
    61      * @param obj The object reference whose duplicate needs to be returned
    62      * @return the duplicate object reference
    63      */
    64     public abstract org.omg.CORBA.Object duplicate(org.omg.CORBA.Object obj);
    66     /**
    67      * Releases resources associated with the object reference provided.
    68      * @param obj The object reference whose resources need to be released
    69      */
    70     public abstract void release(org.omg.CORBA.Object obj);
    72     /**
    73      * Checks if the object reference is an instance of the given interface.
    74      * @param obj The object reference to be checked.
    75      * @param repository_id The repository identifier of the interface
    76      * to check against.
    77      * @return true if the object reference supports the interface
    78      */
    79     public abstract boolean is_a(org.omg.CORBA.Object obj, String repository_id);
    81     /**
    82      * Determines whether the server object for the object reference has been
    83      * destroyed.
    84      * @param obj The object reference which delegated to this delegate.
    85      * @return true if the ORB knows authoritatively that the server object does
    86      * not exist, false otherwise
    87      */
    88     public abstract boolean non_existent(org.omg.CORBA.Object obj);
    90     /**
    91      * Determines if the two object references are equivalent.
    92      * @param obj The object reference which delegated to this delegate.
    93      * @param other The object reference to check equivalence against.
    94      * @return true if the objects are CORBA-equivalent.
    95      */
    96     public abstract boolean is_equivalent(org.omg.CORBA.Object obj,
    97                                           org.omg.CORBA.Object other);
    99     /**
   100      * Returns an ORB-internal identifier (hashcode) for this object reference.
   101      * @param obj The object reference which delegated to this delegate.
   102      * @param max specifies an upper bound on the hash value returned by
   103      *            the ORB.
   104      * @return ORB-internal hash identifier for object reference
   105      */
   106     public abstract int hash(org.omg.CORBA.Object obj, int max);
   108     /**
   109      * Creates a Request instance for use in the Dynamic Invocation Interface.
   110      * @param obj The object reference which delegated to this delegate.
   111      * @param operation The name of the operation to be invoked using the
   112      *                  Request instance.
   113      * @return the created Request instance
   114      */
   115     public abstract Request request(org.omg.CORBA.Object obj, String operation);
   117     /**
   118      * Creates a Request instance for use in the Dynamic Invocation Interface.
   119      *
   120      * @param obj The object reference which delegated to this delegate.
   121      * @param ctx                      The context to be used.
   122      * @param operation                The name of the operation to be
   123      *                                 invoked.
   124      * @param arg_list         The arguments to the operation in the
   125      *                                 form of an NVList.
   126      * @param result           A container for the result as a NamedValue.
   127      * @return                 The created Request object.
   128      *
   129      */
   130     public abstract Request create_request(org.omg.CORBA.Object obj,
   131                                            Context ctx,
   132                                            String operation,
   133                                            NVList arg_list,
   134                                            NamedValue result);
   136     /**
   137      * Creates a Request instance for use in the Dynamic Invocation Interface.
   138      *
   139      * @param obj The object reference which delegated to this delegate.
   140      * @param ctx                      The context to be used.
   141      * @param operation                The name of the operation to be
   142      *                                 invoked.
   143      * @param arg_list         The arguments to the operation in the
   144      *                                 form of an NVList.
   145      * @param result           A container for the result as a NamedValue.
   146      * @param exclist          A list of possible exceptions the
   147      *                                 operation can throw.
   148      * @param ctxlist          A list of context strings that need
   149      *                                 to be resolved and sent with the
   150      *                                 Request.
   151      * @return                 The created Request object.
   152      */
   153     public abstract Request create_request(org.omg.CORBA.Object obj,
   154                                            Context ctx,
   155                                            String operation,
   156                                            NVList arg_list,
   157                                            NamedValue result,
   158                                            ExceptionList exclist,
   159                                            ContextList ctxlist);
   161     /**
   162      * Provides a reference to the orb associated with its parameter.
   163      *
   164      * @param obj  the object reference which delegated to this delegate.
   165      * @return the associated orb.
   166      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   167      * package comments for unimplemented features</a>
   168      */
   169     public org.omg.CORBA.ORB orb(org.omg.CORBA.Object obj) {
   170         throw new org.omg.CORBA.NO_IMPLEMENT();
   171     }
   173     /**
   174      * Returns the <code>Policy</code> object of the specified type
   175      * which applies to this object.
   176      *
   177      * @param self The object reference which delegated to this delegate.
   178      * @param policy_type The type of policy to be obtained.
   179      * @return A <code>Policy</code> object of the type specified by
   180      *         the policy_type parameter.
   181      * @exception org.omg.CORBA.BAD_PARAM raised when the value of policy type
   182      * is not valid either because the specified type is not supported by this
   183      * ORB or because a policy object of that type is not associated with this
   184      * Object.
   185      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   186      * package comments for unimplemented features</a>
   187      */
   188     public org.omg.CORBA.Policy get_policy(org.omg.CORBA.Object self,
   189                                            int policy_type) {
   190         throw new org.omg.CORBA.NO_IMPLEMENT();
   191     }
   194     /**
   195      * Retrieves the <code>DomainManagers</code> of this object.
   196      * This allows administration services (and applications) to retrieve the
   197      * domain managers, and hence the security and other policies applicable
   198      * to individual objects that are members of the domain.
   199      *
   200      * @param self The object reference which delegated to this delegate.
   201      * @return The list of immediately enclosing domain managers of this object.
   202      *  At least one domain manager is always returned in the list since by
   203      * default each object is associated with at least one domain manager at
   204      * creation.
   205      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   206      * package comments for unimplemented features</a>
   207      */
   208     public org.omg.CORBA.DomainManager[] get_domain_managers(
   209                                                              org.omg.CORBA.Object
   210                                                              self) {
   211         throw new org.omg.CORBA.NO_IMPLEMENT();
   212     }
   215     /**
   216      * Associates the policies passed in
   217      * with a newly created object reference that it returns. Only certain
   218      * policies that pertain to the invocation of an operation at the client
   219      * end can be overridden using this operation. Attempts to override any
   220      * other policy will result in the raising of the CORBA::NO_PERMISSION
   221      * exception.
   222      *
   223      * @param self The object reference which delegated to this delegate.
   224      * @param policies A sequence of references to Policy objects.
   225      * @param set_add Indicates whether these policies should be added
   226      * onto any otheroverrides that already exist (ADD_OVERRIDE) in
   227      * the object reference, or they should be added to a clean
   228      * override free object reference (SET_OVERRIDE).
   229      * @return  A new object reference with the new policies associated with it.
   230      *
   231      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   232      * package comments for unimplemented features</a>
   233      */
   234     public org.omg.CORBA.Object set_policy_override(org.omg.CORBA.Object self,
   235                                                     org.omg.CORBA.Policy[] policies,
   236                                                     org.omg.CORBA.SetOverrideType set_add) {
   237         throw new org.omg.CORBA.NO_IMPLEMENT();
   238     }
   241     /**
   242      * Returns true if this object is implemented by a local servant.
   243      *
   244      * @param self The object reference which delegated to this delegate.
   245      * @return true only if the servant incarnating this object is located in
   246      * this Java VM. Return false if the servant is not local or the ORB
   247      * does not support local stubs for this particular servant. The default
   248      * behavior of is_local() is to return false.
   249      */
   250     public boolean is_local(org.omg.CORBA.Object self) {
   251         return false;
   252     }
   254     /**
   255      * Returns a Java reference to the servant which should be used for this
   256      * request. servant_preinvoke() is invoked by a local stub.
   257      * If a ServantObject object is returned, then its servant field
   258      * has been set to an object of the expected type (Note: the object may
   259      * or may not be the actual servant instance). The local stub may cast
   260      * the servant field to the expected type, and then invoke the operation
   261      * directly. The ServantRequest object is valid for only one invocation,
   262      * and cannot be used for more than one invocation.
   263      *
   264      * @param self The object reference which delegated to this delegate.
   265      *
   266      * @param operation a string containing the operation name.
   267      * The operation name corresponds to the operation name as it would be
   268      * encoded in a GIOP request.
   269      *
   270      * @param expectedType a Class object representing the expected type of the servant.
   271      * The expected type is the Class object associated with the operations
   272      * class of the stub's interface (e.g. A stub for an interface Foo,
   273      * would pass the Class object for the FooOperations interface).
   274      *
   275      * @return a ServantObject object.
   276      * The method may return a null value if it does not wish to support
   277      * this optimization (e.g. due to security, transactions, etc).
   278      * The method must return null if the servant is not of the expected type.
   279      */
   280     public ServantObject servant_preinvoke(org.omg.CORBA.Object self,
   281                                            String operation,
   282                                            Class expectedType) {
   283         return null;
   284     }
   286     /**
   287      * servant_postinvoke() is invoked by the local stub after the operation
   288      * has been invoked on the local servant.
   289      * This method must be called if servant_preinvoke() returned a non-null
   290      * value, even if an exception was thrown by the servant's method.
   291      * For this reason, the call to servant_postinvoke() should be placed
   292      * in a Java finally clause.
   293      *
   294      * @param self The object reference which delegated to this delegate.
   295      *
   296      * @param servant the instance of the ServantObject returned from
   297      *  the servant_preinvoke() method.
   298      */
   299     public void servant_postinvoke(org.omg.CORBA.Object self,
   300                                    ServantObject servant) {
   301     }
   303     /**
   304      * request is called by a stub to obtain an OutputStream for
   305      * marshaling arguments. The stub must supply the operation name,
   306      * and indicate if a response is expected (i.e is this a oneway
   307      * call).
   308      *
   309      * @param self The object reference which delegated to this delegate.
   310      * @param operation a string containing the operation name.
   311      * The operation name corresponds to the operation name as it would be
   312      * encoded in a GIOP request.
   313      * @param responseExpected false if the operation is a one way operation,
   314      * and true otherwise.
   315      * @return OutputStream the OutputStream into which request arguments
   316      * can be marshaled.
   317      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   318      * package comments for unimplemented features</a>
   319      */
   320     public OutputStream request(org.omg.CORBA.Object self,
   321                                 String operation,
   322                                 boolean responseExpected) {
   323         throw new org.omg.CORBA.NO_IMPLEMENT();
   324     }
   326     /**
   327      * invoke is called by a stub to invoke an operation. The stub provides an
   328      * OutputStream that was previously returned by a request()
   329      * call. invoke returns an InputStream which contains the
   330      * marshaled reply. If an exception occurs, invoke may throw an
   331      * ApplicationException object which contains an InputStream from
   332      * which the user exception state may be unmarshaled.
   333      *
   334      * @param self The object reference which delegated to this delegate.
   335      * @param output the OutputStream which contains marshaled arguments
   336      * @return input the InputStream from which reply parameters can be
   337      * unmarshaled.
   338      * @throws ApplicationException thrown when implementation throws
   339      * (upon invocation) an exception defined as part of its remote method
   340      * definition.
   341      * @throws RemarshalException thrown when remarshalling fails.
   342      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   343      * package comments for unimplemented features</a>
   344      */
   345     public InputStream invoke(org.omg.CORBA.Object self,
   346                               OutputStream output)
   347         throws ApplicationException, RemarshalException {
   348         throw new org.omg.CORBA.NO_IMPLEMENT();
   349     }
   351     /**
   352      * releaseReply may optionally be called by a stub to release a
   353      * reply stream back to the ORB when the unmarshaling has
   354      * completed. The stub passes the InputStream returned by
   355      * invoke() or ApplicationException.getInputStream(). A null
   356      * value may also be passed to releaseReply, in which case the
   357      * method is a noop.
   358      *
   359      * @param self The object reference which delegated to this delegate.
   360      * @param input the InputStream returned from invoke().
   361      * @see <a href="package-summary.html#unimpl"><code>portable</code>
   362      * package comments for unimplemented features</a>
   363      */
   364     public void releaseReply(org.omg.CORBA.Object self,
   365                              InputStream input) {
   366         throw new org.omg.CORBA.NO_IMPLEMENT();
   367     }
   369     /**
   370      * Provides the implementation to override the toString() method
   371      * of the delegating CORBA object.
   372      *
   373      * @param self the object reference that delegated to this delegate
   374      * @return a <code>String</code> object that represents the object
   375      *         reference that delegated to this <code>Delegate</code>
   376      *         object
   377      */
   379     public String toString(org.omg.CORBA.Object self) {
   380         return self.getClass().getName() + ":" + this.toString();
   381     }
   383     /**
   384      * Provides the implementation to override the hashCode() method
   385      * of the delegating CORBA object.
   386      *
   387      * @param self the object reference that delegated to this delegate
   388      * @return an <code>int</code> that represents the hashcode for the
   389      *         object reference that delegated to this <code>Delegate</code>
   390      *         object
   391      */
   392     public int hashCode(org.omg.CORBA.Object self) {
   393         return System.identityHashCode(self);
   394     }
   396     /**
   397      * Provides the implementation to override the equals(java.lang.Object obj)
   398      * method of the delegating CORBA object.
   399      *
   400      * @param self the object reference that delegated to this delegate
   401      * @param obj the <code>Object</code> with which to compare
   402      * @return <code>true</code> if <code>obj</code> equals <code>self</code>;
   403      *         <code>false</code> otherwise
   404      */
   405     public boolean equals(org.omg.CORBA.Object self, java.lang.Object obj) {
   406         return (self == obj);
   407     }
   408 }

mercurial