Package org.codehaus.groovy.vmplugin.v8
Class Java8
java.lang.Object
org.codehaus.groovy.vmplugin.v8.Java8
- All Implemented Interfaces:
VMPlugin
- Direct Known Subclasses:
Java9
Java 8 based functions.
- Since:
- 2.5.0
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
checkAccessible
(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess) check whether the member can be accessed or notboolean
checkCanSetAccessible
(AccessibleObject accessibleObject, Class<?> callerClass) The following scenarios can not set accessible, i.e.void
protected void
configureAnnotation
(AnnotationNode node, Annotation annotation) void
configureAnnotationNodeFromDefinition
(AnnotationNode definition, AnnotationNode root) void
configureClassNode
(CompileUnit compileUnit, ClassNode classNode) static GenericsType
configureTypeVariableDefinition
(ClassNode base, ClassNode[] cBounds) static ClassNode
<T> T
doPrivileged
(PrivilegedAction<T> action) Performs the specified PrivilegedAction with privileges enabled on platforms which support that capability, otherwise the action is performed ignoring privileges.<T> T
doPrivileged
(PrivilegedExceptionAction<T> action) Performs the specified PrivilegedExceptionAction with privileges enabled on platforms which support that capability, otherwise the action is performed ignoring privileges.protected void
fillParameterNames
(String[] names, Member member) protected int
getElementCode
(ElementType value) getInvokeSpecialHandle
(Method method, Object receiver) Returns a handle with bound receiver to invokeSpecial the given method.protected MethodHandles.Lookup
Class<?>[]
Class<?>[]
int
Gives the version the plugin is made forvoid
invokeHandle
(Object handle, Object[] args) Invokes a handle produced by #getInvokeSpecialdHandleprotected ClassNode
makeClassNode
(CompileUnit cu, Type t, Class<?> c) protected void
makeRecordComponents
(CompileUnit cu, ClassNode classNode, Class<?> clazz) protected MethodHandles.Lookup
static MethodHandles.Lookup
void
transformMetaMethod
(MetaClass metaClass, MetaMethod metaMethod) transform meta method.transformMetaMethod
(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller) transform meta methodboolean
Set theaccessible
flag for this reflected object totrue
if possible.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.codehaus.groovy.vmplugin.VMPlugin
getDefaultImportClasses
-
Constructor Details
-
Java8
public Java8()
-
-
Method Details
-
configureTypeVariableDefinition
-
configureTypeVariableReference
-
getPluginDefaultGroovyMethods
- Specified by:
getPluginDefaultGroovyMethods
in interfaceVMPlugin
-
getPluginStaticGroovyMethods
- Specified by:
getPluginStaticGroovyMethods
in interfaceVMPlugin
-
getVersion
public int getVersion()Description copied from interface:VMPlugin
Gives the version the plugin is made for- Specified by:
getVersion
in interfaceVMPlugin
- Returns:
- 7 for jdk7, 8 for jdk8, 9 for jdk9 or higher
-
getElementCode
-
setAdditionalClassInformation
- Specified by:
setAdditionalClassInformation
in interfaceVMPlugin
-
configureAnnotationNodeFromDefinition
- Specified by:
configureAnnotationNodeFromDefinition
in interfaceVMPlugin
-
configureAnnotation
- Specified by:
configureAnnotation
in interfaceVMPlugin
-
configureAnnotation
-
configureClassNode
- Specified by:
configureClassNode
in interfaceVMPlugin
-
makeRecordComponents
-
makeClassNode
-
fillParameterNames
-
checkCanSetAccessible
The following scenarios can not set accessible, i.e. the return value is false 1) SecurityException occurred 2) the accessible object is a Constructor object for the Class class- Specified by:
checkCanSetAccessible
in interfaceVMPlugin
- Parameters:
accessibleObject
- the accessible object to checkcallerClass
- the callerClass to invokesetAccessible
- Returns:
- the check result
-
checkAccessible
public boolean checkAccessible(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess) Description copied from interface:VMPlugin
check whether the member can be accessed or not- Specified by:
checkAccessible
in interfaceVMPlugin
- Parameters:
callerClass
- callerClass the callerClass to invokesetAccessible
declaringClass
- the type of member ownermemberModifiers
- modifiers of memberallowIllegalAccess
- whether to allow illegal access- Returns:
- the result of checking
-
trySetAccessible
Description copied from interface:VMPlugin
Set theaccessible
flag for this reflected object totrue
if possible.- Specified by:
trySetAccessible
in interfaceVMPlugin
- Parameters:
ao
- the accessible object- Returns:
true
if theaccessible
flag is set totrue
;false
if access cannot be enabled.
-
doPrivileged
Description copied from interface:VMPlugin
Performs the specified PrivilegedAction with privileges enabled on platforms which support that capability, otherwise the action is performed ignoring privileges.- Specified by:
doPrivileged
in interfaceVMPlugin
- Type Parameters:
T
- the type of the value returned by the PrivilegedAction's run method- Parameters:
action
- the action to be performed- Returns:
- the value returned by the action's run method
-
doPrivileged
Description copied from interface:VMPlugin
Performs the specified PrivilegedExceptionAction with privileges enabled on platforms which support that capability, otherwise the action is performed ignoring privileges.- Specified by:
doPrivileged
in interfaceVMPlugin
- Type Parameters:
T
- the type of the value returned by the PrivilegedAction's run method- Parameters:
action
- the action to be performed- Returns:
- the value returned by the action's run method
- Throws:
PrivilegedActionException
-
transformMetaMethod
Description copied from interface:VMPlugin
transform meta method- Specified by:
transformMetaMethod
in interfaceVMPlugin
- Parameters:
metaClass
- meta classmetaMethod
- the original meta methodcaller
- caller class, whose method sets accessible for methods- Returns:
- the transformed meta method
-
transformMetaMethod
Description copied from interface:VMPlugin
transform meta method.- Specified by:
transformMetaMethod
in interfaceVMPlugin
- Parameters:
metaClass
- meta classmetaMethod
- the original meta method- Returns:
- the transformed meta method
-
invalidateCallSites
public void invalidateCallSites()- Specified by:
invalidateCallSites
in interfaceVMPlugin
-
getLookup
-
getInvokeSpecialHandle
Description copied from interface:VMPlugin
Returns a handle with bound receiver to invokeSpecial the given method. This method will require at least Java 7, but since the source has to compile on older Java versions as well it is not marked to return a MethodHandle and uses Object instead- Specified by:
getInvokeSpecialHandle
in interfaceVMPlugin
- Returns:
- null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call
-
invokeHandle
Description copied from interface:VMPlugin
Invokes a handle produced by #getInvokeSpecialdHandle- Specified by:
invokeHandle
in interfaceVMPlugin
- Parameters:
handle
- the handleargs
- arguments for the method call, can be empty but not null- Returns:
- the result of the method call
- Throws:
Throwable
-
newLookup
-
of
-