Package org.glassfish.rmic
Class RemoteClass
- java.lang.Object
-
- org.glassfish.rmic.RemoteClass
-
- All Implemented Interfaces:
Constants,RMIConstants,Constants,RuntimeConstants
public class RemoteClass extends java.lang.Object implements RMIConstants
A RemoteClass object encapsulates RMI-specific information about a remote implementation class, i.e. a class that implements one or more remote interfaces. WARNING: The contents of this source file are not part of any supported API. Code that depends on them does so at its own risk: they are subject to change or removal without notice.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classRemoteClass.MethodA RemoteClass.Method object encapsulates RMI-specific information about a particular remote method in the remote implementation class represented by the outer instance.
-
Field Summary
Fields Modifier and Type Field Description private ClassDefinitiondefExceptionprivate ClassDefinitiondefRemotecached definition for certain classes used in this environmentprivate ClassDefinitiondefRemoteExceptionprivate BatchEnvironmentenvrmic environment for this objectprivate ClassDefinitionimplClassDefthe remote implementation class this object corresponds toprivate longinterfaceHashstub/skeleton "interface hash" for this classprivate ClassDefinition[]remoteInterfacesremote interfaces implemented by this classprivate RemoteClass.Method[]remoteMethodsall the remote methods of this class-
Fields inherited from interface org.glassfish.rmic.Constants
idRemote, idRemoteException
-
Fields inherited from interface org.glassfish.rmic.tools.java.Constants
ABSTRACT, ACCM_CLASS, ACCM_FIELD, ACCM_INNERCLASS, ACCM_MEMBER, ACCM_METHOD, ADD, AND, ARRAY, ARRAYACCESS, ASGADD, ASGBITAND, ASGBITOR, ASGBITXOR, ASGDIV, ASGLSHIFT, ASGMUL, ASGREM, ASGRSHIFT, ASGSUB, ASGURSHIFT, ASSIGN, ATT_ALL, ATT_ALLCLASSES, ATT_CODE, BITAND, BITNOT, BITOR, BITXOR, BOOLEAN, BOOLEANVAL, BREAK, BYTE, BYTEVAL, CASE, CAST, CATCH, CHAR, CHARVAL, CLASS, COLON, COMMA, COMMENT, COND, CONST, CONTINUE, CONVERT, CS_BINARY, CS_CHECKED, CS_COMPILED, CS_NOTFOUND, CS_PARSED, CS_SOURCE, CS_UNDECIDED, CS_UNDEFINED, CT_BLOCK, CT_BRANCH_FALSE, CT_BRANCH_TRUE, CT_CASE, CT_FIKT_METHOD, CT_FIKT_RET, CT_FIRST_KIND, CT_LAST_KIND, CT_METHOD, CT_SWITH_WO_DEF, DEC, DECLARATION, DEFAULT, DIV, DO, DOUBLE, DOUBLEVAL, ELSE, EQ, ERROR, EXPR, EXPRESSION, EXTENDS, F_COVDATA, F_COVERAGE, F_DEBUG_LINES, F_DEBUG_SOURCE, F_DEBUG_VARS, F_DEPENDENCIES, F_DEPRECATION, F_DUMP, F_ERRORSREPORTED, F_OPT, F_OPT_INTERCLASS, F_PRINT_DEPENDENCIES, F_STRICTDEFAULT, F_VERBOSE, F_VERSION12, F_WARNINGS, FALSE, FIELD, FINAL, FINALLY, FLOAT, FLOATVAL, FOR, GE, GOTO, GT, idAppend, idClass, idClassInit, idClone, idCode, idConstantValue, idCoverageTable, idDeprecated, idDocumentation, IDENT, idExceptions, idFinallyReturnValue, idGetClass, idInit, idInnerClasses, idJavaIoSerializable, idJavaLang, idJavaLangClass, idJavaLangCloneable, idJavaLangError, idJavaLangException, idJavaLangObject, idJavaLangRuntimeException, idJavaLangString, idJavaLangStringBuffer, idJavaLangThrowable, idLength, idLineNumberTable, idLocalVariableTable, idNew, idNull, idSourceFile, idStar, idSuper, idSynthetic, idThis, idToString, idTYPE, idValueOf, IF, IMPLEMENTS, IMPORT, INC, INLINEMETHOD, INLINENEWINSTANCE, INLINERETURN, INSTANCEOF, INT, INTERFACE, INTVAL, LBRACE, LE, LENGTH, LONG, LONGVAL, LPAREN, LSHIFT, LSQBRACKET, LT, M_ABSTRACT, M_ANONYMOUS, M_DEPRECATED, M_FINAL, M_INLINEABLE, M_INTERFACE, M_LOCAL, M_NATIVE, M_PRIVATE, M_PROTECTED, M_PUBLIC, M_STATIC, M_STRICTFP, M_SYNCHRONIZED, M_SYNTHETIC, M_TRANSIENT, M_VOLATILE, MAXFILESIZE, MAXLINENUMBER, METHOD, MM_CLASS, MM_FIELD, MM_MEMBER, MM_METHOD, MUL, NATIVE, NE, NEG, NEW, NEWARRAY, NEWFROMNAME, NEWINSTANCE, NOT, NULL, opNames, opPrecedence, OR, PACKAGE, paraDeprecated, POS, POSTDEC, POSTINC, PREDEC, prefixAccess, prefixArray, prefixClass, prefixLoc, prefixThis, prefixVal, PREINC, PRIVATE, PROTECTED, PUBLIC, QUESTIONMARK, RBRACE, REM, RETURN, RPAREN, RSHIFT, RSQBRACKET, SEMICOLON, SHORT, SHORTVAL, SIG_INNERCLASS, SIGC_INNERCLASS, STAT, STATIC, STRICTFP, STRINGVAL, SUB, SUPER, SWITCH, SYNCHRONIZED, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_DOUBLE, TC_ERROR, TC_FLOAT, TC_INT, TC_LONG, TC_METHOD, TC_NULL, TC_SHORT, TC_VOID, THIS, THROW, THROWS, TM_ARRAY, TM_BOOLEAN, TM_BYTE, TM_CHAR, TM_CLASS, TM_DOUBLE, TM_ERROR, TM_FLOAT, TM_INT, TM_INT32, TM_INTEGER, TM_LONG, TM_METHOD, TM_NULL, TM_NUM32, TM_NUM64, TM_NUMBER, TM_REAL, TM_REFERENCE, TM_SHORT, TM_VOID, tracing, TRANSIENT, TRUE, TRY, TYPE, URSHIFT, VARDECLARATION, VOID, VOLATILE, WHEREOFFSETBITS, WHILE
-
Fields inherited from interface org.glassfish.rmic.RMIConstants
idMarshalException, idOperation, idRemoteCall, idRemoteObject, idRemoteRef, idRemoteStub, idSkeleton, idSkeletonMismatchException, idUnexpectedException, idUnmarshalException, INTERFACE_HASH_STUB_VERSION, STUB_SERIAL_VERSION_UID, STUB_VERSION_1_1, STUB_VERSION_1_2, STUB_VERSION_FAT
-
Fields inherited from interface org.glassfish.rmic.tools.java.RuntimeConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_INVOKEDYNAMIC, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_METHODHANDLE, CONSTANT_METHODTYPE, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_DEFAULT_MINOR_VERSION, JAVA_DEFAULT_VERSION, JAVA_MAGIC, JAVA_MAX_SUPPORTED_MINOR_VERSION, JAVA_MAX_SUPPORTED_VERSION, JAVA_MIN_SUPPORTED_VERSION, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_breakpoint, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dead, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokedynamic, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_label, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_try, opc_wide, opcLengths, opcNames, SIG_ARRAY, SIG_BOOLEAN, SIG_BYTE, SIG_CHAR, SIG_CLASS, SIG_DOUBLE, SIG_ENDCLASS, SIG_ENDMETHOD, SIG_FLOAT, SIG_INT, SIG_LONG, SIG_METHOD, SIG_PACKAGE, SIG_SHORT, SIG_VOID, SIGC_ARRAY, SIGC_BOOLEAN, SIGC_BYTE, SIGC_CHAR, SIGC_CLASS, SIGC_DOUBLE, SIGC_ENDCLASS, SIGC_ENDMETHOD, SIGC_FLOAT, SIGC_INT, SIGC_LONG, SIGC_METHOD, SIGC_PACKAGE, SIGC_SHORT, SIGC_VOID, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
-
-
Constructor Summary
Constructors Modifier Constructor Description privateRemoteClass(BatchEnvironment env, ClassDefinition implClassDef)Create a RemoteClass instance for the given class.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private booleancollectRemoteMethods(ClassDefinition interfaceDef, java.util.Hashtable<java.lang.String,RemoteClass.Method> table)Collect and validate all methods from given interface and all of its superinterfaces as remote methods.private longcomputeInterfaceHash()Compute the "interface hash" of the stub/skeleton pair for this remote implementation class.static RemoteClassforClass(BatchEnvironment env, ClassDefinition implClassDef)Create a RemoteClass object representing the remote meta-information of the given class.ClassDefinitiongetClassDefinition()Return the ClassDefinition for this class.longgetInterfaceHash()Return the "interface hash" used to match a stub/skeleton pair for this class in the JDK 1.1 version of the stub/skeleton protocol.IdentifiergetName()Return the name of the class represented by this object.ClassDefinition[]getRemoteInterfaces()Return an array of ClassDefinitions representing all of the remote interfaces implemented by this class.RemoteClass.Method[]getRemoteMethods()Return an array of RemoteClass.Method objects representing all of the remote methods implemented by this class, i.e.private booleaninitialize()Validate that the remote implementation class is properly formed and fill in the data structures required by the public interface.private voidsortClassDeclarations(ClassDeclaration[] decl)Sort array of class declarations alphabetically by their mangled fully-qualified class name.java.lang.StringtoString()Return string representation of this object, consisting of the string "remote class " followed by the class name.
-
-
-
Field Detail
-
env
private BatchEnvironment env
rmic environment for this object
-
implClassDef
private ClassDefinition implClassDef
the remote implementation class this object corresponds to
-
remoteInterfaces
private ClassDefinition[] remoteInterfaces
remote interfaces implemented by this class
-
remoteMethods
private RemoteClass.Method[] remoteMethods
all the remote methods of this class
-
interfaceHash
private long interfaceHash
stub/skeleton "interface hash" for this class
-
defRemote
private ClassDefinition defRemote
cached definition for certain classes used in this environment
-
defException
private ClassDefinition defException
-
defRemoteException
private ClassDefinition defRemoteException
-
-
Constructor Detail
-
RemoteClass
private RemoteClass(BatchEnvironment env, ClassDefinition implClassDef)
Create a RemoteClass instance for the given class. The resulting object is not yet initialized.
-
-
Method Detail
-
forClass
public static RemoteClass forClass(BatchEnvironment env, ClassDefinition implClassDef)
Create a RemoteClass object representing the remote meta-information of the given class. Returns true if successful. If the class is not a properly formed remote implementation class or if some other error occurs, the return value will be null, and errors will have been reported to the supplied BatchEnvironment.
-
getClassDefinition
public ClassDefinition getClassDefinition()
Return the ClassDefinition for this class.
-
getName
public Identifier getName()
Return the name of the class represented by this object.
-
getRemoteInterfaces
public ClassDefinition[] getRemoteInterfaces()
Return an array of ClassDefinitions representing all of the remote interfaces implemented by this class. A remote interface is any interface that extends Remote, directly or indirectly. The remote interfaces of a class are the interfaces directly listed in either the class's "implements" clause, or the "implements" clause of any of its superclasses, that are remote interfaces. The order of the array returned is arbitrary, and some elements may be superfluous (i.e., superinterfaces of other interfaces in the array).
-
getRemoteMethods
public RemoteClass.Method[] getRemoteMethods()
Return an array of RemoteClass.Method objects representing all of the remote methods implemented by this class, i.e. all of the methods in the class's remote interfaces. The methods in the array are ordered according to the comparison of the strings consisting of their method name followed by their type signature, so each method's index in the array corresponds to its "operation number" in the JDK 1.1 version of the stub/skeleton protocol.
-
getInterfaceHash
public long getInterfaceHash()
Return the "interface hash" used to match a stub/skeleton pair for this class in the JDK 1.1 version of the stub/skeleton protocol.
-
toString
public java.lang.String toString()
Return string representation of this object, consisting of the string "remote class " followed by the class name.- Overrides:
toStringin classjava.lang.Object
-
initialize
private boolean initialize()
Validate that the remote implementation class is properly formed and fill in the data structures required by the public interface.
-
collectRemoteMethods
private boolean collectRemoteMethods(ClassDefinition interfaceDef, java.util.Hashtable<java.lang.String,RemoteClass.Method> table)
Collect and validate all methods from given interface and all of its superinterfaces as remote methods. Remote methods are added to the supplied hashtable. Returns true if successful, or false if an error occurred.
-
computeInterfaceHash
private long computeInterfaceHash()
Compute the "interface hash" of the stub/skeleton pair for this remote implementation class. This is the 64-bit value used to enforce compatibility between a stub and a skeleton using the JDK 1.1 version of the stub/skeleton protocol. It is calculated using the first 64 bits of a SHA digest. The digest is from a stream consisting of the following data: (int) stub version number, always 1 for each remote method, in order of operation number: (UTF) method name (UTF) method type signature for each declared exception, in alphabetical name order: (UTF) name of exception class
-
sortClassDeclarations
private void sortClassDeclarations(ClassDeclaration[] decl)
Sort array of class declarations alphabetically by their mangled fully-qualified class name. This is used to feed a method's exceptions in a canonical order into the digest stream for the interface hash computation.
-
-