Class EventFactory
It's highly recommended that the event is defined at compile time, if the
field layout is known, so the Java Virtual Machine (JVM) can optimize the
code, possibly remove all instrumentation if Flight Recorder is inactive or
if the enabled setting for this event is set to false.
To define an event at compile time, see Event.
The following example shows how to implement a dynamic Event class.
List<ValueDescriptor> fields = new ArrayList<>();
List<AnnotationElement> messageAnnotations = Collections.singletonList(new AnnotationElement(Label.class, "Message"));
fields.add(new ValueDescriptor(String.class, "message", messageAnnotations));
List<AnnotationElement> numberAnnotations = Collections.singletonList(new AnnotationElement(Label.class, "Number"));
fields.add(new ValueDescriptor(int.class, "number", numberAnnotations));
String[] category = { "Example", "Getting Started" };
List<AnnotationElement> eventAnnotations = new ArrayList<>();
eventAnnotations.add(new AnnotationElement(Name.class, "com.example.HelloWorld"));
eventAnnotations.add(new AnnotationElement(Label.class, "Hello World"));
eventAnnotations.add(new AnnotationElement(Description.class, "Helps programmer getting started"));
eventAnnotations.add(new AnnotationElement(Category.class, category));
EventFactory f = EventFactory.create(eventAnnotations, fields);
Event event = f.newEvent();
event.set(0, "hello, world!");
event.set(1, 4711);
event.commit();
- Since:
- 9
-
Method Summary
Modifier and TypeMethodDescriptionstatic EventFactorycreate(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields) Creates anEventFactoryobject.Returns the event type that is associated with this event factory.newEvent()Instantiates an event, so it can be populated with data and written to the Flight Recorder system.voidregister()Registers an unregistered event.voidUnregisters the event that is associated with this event factory.Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitModifier and TypeMethodDescriptionprotected Objectclone()Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.booleanCompares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.protected voidfinalize()Deprecated, for removal: This API element is subject to removal in a future version.May cause performance issues, deadlocks and hangs.getClass()Answers the unique instance of java.lang.Class which represents the class of the receiver.inthashCode()Answers an integer hash code for the receiver.final voidnotify()Causes one thread which iswaiting on the receiver to be made ready to run.final voidCauses all threads which arewaiting on the receiver to be made ready to run.toString()Answers a string containing a concise, human-readable description of the receiver.final voidwait()Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated bynotifyornotifyAll).final voidwait(long time) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.final voidwait(long time, int frac) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.
-
Method Details
-
create
public static EventFactory create(List<AnnotationElement> annotationElements, List<ValueDescriptor> fields) Creates anEventFactoryobject.The order of the value descriptors specifies the index to use when setting event values.
- Parameters:
annotationElements- list of annotation elements that describes the annotations on the event, notnullfields- list of descriptors that describes the fields of the event, notnull- Returns:
- event factory, not
null - Throws:
IllegalArgumentException- if the input is not valid. For example, input might not be valid if the field type or name is not valid in the Java language or an annotation element references a type that can't be found.- See Also:
-
newEvent
Instantiates an event, so it can be populated with data and written to the Flight Recorder system.Use the
Event.set(int, Object)method to set a value.- Returns:
- an event instance, not
null
-
getEventType
Returns the event type that is associated with this event factory.- Returns:
- event type that is associated with this event factory, not
null - Throws:
IllegalStateException- if the event factory is created with theRegistered(false)annotation and the event class is not manually registered before the invocation of this method
-
register
public void register()Registers an unregistered event.By default, the event class associated with this event factory is registered when the event factory is created, unless the event has the
Registeredannotation.A registered event class can write data to Flight Recorder and event metadata can be obtained by invoking
FlightRecorder.getEventTypes().If the event class associated with this event factory is already registered, the call to this method is ignored.
- See Also:
-
unregister
public void unregister()Unregisters the event that is associated with this event factory.A unregistered event class can't write data to Flight Recorder and event metadata can't be obtained by invoking
FlightRecorder.getEventTypes().If the event class associated with this event factory is not already registered, the call to this method is ignored.
- See Also:
-