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 class
RemoteClass.Method
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
Fields Modifier and Type Field Description private ClassDefinition
defException
private ClassDefinition
defRemote
cached definition for certain classes used in this environmentprivate ClassDefinition
defRemoteException
private BatchEnvironment
env
rmic environment for this objectprivate ClassDefinition
implClassDef
the remote implementation class this object corresponds toprivate long
interfaceHash
stub/skeleton "interface hash" for this classprivate ClassDefinition[]
remoteInterfaces
remote interfaces implemented by this classprivate RemoteClass.Method[]
remoteMethods
all 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 private
RemoteClass(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 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.private long
computeInterfaceHash()
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.ClassDefinition
getClassDefinition()
Return the ClassDefinition for this class.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.Identifier
getName()
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 boolean
initialize()
Validate that the remote implementation class is properly formed and fill in the data structures required by the public interface.private void
sortClassDeclarations(ClassDeclaration[] decl)
Sort array of class declarations alphabetically by their mangled fully-qualified class name.java.lang.String
toString()
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:
toString
in 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.
-
-