Package org.glassfish.rmic
Class RemoteClass
java.lang.Object
org.glassfish.rmic.RemoteClass
- All Implemented Interfaces:
Constants
,RMIConstants
,Constants
,RuntimeConstants
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 ClassesModifier and TypeClassDescriptionclass
A RemoteClass.Method object encapsulates RMI-specific information about a particular remote method in the remote implementation class represented by the outer instance. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ClassDefinition
private ClassDefinition
cached definition for certain classes used in this environmentprivate ClassDefinition
private BatchEnvironment
rmic environment for this objectprivate ClassDefinition
the remote implementation class this object corresponds toprivate long
stub/skeleton "interface hash" for this classprivate ClassDefinition[]
remote interfaces implemented by this classprivate RemoteClass.Method[]
all the remote methods of this classFields 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
ConstructorsModifierConstructorDescriptionprivate
RemoteClass
(BatchEnvironment env, ClassDefinition implClassDef) Create a RemoteClass instance for the given class. -
Method Summary
Modifier and TypeMethodDescriptionprivate boolean
collectRemoteMethods
(ClassDefinition interfaceDef, Hashtable<String, RemoteClass.Method> table) Collect and validate all methods from given interface and all of its superinterfaces as remote methods.private long
Compute the "interface hash" of the stub/skeleton pair for this remote implementation class.static RemoteClass
forClass
(BatchEnvironment env, ClassDefinition implClassDef) Create a RemoteClass object representing the remote meta-information of the given class.Return the ClassDefinition for this class.long
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.getName()
Return the name of the class represented by this object.Return an array of ClassDefinitions representing all of the remote interfaces implemented by this class.Return an array of RemoteClass.Method objects representing all of the remote methods implemented by this class, i.e.private boolean
Validate that the remote implementation class is properly formed and fill in the data structures required by the public interface.private void
Sort array of class declarations alphabetically by their mangled fully-qualified class name.toString()
Return string representation of this object, consisting of the string "remote class " followed by the class name.
-
Field Details
-
env
rmic environment for this object -
implClassDef
the remote implementation class this object corresponds to -
remoteInterfaces
remote interfaces implemented by this class -
remoteMethods
all the remote methods of this class -
interfaceHash
private long interfaceHashstub/skeleton "interface hash" for this class -
defRemote
cached definition for certain classes used in this environment -
defException
-
defRemoteException
-
-
Constructor Details
-
RemoteClass
Create a RemoteClass instance for the given class. The resulting object is not yet initialized.
-
-
Method Details
-
forClass
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
Return the ClassDefinition for this class. -
getName
Return the name of the class represented by this object. -
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
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
Return string representation of this object, consisting of the string "remote class " followed by the class name. -
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, Hashtable<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
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.
-