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
public class Java8 extends java.lang.Object implements VMPlugin
Java 8 based functions.
- Since:
- 2.5.0
-
Constructor Summary
Constructors Constructor Description Java8()
-
Method Summary
Modifier and Type Method Description boolean
checkAccessible(java.lang.Class<?> callerClass, java.lang.Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)
check whether the member can be accessed or notboolean
checkCanSetAccessible(java.lang.reflect.AccessibleObject accessibleObject, java.lang.Class<?> callerClass)
The following scenarios can not set accessible, i.e.void
configureAnnotation(AnnotationNode node)
void
configureAnnotationNodeFromDefinition(AnnotationNode definition, AnnotationNode root)
void
configureClassNode(CompileUnit compileUnit, ClassNode classNode)
static GenericsType
configureTypeVariableDefinition(ClassNode base, ClassNode[] cBounds)
static ClassNode
configureTypeVariableReference(java.lang.String name)
protected void
fillParameterNames(java.lang.String[] names, java.lang.reflect.Member member)
protected int
getElementCode(java.lang.annotation.ElementType value)
java.lang.Object
getInvokeSpecialHandle(java.lang.reflect.Method method, java.lang.Object receiver)
Returns a handle with bound receiver to invokeSpecial the given method.java.lang.Class<?>[]
getPluginDefaultGroovyMethods()
java.lang.Class<?>[]
getPluginStaticGroovyMethods()
int
getVersion()
Gives the version the plugin is made forvoid
invalidateCallSites()
java.lang.Object
invokeHandle(java.lang.Object handle, java.lang.Object[] args)
Invokes a handle produced by #getInvokeSpecialdHandleprotected Parameter
makeParameter(CompileUnit cu, java.lang.reflect.Type type, java.lang.Class<?> cl, java.lang.annotation.Annotation[] annotations, java.lang.String name)
Deprecated.static java.lang.invoke.MethodHandles.Lookup
of(java.lang.Class<?> declaringClass)
protected Parameter[]
processParameters(CompileUnit compileUnit, java.lang.reflect.Method m)
Deprecated.void
setAdditionalClassInformation(ClassNode cn)
MetaMethod
transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod)
transform meta method.MetaMethod
transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, java.lang.Class<?> caller)
transform meta methodboolean
trySetAccessible(java.lang.reflect.AccessibleObject ao)
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
public java.lang.Class<?>[] getPluginDefaultGroovyMethods()- Specified by:
getPluginDefaultGroovyMethods
in interfaceVMPlugin
-
getPluginStaticGroovyMethods
public java.lang.Class<?>[] 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
protected int getElementCode(java.lang.annotation.ElementType value) -
setAdditionalClassInformation
- Specified by:
setAdditionalClassInformation
in interfaceVMPlugin
-
configureAnnotation
- Specified by:
configureAnnotation
in interfaceVMPlugin
-
configureAnnotationNodeFromDefinition
- Specified by:
configureAnnotationNodeFromDefinition
in interfaceVMPlugin
-
configureClassNode
- Specified by:
configureClassNode
in interfaceVMPlugin
-
processParameters
@Deprecated protected Parameter[] processParameters(CompileUnit compileUnit, java.lang.reflect.Method m)Deprecated. -
makeParameter
@Deprecated protected Parameter makeParameter(CompileUnit cu, java.lang.reflect.Type type, java.lang.Class<?> cl, java.lang.annotation.Annotation[] annotations, java.lang.String name)Deprecated. -
fillParameterNames
protected void fillParameterNames(java.lang.String[] names, java.lang.reflect.Member member) -
checkCanSetAccessible
public boolean checkCanSetAccessible(java.lang.reflect.AccessibleObject accessibleObject, java.lang.Class<?> callerClass)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(java.lang.Class<?> callerClass, java.lang.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
public boolean trySetAccessible(java.lang.reflect.AccessibleObject ao)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.
-
transformMetaMethod
public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, java.lang.Class<?> caller)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
-
getInvokeSpecialHandle
public java.lang.Object getInvokeSpecialHandle(java.lang.reflect.Method method, java.lang.Object receiver)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
public java.lang.Object invokeHandle(java.lang.Object handle, java.lang.Object[] args) throws java.lang.ThrowableDescription 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:
java.lang.Throwable
-
of
public static java.lang.invoke.MethodHandles.Lookup of(java.lang.Class<?> declaringClass)
-