Annotation Type Record


  • @Target(METHOD)
    @Retention(RUNTIME)
    public @interface Record
    Indicates that this BuildStep method will also output recorded bytecode. If this annotation is present at least one method parameter must be a recorder object (i.e. a runtime object annotated with @Recorder). Any invocations made against this object will be recorded, and written out to bytecode to be invoked at runtime. The value() element determines when the generated bytecode is executed. If this is ExecutionTime.STATIC_INIT then it will be executed from a static init method, so will run at native image generation time. If this is ExecutionTime.RUNTIME_INIT then it will run from a main method at application start. There are some limitations on what can be recorded. Only the following objects are allowed as parameters to recording proxies:

    - primitives - String - Class - Objects returned from a previous recorder invocation - Objects with a no-arg constructor and getter/setters for all properties (or public fields) - Objects with a constructor annotated with @RecordableConstructor with parameter names that match field names - Any arbitrary object via the RecorderContext.registerSubstitution(Class, Class, Class) mechanism - arrays, lists and maps of the above

    • Required Element Summary

      Required Elements 
      Modifier and Type Required Element Description
      ExecutionTime value
      The time to execute the recorded bytecode
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      boolean optional
      If this is true then the bytecode produced by this method will be considered to be optional, and will only be created if this build step also produces another BuildItem that is consumed by the build.
      boolean useIdentityComparisonForParameters
      If this is set to false then parameters are considered equal based on equals/hashCode, instead of identity.
    • Element Detail

      • value

        ExecutionTime value
        The time to execute the recorded bytecode
      • optional

        boolean optional
        If this is true then the bytecode produced by this method will be considered to be optional, and will only be created if this build step also produces another BuildItem that is consumed by the build. If a method is optional it must be capable of producing at least one other item
        Default:
        false
      • useIdentityComparisonForParameters

        boolean useIdentityComparisonForParameters
        If this is set to false then parameters are considered equal based on equals/hashCode, instead of identity. This is an advanced option, it is only useful if you are recording lots of objects that you expect to be the same but have different identities. This allows multiple objects at deployment time to be interned into a single object at runtime. This is an advanced option, most recorders don't want this.
        Default:
        true