org.codehaus.groovy.vmplugin.v5

## Class Java5

- java.lang.Object
- - org.codehaus.groovy.vmplugin.v5.Java5

- All Implemented Interfaces:
    VMPlugin
  Direct Known Subclasses:
    Java6

      public class Java5
      extends java.lang.Object
      implements VMPlugin

  java 5 based functions

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Java5()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `configureAnnotation(AnnotationNode node)`
    `void` | `configureAnnotationFromDefinition(AnnotationNode definition, AnnotationNode root)` Deprecated.
    `void` | `configureAnnotationNodeFromDefinition(AnnotationNode definition, AnnotationNode root)`
    `void` | `configureClassNode(CompileUnit compileUnit, ClassNode classNode)`
    `static GenericsType` | `configureTypeVariableDefinition(ClassNode base, ClassNode[] cBounds)`
    `static ClassNode` | `configureTypeVariableReference(java.lang.String name)`
    `protected int` | `getElementCode(java.lang.annotation.ElementType value)`
    `java.lang.Object` | `getInvokeSpecialHandle(java.lang.reflect.Method m, java.lang.Object receiver)` Returns a handle with bound receiver to invokeSpecial the given method.
    `java.lang.Class[]` | `getPluginDefaultGroovyMethods()`
    `java.lang.Class[]` | `getPluginStaticGroovyMethods()`
    `int` | `getVersion()` Gives the version the plugin is made for
    `void` | `invalidateCallSites()`
    `java.lang.Object` | `invokeHandle(java.lang.Object handle, java.lang.Object[] args)` Invokes a handle produced by #getInvokeSpecialdHandle
    `void` | `setAdditionalClassInformation(ClassNode cn)`

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

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

- - ### Constructor Detail

    - #### Java5

          public Java5()

  - ### Method Detail

    - #### setAdditionalClassInformation

          public void setAdditionalClassInformation(ClassNode cn)

      Specified by:
        `setAdditionalClassInformation` in interface `VMPlugin`

    - #### configureTypeVariableDefinition

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

    - #### configureTypeVariableReference

          public static ClassNode configureTypeVariableReference(java.lang.String name)

    - #### getPluginDefaultGroovyMethods

          public java.lang.Class[] getPluginDefaultGroovyMethods()

      Specified by:
        `getPluginDefaultGroovyMethods` in interface `VMPlugin`

    - #### getPluginStaticGroovyMethods

          public java.lang.Class[] getPluginStaticGroovyMethods()

      Specified by:
        `getPluginStaticGroovyMethods` in interface `VMPlugin`

    - #### configureAnnotationFromDefinition

          @Deprecated
          public void configureAnnotationFromDefinition(AnnotationNode definition,
                                                                     AnnotationNode root)

      Deprecated.

    - #### 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`

    - #### getElementCode

          protected int getElementCode(java.lang.annotation.ElementType value)

    - #### configureClassNode

          public void configureClassNode(CompileUnit compileUnit,
                                         ClassNode classNode)

      Specified by:
        `configureClassNode` in interface `VMPlugin`

    - #### invalidateCallSites

          public void invalidateCallSites()

      Specified by:
        `invalidateCallSites` in interface `VMPlugin`

    - #### getInvokeSpecialHandle

          public java.lang.Object getInvokeSpecialHandle(java.lang.reflect.Method m,
                                                         java.lang.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

    - #### 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

    - #### invokeHandle

          public java.lang.Object invokeHandle(java.lang.Object handle,
                                               java.lang.Object[] args)
                                        throws java.lang.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:
        `java.lang.Throwable`