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 booleancheckAccessible(java.lang.Class<?> callerClass, java.lang.Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)check whether the member can be accessed or notbooleancheckCanSetAccessible(java.lang.reflect.AccessibleObject accessibleObject, java.lang.Class<?> callerClass)The following scenarios can not set accessible, i.e.voidconfigureAnnotation(AnnotationNode node)voidconfigureAnnotationNodeFromDefinition(AnnotationNode definition, AnnotationNode root)voidconfigureClassNode(CompileUnit compileUnit, ClassNode classNode)static GenericsTypeconfigureTypeVariableDefinition(ClassNode base, ClassNode[] bounds)static ClassNodeconfigureTypeVariableReference(java.lang.String name)protected voidfillParameterNames(java.lang.String[] names, java.lang.reflect.Member member)protected intgetElementCode(java.lang.annotation.ElementType value)java.lang.ObjectgetInvokeSpecialHandle(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()intgetVersion()Gives the version the plugin is made forvoidinvalidateCallSites()java.lang.ObjectinvokeHandle(java.lang.Object handle, java.lang.Object[] args)Invokes a handle produced by #getInvokeSpecialdHandleprotected ParametermakeParameter(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.Lookupof(java.lang.Class<?> targetClass)protected Parameter[]processParameters(CompileUnit compileUnit, java.lang.reflect.Method m)Deprecated.voidsetAdditionalClassInformation(ClassNode cn)MetaMethodtransformMetaMethod(MetaClass metaClass, MetaMethod metaMethod)transform meta method.MetaMethodtransformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, java.lang.Class<?> caller)transform meta methodbooleantrySetAccessible(java.lang.reflect.AccessibleObject ao)Set theaccessibleflag for this reflected object totrueif possible.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods 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:
getPluginDefaultGroovyMethodsin interfaceVMPlugin
-
getPluginStaticGroovyMethods
public java.lang.Class<?>[] getPluginStaticGroovyMethods()- Specified by:
getPluginStaticGroovyMethodsin interfaceVMPlugin
-
getVersion
public int getVersion()Description copied from interface:VMPluginGives the version the plugin is made for- Specified by:
getVersionin 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:
setAdditionalClassInformationin interfaceVMPlugin
-
configureAnnotation
- Specified by:
configureAnnotationin interfaceVMPlugin
-
configureAnnotationNodeFromDefinition
- Specified by:
configureAnnotationNodeFromDefinitionin interfaceVMPlugin
-
configureClassNode
- Specified by:
configureClassNodein 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:
checkCanSetAccessiblein 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:VMPlugincheck whether the member can be accessed or not- Specified by:
checkAccessiblein interfaceVMPlugin- Parameters:
callerClass- callerClass the callerClass to invokesetAccessibledeclaringClass- 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:VMPluginSet theaccessibleflag for this reflected object totrueif possible.- Specified by:
trySetAccessiblein interfaceVMPlugin- Parameters:
ao- the accessible object- Returns:
trueif theaccessibleflag is set totrue;falseif access cannot be enabled.
-
transformMetaMethod
public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, java.lang.Class<?> caller)Description copied from interface:VMPlugintransform meta method- Specified by:
transformMetaMethodin 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:VMPlugintransform meta method.- Specified by:
transformMetaMethodin interfaceVMPlugin- Parameters:
metaClass- meta classmetaMethod- the original meta method- Returns:
- the transformed meta method
-
invalidateCallSites
public void invalidateCallSites()- Specified by:
invalidateCallSitesin interfaceVMPlugin
-
getInvokeSpecialHandle
public java.lang.Object getInvokeSpecialHandle(java.lang.reflect.Method method, java.lang.Object receiver)Description copied from interface:VMPluginReturns 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:
getInvokeSpecialHandlein 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:VMPluginInvokes a handle produced by #getInvokeSpecialdHandle- Specified by:
invokeHandlein 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<?> targetClass)
-