Package org.codehaus.groovy.vmplugin.v9
Class Java9
- java.lang.Object
-
- 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
checkAccessible(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)
check whether the member can be accessed or notboolean
checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)
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 ifJava8.checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class)
returns true and any of the following hold:Map<String,Set<String>>
getDefaultImportClasses(String[] packageNames)
Returns the default import classes: class name -> the relevant package namesClass<?>[]
getPluginDefaultGroovyMethods()
int
getVersion()
Gives the version the plugin is made forprotected MethodHandles.Lookup
newLookup(Class<?> declaringClass)
static MethodHandles.Lookup
of(Class<?> declaringClass)
MetaMethod
transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, 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
configureAnnotation, configureAnnotationNodeFromDefinition, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, getElementCode, getInvokeSpecialHandle, getPluginStaticGroovyMethods, invalidateCallSites, invokeHandle, makeParameter, processParameters, setAdditionalClassInformation, transformMetaMethod
-
-
-
-
Method Detail
-
getDefaultImportClasses
public Map<String,Set<String>> getDefaultImportClasses(String[] packageNames)
Description copied from interface:VMPlugin
Returns the default import classes: class name -> the relevant package names- Parameters:
packageNames
- the default import package names, e.g. java.lang.- Returns:
- the default import classes
-
newLookup
protected MethodHandles.Lookup newLookup(Class<?> declaringClass)
-
of
public static MethodHandles.Lookup of(Class<?> declaringClass)
-
getPluginDefaultGroovyMethods
public Class<?>[] getPluginDefaultGroovyMethods()
- Specified by:
getPluginDefaultGroovyMethods
in interfaceVMPlugin
- Overrides:
getPluginDefaultGroovyMethods
in classJava8
-
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
-
checkCanSetAccessible
public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)
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 ifJava8.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 classJava8
- Parameters:
accessibleObject
- the accessible object to checkcallerClass
- the callerClass 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 classJava8
- 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<?> caller)
Description copied from interface:VMPlugin
transform meta method- Specified by:
transformMetaMethod
in interfaceVMPlugin
- Overrides:
transformMetaMethod
in classJava8
- Parameters:
metaClass
- meta classmetaMethod
- the original meta methodcaller
- caller class, whose method sets accessible for methods- Returns:
- the transformed meta method
-
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
- Overrides:
checkAccessible
in classJava8
- 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
-
-