MetadataDefinition (Java SE 12 & JDK 12 )
Keywords: jdk.jfr.MetadataDefinition class

Module jdk.jfr
Package jdk.jfr

## Annotation Type MetadataDefinition

-     @Retention(RUNTIME)
      @Target(TYPE)
      public @interface MetadataDefinition

  Meta annotation for defining new types of event metadata.

  In the following example, a transaction event is defined with two user-defined annotations, `@Severity` and `@TransactionId`.

      @MetadataDefinition
      @Label("Severity")
      @Description("Value between 0 and 100 that indicates severity. 100 is most severe.")
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ ElementType.TYPE })
       public @interface @Severity {
         int value() default 50;
       }

      @MetadataDefinition
      @Label("Transaction Id")
      @Relational
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ ElementType.FIELD })
       public @interface @Severity {
       }

      @Severity(80)
      @Label("Transaction Blocked");
       class TransactionBlocked extends Event {
        @TransactionId
        @Label("Transaction");
         long transactionId;

        @TransactionId
        @Label("Transaction Blocker");
         long transactionId;
       }

  Adding `@MetadataDefinition` to the declaration of `@Severity` and `@TransactionId` ensures the information is saved by Flight Recorder.
  Since:
    9