Class Java8

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

public class Java8 extends Object implements VMPlugin
Java 8 based functions.
Since:
2.5.0
  • Constructor Details

    • Java8

      public Java8()
  • Method Details

    • configureTypeVariableDefinition

      public static GenericsType configureTypeVariableDefinition(ClassNode base, ClassNode[] cBounds)
    • configureTypeVariableReference

      public static ClassNode configureTypeVariableReference(String name)
    • getPluginDefaultGroovyMethods

      public Class<?>[] getPluginDefaultGroovyMethods()
      Specified by:
      getPluginDefaultGroovyMethods in interface VMPlugin
    • getPluginStaticGroovyMethods

      public Class<?>[] getPluginStaticGroovyMethods()
      Specified by:
      getPluginStaticGroovyMethods in interface VMPlugin
    • getVersion

      public int getVersion()
      Description copied from interface: VMPlugin
      Gives the version the plugin is made for
      Specified by:
      getVersion in interface VMPlugin
      Returns:
      7 for jdk7, 8 for jdk8, 9 for jdk9 or higher
    • getElementCode

      protected int getElementCode(ElementType value)
    • setAdditionalClassInformation

      public void setAdditionalClassInformation(ClassNode cn)
      Specified by:
      setAdditionalClassInformation in interface VMPlugin
    • configureAnnotationNodeFromDefinition

      public void configureAnnotationNodeFromDefinition(AnnotationNode definition, AnnotationNode root)
      Specified by:
      configureAnnotationNodeFromDefinition in interface VMPlugin
    • configureAnnotation

      public void configureAnnotation(AnnotationNode node)
      Specified by:
      configureAnnotation in interface VMPlugin
    • configureAnnotation

      protected void configureAnnotation(AnnotationNode node, Annotation annotation)
    • configureClassNode

      public void configureClassNode(CompileUnit compileUnit, ClassNode classNode)
      Specified by:
      configureClassNode in interface VMPlugin
    • makeRecordComponents

      protected void makeRecordComponents(CompileUnit cu, ClassNode classNode, Class<?> clazz)
    • makeClassNode

      protected ClassNode makeClassNode(CompileUnit cu, Type t, Class<?> c)
    • fillParameterNames

      protected void fillParameterNames(String[] names, Member member)
    • checkCanSetAccessible

      public boolean checkCanSetAccessible(AccessibleObject accessibleObject, 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 interface VMPlugin
      Parameters:
      accessibleObject - the accessible object to check
      callerClass - the callerClass to invoke setAccessible
      Returns:
      the check result
    • 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 interface VMPlugin
      Parameters:
      callerClass - 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
    • 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
      Parameters:
      ao - the accessible object
      Returns:
      true if the accessible flag is set to true; false if access cannot be enabled.
    • doPrivileged

      public <T> T doPrivileged(PrivilegedAction<T> action)
      Description copied from interface: VMPlugin
      Performs the specified PrivilegedAction with privileges enabled on platforms which support that capability, otherwise the action is performed ignoring privileges.
      Specified by:
      doPrivileged in interface VMPlugin
      Type Parameters:
      T - the type of the value returned by the PrivilegedAction's run method
      Parameters:
      action - the action to be performed
      Returns:
      the value returned by the action's run method
    • doPrivileged

      public <T> T doPrivileged(PrivilegedExceptionAction<T> action) throws PrivilegedActionException
      Description copied from interface: VMPlugin
      Performs the specified PrivilegedExceptionAction with privileges enabled on platforms which support that capability, otherwise the action is performed ignoring privileges.
      Specified by:
      doPrivileged in interface VMPlugin
      Type Parameters:
      T - the type of the value returned by the PrivilegedAction's run method
      Parameters:
      action - the action to be performed
      Returns:
      the value returned by the action's run method
      Throws:
      PrivilegedActionException
    • transformMetaMethod

      public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)
      Description copied from interface: VMPlugin
      transform meta method
      Specified by:
      transformMetaMethod in interface VMPlugin
      Parameters:
      metaClass - meta class
      metaMethod - the original meta method
      caller - caller class, whose method sets accessible for methods
      Returns:
      the transformed meta method
    • transformMetaMethod

      public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod)
      Description copied from interface: VMPlugin
      transform meta method.
      Specified by:
      transformMetaMethod in interface VMPlugin
      Parameters:
      metaClass - meta class
      metaMethod - the original meta method
      Returns:
      the transformed meta method
    • invalidateCallSites

      public void invalidateCallSites()
      Specified by:
      invalidateCallSites in interface VMPlugin
    • getLookup

      protected MethodHandles.Lookup getLookup(Object receiver)
    • 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
      Returns:
      null in case of jdk<7, otherwise a handle that takes the method call arguments for the invokespecial call
    • invokeHandle

      public Object invokeHandle(Object handle, Object[] args) throws Throwable
      Description copied from interface: VMPlugin
      Invokes a handle produced by #getInvokeSpecialdHandle
      Specified by:
      invokeHandle in interface VMPlugin
      Parameters:
      handle - the handle
      args - arguments for the method call, can be empty but not null
      Returns:
      the result of the method call
      Throws:
      Throwable
    • newLookup

      protected MethodHandles.Lookup newLookup(Class<?> declaringClass)
    • of

      public static MethodHandles.Lookup of(Class<?> declaringClass)