Package org.codehaus.groovy.vmplugin.v9
Class Java9
- java.lang.Object
-
- org.codehaus.groovy.vmplugin.v5.Java5
-
- org.codehaus.groovy.vmplugin.v6.Java6
-
- org.codehaus.groovy.vmplugin.v7.Java7
-
- org.codehaus.groovy.vmplugin.v8.Java8
-
- org.codehaus.groovy.vmplugin.v9.Java9
-
-
Constructor Summary
Constructors Constructor Description Java9()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> caller)
This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully ifJava5.checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class)
returns true and any of the following hold:Object
getInvokeSpecialHandle(Method method, Object receiver)
Returns a handle with bound receiver to invokeSpecial the given method.int
getVersion()
Gives the version the plugin is made forstatic MethodHandles.Lookup
of(Class<?> declaringClass)
MetaMethod
transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?>[] params, Class<?> caller)
transform meta methodboolean
trySetAccessible(AccessibleObject ao)
Set theaccessible
flag for this reflected object totrue
if possible.-
Methods inherited from class org.codehaus.groovy.vmplugin.v8.Java8
getElementCode, getPluginDefaultGroovyMethods, processParameters
-
Methods inherited from class org.codehaus.groovy.vmplugin.v7.Java7
invalidateCallSites, invokeHandle
-
Methods inherited from class org.codehaus.groovy.vmplugin.v5.Java5
configureAnnotation, configureAnnotationFromDefinition, configureAnnotationNodeFromDefinition, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, getPluginStaticGroovyMethods, makeParameter, setAdditionalClassInformation
-
-
-
-
Method Detail
-
of
public static MethodHandles.Lookup of(Class<?> declaringClass)
-
getVersion
public int getVersion()
Description copied from interface:VMPlugin
Gives the version the plugin is made for- Specified by:
getVersion
in interfaceVMPlugin
- Overrides:
getVersion
in classJava8
- Returns:
- 7 for jdk7, 8 for jdk8, 9 for jdk9 or higher
-
getInvokeSpecialHandle
public Object getInvokeSpecialHandle(Method method, 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
- Overrides:
getInvokeSpecialHandle
in classJava7
- Returns:
- null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call
-
checkCanSetAccessible
public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> caller)
This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully ifJava5.checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class)
returns true and any of the following hold:1) C and D are in the same module. 2) The member is public and D is public in a package that the module containing D exports to at least the module containing C. 3) The member is protected static, D is public in a package that the module containing D exports to at least the module containing C, and C is a subclass of D. 4) D is in a package that the module containing D opens to at least the module containing C. All packages in unnamed and open modules are open to all modules and so this method always succeeds when D is in an unnamed or open module.
- Specified by:
checkCanSetAccessible
in interfaceVMPlugin
- Overrides:
checkCanSetAccessible
in classJava5
- Parameters:
accessibleObject
- the accessible object to checkcaller
- the caller to invokesetAccessible
- Returns:
- the check result
-
trySetAccessible
public boolean trySetAccessible(AccessibleObject ao)
Description copied from interface:VMPlugin
Set theaccessible
flag for this reflected object totrue
if possible.- Specified by:
trySetAccessible
in interfaceVMPlugin
- Overrides:
trySetAccessible
in classJava5
- 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, Class<?>[] params, Class<?> caller)
Description copied from interface:VMPlugin
transform meta method- Specified by:
transformMetaMethod
in interfaceVMPlugin
- Overrides:
transformMetaMethod
in classJava5
- Parameters:
metaClass
- meta classmetaMethod
- the original meta methodparams
- parameter typescaller
- caller type- Returns:
- the transformed meta method
-
-