Source for java.rmi.server.RemoteRef

   1: /* RemoteRef.java --
   2:    Copyright (c) 1996, 1997, 1998, 1999, 2004, 2006  
   3:    Free Software Foundation, Inc.
   4: 
   5: This file is part of GNU Classpath.
   6: 
   7: GNU Classpath is free software; you can redistribute it and/or modify
   8: it under the terms of the GNU General Public License as published by
   9: the Free Software Foundation; either version 2, or (at your option)
  10: any later version.
  11:  
  12: GNU Classpath is distributed in the hope that it will be useful, but
  13: WITHOUT ANY WARRANTY; without even the implied warranty of
  14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15: General Public License for more details.
  16: 
  17: You should have received a copy of the GNU General Public License
  18: along with GNU Classpath; see the file COPYING.  If not, write to the
  19: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  20: 02110-1301 USA.
  21: 
  22: Linking this library statically or dynamically with other modules is
  23: making a combined work based on this library.  Thus, the terms and
  24: conditions of the GNU General Public License cover the whole
  25: combination.
  26: 
  27: As a special exception, the copyright holders of this library give you
  28: permission to link this library with independent modules to produce an
  29: executable, regardless of the license terms of these independent
  30: modules, and to copy and distribute the resulting executable under
  31: terms of your choice, provided that you also meet, for each linked
  32: independent module, the terms and conditions of the license of that
  33: module.  An independent module is a module which is not derived from
  34: or based on this library.  If you modify this library, you may extend
  35: this exception to your version of the library, but you are not
  36: obligated to do so.  If you do not wish to do so, delete this
  37: exception statement from your version. */
  38: 
  39: 
  40: package java.rmi.server;
  41: 
  42: import java.io.Externalizable;
  43: import java.io.ObjectOutput;
  44: import java.lang.reflect.Method;
  45: import java.rmi.Remote;
  46: import java.rmi.RemoteException;
  47: 
  48: /**
  49:  * Represents a handler to the remote object. Each instance of the
  50:  * {@link RemoteStub} contains such handler and uses it to invoke remote
  51:  * methods via {@link #invoke(Remote, Method, Object[], long)}.
  52:  */
  53: public interface RemoteRef extends Externalizable
  54: {
  55:   /**
  56:    *  Indicates compatibility with JDK 1.1.*
  57:    */
  58:   long serialVersionUID = 3632638527362204081L;
  59:   
  60:   /**
  61:    * For binary compatibility with the JDK, the string "sun.rmi.server".
  62:    * Not actually used for anything.
  63:    */
  64:   String packagePrefix = "sun.rmi.server";
  65: 
  66:   /**
  67:    * @deprecated use {@link #invoke(Remote, Method, Object[], long)} instead.
  68:    */
  69:   void invoke (RemoteCall call) throws Exception;
  70:   
  71:   /**
  72:    * Invoke a method. This method either returns the result of remote invocation
  73:    * or throws RemoteException if the remote call failed. Other exceptions may
  74:    * be thrown if some problem has occured in the application level.
  75:    * 
  76:    * @param obj the object, containing the remote reference (for instance,
  77:    *          remote stub, generated by rmic).
  78:    * @param method the method to invoke
  79:    * @param params the method parameters
  80:    * @param methodHash a persistent hash code that can be used to represent a
  81:    *          method
  82:    * @return the result of the remote invocation
  83:    * @throws RemoteException if the remote call has failed
  84:    * @throws Exception if one is raised at the application level
  85:    */
  86:   Object invoke (Remote obj, Method method, Object[] params, long methodHash)
  87:     throws Exception;
  88:   
  89:   /**
  90:    * @deprecated use {@link #invoke(Remote, Method, Object[], long)} instead.
  91:    */
  92:   RemoteCall newCall (RemoteObject obj, Operation[] op, int opnum, long hash)
  93:     throws RemoteException;
  94: 
  95:   /**
  96:    * @deprecated use {@link #invoke(Remote, Method, Object[], long)} instead.
  97:    */
  98:   void done (RemoteCall call) throws RemoteException;
  99:   
 100:   /**
 101:    * Compare two remote objects for equality. The references are equal if
 102:    * they point to the same remote object.
 103:    * 
 104:    * @param ref the reference to compare.
 105:    * 
 106:    * @return true if this and passed references both point to the same remote
 107:    * object, false otherwise.
 108:    */
 109:   boolean remoteEquals (RemoteRef ref);
 110:   
 111:   /**
 112:    * Get the hashcode for a remote object. Two remote object stubs, referring
 113:    * to the same remote object, have the same hash code.
 114:    * 
 115:    * @return the hashcode of the remote object
 116:    */
 117:   int remoteHashCode();
 118:   
 119:   
 120:   /**
 121:    * Returns the class name of the reference type that must be written to the
 122:    * given stream. When writing, this returned name is passed first, and
 123:    * the reference.writeExternal(out) writes the reference specific data.
 124:    * 
 125:    * @param out the stream, where the data must be written 
 126:    * 
 127:    * @return the class name. 
 128:    */
 129:   String getRefClass (ObjectOutput out);
 130:   
 131:   /**
 132:    * Get the string representation of this remote reference.
 133:    * 
 134:    * @return the string representation.
 135:    */
 136:   String remoteToString();
 137: }