Module jdk.jfr
Package jdk.jfr

Class ValueDescriptor



  • public final class ValueDescriptor
    extends Object
    Describes event fields and annotation elements.
    Since:
    9
    • Constructor Detail

      • ValueDescriptor

        public ValueDescriptor​(Class<?> type,
                               String name)

        Constructs a value descriptor, useful for creating event types and annotations dynamically.

        Supported types are

        • byte.class
        • short.class
        • int.class
        • long.class
        • char.class
        • float.class
        • double.class
        • boolean.class
        • String.class
        • Class.class
        • Thread.class

        A valid Java identifier, for example "maxThroughput". See 3.8 Java Language Specification for more information.

        Parameters:
        type - the type, not null
        name - the name, not null
        Throws:
        SecurityException - if a security manager is present and the caller doesn't have FlightRecorderPermission("registerEvent")
      • ValueDescriptor

        public ValueDescriptor​(Class<?> type,
                               String name,
                               List<AnnotationElement> annotations)

        Constructs a value descriptor, useful for creating event types and annotations dynamically.

        Supported types are

        • byte.class
        • short.class
        • int.class
        • long.class
        • char.class
        • float.class
        • double.class
        • boolean.class
        • String.class
        • Class.class
        • Thread.class

        A valid Java identifier, for example "maxThroughput". See 3.8 Java Language Specification for more information.

        Parameters:
        type - the type, not null
        name - the name, not null
        annotations - the annotations on the value descriptors, not null
        Throws:
        SecurityException - if a security manager is present and the caller doesn't have FlightRecorderPermission "registerEvent"}
    • Method Detail

      • getLabel

        public String getLabel​()
        Returns a human-readable name describing the value, for example "Maximum Throughput".
        Returns:
        a human-readable name, or null if not available
      • getName

        public String getName​()
        Returns the name of the value, for example "maxThroughput".
        Returns:
        the name, not null
      • getDescription

        public String getDescription​()
        Returns a sentence describing the value, for example "Maximum throughput in the transaction system. Value is reset after each new batch".
        Returns:
        the description, or null if not available
      • getContentType

        public String getContentType​()
        Returns a textual identifier that determines how a value represented by this ValueDescriptor should be interpreted or formatted.

        For example, if the value descriptor's type is float and the event value is 0.5f, a content type of "jdk.jfr.Percentage" hints to a client that the value is a percentage and that it should be rendered as "50%".

        The JDK comes with the following predefined content types,

        • jdk.jfr.Percentage
        • jdk.jfr.Timespan
        • jdk.jfr.Timestamp
        • jdk.jfr.Frequency
        • jdk.jfr.Flag
        • jdk.jfr.MemoryAddress
        • jdk.jfr.MemoryAmount
        • jdk.jfr.NetworkAddress

        User defined content types can be created using ContentType.

        Returns:
        the content type, or null if not available
        See Also:
        ContentType
      • getTypeName

        public String getTypeName​()
        Returns the fully qualified class name of the type associated with this value descriptor.
        Returns:
        the type name, not null
        See Also:
        getTypeId()
      • getTypeId

        public long getTypeId​()
        Returns a unique identifier for the type in the JVM. The id is not guaranteed to be the same between JVM instances.
        Returns:
        type id, not negative
      • isArray

        public boolean isArray​()
        Returns if this value descriptor is an array type.
        Returns:
        true if it is an array type, false otherwise
      • getAnnotation

        public <A extends Annotation> A getAnnotation​(Class<A> annotationType)
        Returns the first annotation for the specified type if an annotation element with the same name is directly present for this value descriptor, else null.
        Type Parameters:
        A - the type of the annotation to query for and return if present
        Parameters:
        annotationType - the Class object corresponding to the annotation type, not null
        Returns:
        this element's annotation for the specified annotation type if directly present, else null
      • getAnnotationElements

        public List<AnnotationElement> getAnnotationElements​()
        Returns an immutable list of annotation elements for this value descriptor.
        Returns:
        a list of annotations, not null
      • getFields

        public List<ValueDescriptor> getFields​()
        Returns an immutable list of value descriptor if the type is complex, else an empty list.
        Returns:
        a list of value descriptors, not null