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`

@Deprecated(since="6.0.0", forRemoval=true) public class Java8 extends Object implements VMPlugin
Deprecated, for removal: This API element is subject to removal in a future version.
Use `Java17` instead. Groovy 6.0 requires JDK 17+.
Java 8 based functions.

Since:
  2.5.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Java8()`
  Deprecated, for removal: This API element is subject to removal in a future version.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected ClassNode`
  `applyTypeAnnotations(AnnotatedType annotatedType, ClassNode classNode)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Applies type-use annotations (JSR 308) of the given annotated type to the given class node, recursing into type arguments, wildcard bounds and array component types.
  `boolean`
  `checkAccessible(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  check whether the member can be accessed or not
  `boolean`
  `checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  The following scenarios can not set accessible, i.e.
  `void`
  `configureAnnotation(AnnotationNode node)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Copies runtime annotation metadata into the supplied annotation node.
  `void`
  `configureClassNode(CompileUnit compileUnit, ClassNode classNode)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Configures the supplied class node from its runtime type information.
  `static GenericsType`
  `configureTypeVariableDefinition(ClassNode base, ClassNode[] bounds)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Configures a type-variable definition node from its bounds.
  `static ClassNode`
  `configureTypeVariableReference(String name)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Creates a placeholder class node that references a type variable by name.
  `protected void`
  `fillParameterNames(String[] names, Member member)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Populates parameter names from the supplied reflective executable member.
  `Object`
  `getInvokeSpecialHandle(Method method, Object receiver)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns a handle with bound receiver to invokeSpecial the given method.
  `Class<?>[]`
  `getPluginDefaultGroovyMethods()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns plugin-specific default Groovy methods.
  `Class<?>[]`
  `getPluginStaticGroovyMethods()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns plugin-specific static Groovy methods.
  `protected Expression`
  `getValue(Field field)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns the initial expression for given field.
  `int`
  `getVersion()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Gives the version the plugin is made for
  `void`
  `invalidateCallSites()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Invalidates cached call sites maintained by the plugin.
  `Object`
  `invokeHandle(Object handle, Object[] arguments)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Invokes a handle produced by #getInvokeSpecialdHandle
  `protected ClassNode`
  `makeClassNode(CompileUnit cu, Type t, Class<?> c)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Creates or reuses a class node for the supplied runtime and generic type information.
  `protected void`
  `makeRecordComponents(CompileUnit cu, ClassNode classNode, Class<?> clazz)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Adds record components to the class node when supported by the runtime.
  `protected MethodHandles.Lookup`
  `newLookup(Class<?> targetClass)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Creates a lookup capable of accessing members declared by the target class.
  `static MethodHandles.Lookup`
  `of(Class<?> targetClass)`
  Deprecated.
  `void`
  `setAdditionalClassInformation(ClassNode cn)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Adds VM-specific metadata to the given class node.
  `protected AnnotationNode`
  `toAnnotationNode(Annotation annotation)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Converts a runtime annotation instance into a Groovy AST annotation node.
  `MetaMethod`
  `transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  transform meta method.
  `MetaMethod`
  `transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  transform meta method
  `boolean`
  `trySetAccessible(AccessibleObject ao)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Set the `accessible` flag for this reflected object to `true` if possible.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.codehaus.groovy.vmplugin.VMPlugin

  `configureAnnotationNodeFromDefinition, getDefaultImportClasses, getRecordComponentNames`

- ## Constructor Details

  - ### Java8

    public Java8()
    Deprecated, for removal: This API element is subject to removal in a future version.

