Class Java9

java.lang.Object
org.codehaus.groovy.vmplugin.v8.Java8
org.codehaus.groovy.vmplugin.v9.Java9
All Implemented Interfaces:
VMPlugin

public class Java9
extends Java8
Additional Java 9 based functions will be added here as needed.
  • Constructor Details

    • Java9

      public Java9()
  • Method Details

    • getVersion

      public int getVersion()
      Description copied from interface: VMPlugin
      Gives the version the plugin is made for
      Specified by:
      getVersion in interface VMPlugin
      Overrides:
      getVersion in class Java8
      Returns:
      7 for jdk7, 8 for jdk8, 9 for jdk9 or higher
    • 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
    • of

      public static MethodHandles.Lookup of​(Class<?> declaringClass)
    • 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 interface VMPlugin
      Overrides:
      getInvokeSpecialHandle in class Java8
      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<?> 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 if Java8.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 interface VMPlugin
      Overrides:
      checkCanSetAccessible in class Java8
      Parameters:
      accessibleObject - the accessible object to check
      callerClass - the callerClass to invoke setAccessible
      Returns:
      the check result
    • trySetAccessible

      public boolean trySetAccessible​(AccessibleObject ao)
      Description copied from interface: VMPlugin
      Set the accessible flag for this reflected object to true if possible.
      Specified by:
      trySetAccessible in interface VMPlugin
      Overrides:
      trySetAccessible in class Java8
      Parameters:
      ao - the accessible object
      Returns:
      true if the accessible flag is set to true; 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 interface VMPlugin
      Overrides:
      transformMetaMethod in class Java8
      Parameters:
      metaClass - meta class
      metaMethod - the original meta method
      caller - caller class, whose method sets accessible for methods
      Returns:
      the transformed meta method
    • checkAccessible

      public boolean checkAccessible​(Class<?> accessingClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)
      Description copied from interface: VMPlugin
      check whether the member can be accessed or not
      Specified by:
      checkAccessible in interface VMPlugin
      Overrides:
      checkAccessible in class Java8
      Parameters:
      accessingClass - callerClass the callerClass to invoke setAccessible
      declaringClass - the type of member owner
      memberModifiers - modifiers of member
      allowIllegalAccess - whether to allow illegal access
      Returns:
      the result of checking