Class Bridge
java.lang.Object
org.glassfish.pfl.basic.reflection.BridgeBase
org.glassfish.pfl.basic.reflection.Bridge
This class provides the methods for fundamental JVM operations
needed in the ORB that are not part of the public Java API. This includes:
- throwException, which can throw undeclared checked exceptions. This is needed to handle throwing arbitrary exceptions across a standardized OMG interface that (incorrectly) does not specify appropriate exceptions.
- putXXX/getXXX methods that allow unchecked access to fields of objects. This is used for setting uninitialzed non-static final fields (which is impossible with reflection) and for speed.
- objectFieldOffset to obtain the field offsets for use in the putXXX/getXXX methods
- newConstructorForSerialization to get the special constructor required for a Serializable class
- latestUserDefinedLoader to get the latest user defined class loader from the call stack as required by the RMI-IIOP specification (really from the JDK 1.1 days)
- RuntimePermission "reflectionFactoryAccess"
- BridgePermission "getBridge"
- ReflectPermission "suppressAccessChecks"
All of these permissions are required to obtain and correctly initialize the instance of Bridge. No security checks are performed on calls made to Bridge instance methods, so access to the Bridge instance must be protected.
This class is a singleton (per ClassLoader of course). Access to the instance is obtained through the Bridge.get() method.
-
Field Summary
Fields inherited from class BridgeBase
INVALID_FIELD_OFFSET -
Method Summary
Modifier and TypeMethodDescriptionstatic Bridgeget()Fetch the Bridge singleton.final ClassLoaderObtain the latest user defined ClassLoader from the call stack.booleanReturns true if the given class defines a static initializer method, false otherwise.final <T> Constructor<T> Return a constructor that can be used to create an instance of the class for externalization.<T> Constructor<T> newConstructorForSerialization(Class<T> aClass) Return a no-arg constructor for the specified class, based on the default constructor for its nearest non-serializable base class.final <T> Constructor<T> newConstructorForSerialization(Class<T> aClass, Constructor<?> cons) Return a no-arg constructor for the specified class which invokes the specified constructor.newOptionalDataExceptionForSerialization(boolean endOfData) Return a new OptionalDataException instance.readObjectForSerialization(Class<?> cl) Returns a method handle to allow invocation of the specified class's readObject method.readResolveForSerialization(Class<?> cl) Returns a method handle to allow invocation of the specified class's readResolve method.writeObjectForSerialization(Class<?> cl) Returns a method handle to allow invocation of the specified class's writeObject method.Returns a method handle to allow invocation of the specified class's writeReplace method.Methods inherited from class BridgeBase
defineClass, defineClass, ensureClassInitialized, getBoolean, getByte, getChar, getDouble, getFloat, getInt, getLong, getObject, getShort, objectFieldOffset, putBoolean, putByte, putChar, putDouble, putFloat, putInt, putLong, putObject, putShort, staticFieldOffset, throwException, toAccessibleField, toAccessibleMethod
-
Method Details
-
get
Fetch the Bridge singleton. This requires the following permissions:- RuntimePermission "reflectionFactoryAccess"
- BridgePermission "getBridge"
- ReflectPermission "suppressAccessChecks"
- Returns:
- The singleton instance of the Bridge class
- Throws:
SecurityException- if the caller does not have the required permissions and the caller has a non-null security manager.
-
getLatestUserDefinedLoader
Description copied from class:BridgeBaseObtain the latest user defined ClassLoader from the call stack. This is required by the RMI-IIOP specification.- Specified by:
getLatestUserDefinedLoaderin classBridgeBase
-
newConstructorForExternalization
Description copied from class:BridgeBaseReturn a constructor that can be used to create an instance of the class for externalization.- Specified by:
newConstructorForExternalizationin classBridgeBase- Parameters:
cl- the class
-
newConstructorForSerialization
public final <T> Constructor<T> newConstructorForSerialization(Class<T> aClass, Constructor<?> cons) Description copied from class:BridgeBaseReturn a no-arg constructor for the specified class which invokes the specified constructor.- Specified by:
newConstructorForSerializationin classBridgeBase- Parameters:
aClass- the class for which a constructor should be returned.cons- the default constructor on which to model the new constructor.
-
newConstructorForSerialization
Description copied from class:BridgeBaseReturn a no-arg constructor for the specified class, based on the default constructor for its nearest non-serializable base class.- Specified by:
newConstructorForSerializationin classBridgeBase- Parameters:
aClass- the class for which a constructor should be returned.
-
hasStaticInitializerForSerialization
Description copied from class:BridgeBaseReturns true if the given class defines a static initializer method, false otherwise.- Specified by:
hasStaticInitializerForSerializationin classBridgeBase
-
writeObjectForSerialization
Description copied from class:BridgeBaseReturns a method handle to allow invocation of the specified class's writeObject method.- Specified by:
writeObjectForSerializationin classBridgeBase- Parameters:
cl- the class containing the method
-
readObjectForSerialization
Description copied from class:BridgeBaseReturns a method handle to allow invocation of the specified class's readObject method.- Specified by:
readObjectForSerializationin classBridgeBase- Parameters:
cl- the class containing the method
-
readResolveForSerialization
Description copied from class:BridgeBaseReturns a method handle to allow invocation of the specified class's readResolve method.- Specified by:
readResolveForSerializationin classBridgeBase- Parameters:
cl- the class containing the method
-
writeReplaceForSerialization
Description copied from class:BridgeBaseReturns a method handle to allow invocation of the specified class's writeReplace method.- Specified by:
writeReplaceForSerializationin classBridgeBase- Parameters:
cl- the class containing the method
-
newOptionalDataExceptionForSerialization
Description copied from class:BridgeBaseReturn a new OptionalDataException instance.- Specified by:
newOptionalDataExceptionForSerializationin classBridgeBase- Returns:
- a new OptionalDataException instance
-