- ## Method Details

  - ### configureTypeVariableDefinition

    public static GenericsType configureTypeVariableDefinition(ClassNode base, ClassNode[] bounds)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Configures a type-variable definition node from its bounds.
    Parameters:
      `base` - the placeholder class node
      `bounds` - the upper bounds of the type variable
    Returns:
      the configured generics type

  - ### configureTypeVariableReference

    public static ClassNode configureTypeVariableReference(String name)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a placeholder class node that references a type variable by name.
    Parameters:
      `name` - the type-variable name
    Returns:
      the placeholder class node

  - ### getPluginDefaultGroovyMethods

    public Class<?>[] getPluginDefaultGroovyMethods()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns plugin-specific default Groovy methods.
    Specified by:
      `getPluginDefaultGroovyMethods` in interface `VMPlugin`
    Returns:
      the default Groovy method classes contributed by this plugin

  - ### getPluginStaticGroovyMethods

    public Class<?>[] getPluginStaticGroovyMethods()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns plugin-specific static Groovy methods.
    Specified by:
      `getPluginStaticGroovyMethods` in interface `VMPlugin`
    Returns:
      the static Groovy method classes contributed by this plugin

  - ### getVersion

    public int getVersion()
    Deprecated, for removal: This API element is subject to removal in a future version.
    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

  - ### setAdditionalClassInformation

    public void setAdditionalClassInformation(ClassNode cn)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Adds VM-specific metadata to the given class node.
    Specified by:
      `setAdditionalClassInformation` in interface `VMPlugin`
    Parameters:
      `cn` - the class node to enrich

  - ### configureAnnotation

    public void configureAnnotation(AnnotationNode node)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Copies runtime annotation metadata into the supplied annotation node.
    Specified by:
      `configureAnnotation` in interface `VMPlugin`
    Parameters:
      `node` - the annotation node to configure

  - ### toAnnotationNode

    protected AnnotationNode toAnnotationNode(Annotation annotation)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Converts a runtime annotation instance into a Groovy AST annotation node.
    Parameters:
      `annotation` - the runtime annotation
    Returns:
      the corresponding annotation node

  - ### configureClassNode

    public void configureClassNode(CompileUnit compileUnit, ClassNode classNode)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Configures the supplied class node from its runtime type information.
    Specified by:
      `configureClassNode` in interface `VMPlugin`
    Parameters:
      `compileUnit` - the compile unit that owns the class node
      `classNode` - the class node to configure

  - ### getValue

    protected Expression getValue(Field field)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the initial expression for given field.
    Returns:
      value expression or null
    Since:
      5.0.0

  - ### makeRecordComponents

    protected void makeRecordComponents(CompileUnit cu, ClassNode classNode, Class<?> clazz)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Adds record components to the class node when supported by the runtime.
    Parameters:
      `cu` - the owning compile unit
      `classNode` - the class node to update
      `clazz` - the runtime class

  - ### makeClassNode

    protected ClassNode makeClassNode(CompileUnit cu, Type t, Class<?> c)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates or reuses a class node for the supplied runtime and generic type information.
    Parameters:
      `cu` - the owning compile unit
      `t` - the reflective type
      `c` - the erased runtime class
    Returns:
      the resolved class node

  - ### applyTypeAnnotations

    protected ClassNode applyTypeAnnotations(AnnotatedType annotatedType, ClassNode classNode)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Applies type-use annotations (JSR 308) of the given annotated type to the given class node, recursing into type arguments, wildcard bounds and array component types. The returned node may differ from the input node: type annotations may only be attached to per-use redirect nodes, so shared (cached) nodes are replaced by an annotated plain node reference.
    Parameters:
      `annotatedType` - the reflective annotated type at some position (e.g. a method return type)
      `classNode` - the class node created for that position
    Returns:
      the annotated class node: either the input node or a per-use replacement for it
    Since:
      6.0.0

  - ### fillParameterNames

    protected void fillParameterNames(String[] names, Member member)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Populates parameter names from the supplied reflective executable member.
    Parameters:
      `names` - the destination array for parameter names
      `member` - the reflective member providing parameter metadata

  - ### checkCanSetAccessible

    public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    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)
    Deprecated, for removal: This API element is subject to removal in a future version.
    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)
    Deprecated, for removal: This API element is subject to removal in a future version.
    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.

  - ### transformMetaMethod

    public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod)
    Deprecated, for removal: This API element is subject to removal in a future version.
    transform meta method.
    Specified by:
      `transformMetaMethod` in interface `VMPlugin`
    Parameters:
      `metaClass` - metaclass
      `metaMethod` - the original meta method
    Returns:
      the transformed meta method

  - ### transformMetaMethod

    public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)
    Deprecated, for removal: This API element is subject to removal in a future version.
    transform meta method
    Specified by:
      `transformMetaMethod` in interface `VMPlugin`
    Parameters:
      `metaClass` - metaclass
      `metaMethod` - the original meta method
      `caller` - caller class, whose method sets accessible for methods
    Returns:
      the transformed meta method

  - ### invalidateCallSites

    public void invalidateCallSites()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Invalidates cached call sites maintained by the plugin.
    Specified by:
      `invalidateCallSites` in interface `VMPlugin`

  - ### getInvokeSpecialHandle

    public Object getInvokeSpecialHandle(Method method, Object receiver)
    Deprecated, for removal: This API element is subject to removal in a future version.
    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[] arguments) throws Throwable
    Deprecated, for removal: This API element is subject to removal in a future version.
    Invokes a handle produced by #getInvokeSpecialdHandle
    Specified by:
      `invokeHandle` in interface `VMPlugin`
    Parameters:
      `handle` - the handle
      `arguments` - arguments for the method call, can be empty but not null
    Returns:
      the result of the method call
    Throws:
      `Throwable`

  - ### of

    @Deprecated(since="5.0.0") public static MethodHandles.Lookup of(Class<?> targetClass)
    Deprecated.
    Returns a private lookup for the supplied target class using the active VM plugin.
    Parameters:
      `targetClass` - the class to create a lookup for
    Returns:
      a lookup with private access to `targetClass`

  - ### newLookup

    protected MethodHandles.Lookup newLookup(Class<?> targetClass)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a lookup capable of accessing members declared by the target class.
    Parameters:
      `targetClass` - the lookup target
    Returns:
      a lookup for the target class