Java源码示例:jdk.jfr.Label
示例1
public static void main(String[] args) throws Exception {
EventType type = EventType.getEventType(CustomEvent.class);
SettingDescriptor annotatedType = Events.getSetting(type, "annotatedType");
Label al = annotatedType.getAnnotation(Label.class);
Asserts.assertNull(al); // we should not inherit annotation from type
Description ad = annotatedType.getAnnotation(Description.class);
Asserts.assertNull(ad); // we should not inherit annotation from type
Timestamp at = annotatedType.getAnnotation(Timestamp.class);
Asserts.assertNull(at); // we should not inherit annotation from type
SettingDescriptor newName = Events.getSetting(type, "newName");
Label nl = newName.getAnnotation(Label.class);
Asserts.assertEquals(nl.value(), "Annotated Method");
Description nd = newName.getAnnotation(Description.class);
Asserts.assertEquals(nd.value(), "Description of an annotated method");
Timespan nt = newName.getAnnotation(Timespan.class);
Asserts.assertEquals(nt.value(), Timespan.NANOSECONDS);
}
示例2
public static void main(String[] args) throws Exception {
// Event
EventType t = EventType.getEventType(LabelEvent.class);
Asserts.assertEquals(t.getLabel(), "Event Label", "Incorrect label for event");
// Field
ValueDescriptor field = t.getField("labledField");
Asserts.assertEquals(field.getLabel(), "Field Label", "Incorrect label for field");
// Annotation
AnnotationElement awl = Events.getAnnotationByName(t, AnnotionWithLabel.class.getName());
Label label = awl.getAnnotation(Label.class);
Asserts.assertEquals(label.value(), "Annotation Label", "Incorrect label for annotation");
// Setting
for (SettingDescriptor v: t.getSettingDescriptors()) {
if (v.getName().equals("dummy")) {
Label settingLabel = v.getAnnotation(Label.class);
Asserts.assertEquals(settingLabel.value(), "Setting Label", "Incorrect label for setting");
}
}
}
示例3
public static void main(String[] args) throws Throwable {
ValueDescriptor vdSimple = new ValueDescriptor(String.class, "message");
Asserts.assertNull(vdSimple.getAnnotation(Label.class), "Expected getAnnotation()==null");
Asserts.assertEquals(0, vdSimple.getAnnotationElements().size(), "Expected getAnnotations().size() == 0");
// Add labelA and verify we can read it back
List<AnnotationElement> annos = new ArrayList<>();
AnnotationElement labelA = new AnnotationElement(Label.class, "labelA");
annos.add(labelA);
System.out.println("labelA.getClass()" + labelA.getClass());
ValueDescriptor vdComplex = new ValueDescriptor(String.class, "message", annos);
final Label outLabel = vdComplex.getAnnotation(Label.class);
Asserts.assertFalse(outLabel == null, "getLabel(Label.class) was null");
System.out.println("outLabel.value() = " + outLabel.value());
// Get labelA from getAnnotations() list
Asserts.assertEquals(1, vdComplex.getAnnotationElements().size(), "Expected getAnnotations().size() == 1");
final AnnotationElement outAnnotation = vdComplex.getAnnotationElements().get(0);
Asserts.assertNotNull(outAnnotation, "outAnnotation was null");
System.out.printf("Annotation: %s = %s%n", outAnnotation.getTypeName(), outAnnotation.getValue("value"));
Asserts.assertEquals(outAnnotation, labelA, "Expected firstAnnotation == labelA");
}
示例4
public static void testEventFactoryExample() throws IOException {
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();
}
示例5
public static void main(String[] args) throws Exception {
EventType type = EventType.getEventType(CustomEvent.class);
SettingDescriptor annotatedType = Events.getSetting(type, "annotatedType");
Label al = annotatedType.getAnnotation(Label.class);
Asserts.assertNull(al); // we should not inherit annotation from type
Description ad = annotatedType.getAnnotation(Description.class);
Asserts.assertNull(ad); // we should not inherit annotation from type
Timestamp at = annotatedType.getAnnotation(Timestamp.class);
Asserts.assertNull(at); // we should not inherit annotation from type
SettingDescriptor newName = Events.getSetting(type, "newName");
Label nl = newName.getAnnotation(Label.class);
Asserts.assertEquals(nl.value(), "Annotated Method");
Description nd = newName.getAnnotation(Description.class);
Asserts.assertEquals(nd.value(), "Description of an annotated method");
Timespan nt = newName.getAnnotation(Timespan.class);
Asserts.assertEquals(nt.value(), Timespan.NANOSECONDS);
}
示例6
public static void main(String[] args) throws Exception {
// Event
EventType t = EventType.getEventType(LabelEvent.class);
Asserts.assertEquals(t.getLabel(), "Event Label", "Incorrect label for event");
// Field
ValueDescriptor field = t.getField("labledField");
Asserts.assertEquals(field.getLabel(), "Field Label", "Incorrect label for field");
// Annotation
AnnotationElement awl = Events.getAnnotationByName(t, AnnotionWithLabel.class.getName());
Label label = awl.getAnnotation(Label.class);
Asserts.assertEquals(label.value(), "Annotation Label", "Incorrect label for annotation");
// Setting
for (SettingDescriptor v: t.getSettingDescriptors()) {
if (v.getName().equals("dummy")) {
Label settingLabel = v.getAnnotation(Label.class);
Asserts.assertEquals(settingLabel.value(), "Setting Label", "Incorrect label for setting");
}
}
}
示例7
public static void main(String[] args) throws Throwable {
ValueDescriptor vdSimple = new ValueDescriptor(String.class, "message");
Asserts.assertNull(vdSimple.getAnnotation(Label.class), "Expected getAnnotation()==null");
Asserts.assertEquals(0, vdSimple.getAnnotationElements().size(), "Expected getAnnotations().size() == 0");
// Add labelA and verify we can read it back
List<AnnotationElement> annos = new ArrayList<>();
AnnotationElement labelA = new AnnotationElement(Label.class, "labelA");
annos.add(labelA);
System.out.println("labelA.getClass()" + labelA.getClass());
ValueDescriptor vdComplex = new ValueDescriptor(String.class, "message", annos);
final Label outLabel = vdComplex.getAnnotation(Label.class);
Asserts.assertFalse(outLabel == null, "getLabel(Label.class) was null");
System.out.println("outLabel.value() = " + outLabel.value());
// Get labelA from getAnnotations() list
Asserts.assertEquals(1, vdComplex.getAnnotationElements().size(), "Expected getAnnotations().size() == 1");
final AnnotationElement outAnnotation = vdComplex.getAnnotationElements().get(0);
Asserts.assertNotNull(outAnnotation, "outAnnotation was null");
System.out.printf("Annotation: %s = %s%n", outAnnotation.getTypeName(), outAnnotation.getValue("value"));
Asserts.assertEquals(outAnnotation, labelA, "Expected firstAnnotation == labelA");
}
示例8
public static void testEventFactoryExample() throws IOException {
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();
}
示例9
public static void main(String[] args) throws Exception {
EventType type = EventType.getEventType(CustomEvent.class);
SettingDescriptor annotatedType = Events.getSetting(type, "annotatedType");
Label al = annotatedType.getAnnotation(Label.class);
Asserts.assertNull(al); // we should not inherit annotation from type
Description ad = annotatedType.getAnnotation(Description.class);
Asserts.assertNull(ad); // we should not inherit annotation from type
Timestamp at = annotatedType.getAnnotation(Timestamp.class);
Asserts.assertNull(at); // we should not inherit annotation from type
SettingDescriptor newName = Events.getSetting(type, "newName");
Label nl = newName.getAnnotation(Label.class);
Asserts.assertEquals(nl.value(), "Annotated Method");
Description nd = newName.getAnnotation(Description.class);
Asserts.assertEquals(nd.value(), "Description of an annotated method");
Timespan nt = newName.getAnnotation(Timespan.class);
Asserts.assertEquals(nt.value(), Timespan.NANOSECONDS);
}
示例10
public static void main(String[] args) throws Exception {
// Event
EventType t = EventType.getEventType(LabelEvent.class);
Asserts.assertEquals(t.getLabel(), "Event Label", "Incorrect label for event");
// Field
ValueDescriptor field = t.getField("labledField");
Asserts.assertEquals(field.getLabel(), "Field Label", "Incorrect label for field");
// Annotation
AnnotationElement awl = Events.getAnnotationByName(t, AnnotionWithLabel.class.getName());
Label label = awl.getAnnotation(Label.class);
Asserts.assertEquals(label.value(), "Annotation Label", "Incorrect label for annotation");
// Setting
for (SettingDescriptor v: t.getSettingDescriptors()) {
if (v.getName().equals("dummy")) {
Label settingLabel = v.getAnnotation(Label.class);
Asserts.assertEquals(settingLabel.value(), "Setting Label", "Incorrect label for setting");
}
}
}
示例11
public static void main(String[] args) throws Throwable {
ValueDescriptor vdSimple = new ValueDescriptor(String.class, "message");
Asserts.assertNull(vdSimple.getAnnotation(Label.class), "Expected getAnnotation()==null");
Asserts.assertEquals(0, vdSimple.getAnnotationElements().size(), "Expected getAnnotations().size() == 0");
// Add labelA and verify we can read it back
List<AnnotationElement> annos = new ArrayList<>();
AnnotationElement labelA = new AnnotationElement(Label.class, "labelA");
annos.add(labelA);
System.out.println("labelA.getClass()" + labelA.getClass());
ValueDescriptor vdComplex = new ValueDescriptor(String.class, "message", annos);
final Label outLabel = vdComplex.getAnnotation(Label.class);
Asserts.assertFalse(outLabel == null, "getLabel(Label.class) was null");
System.out.println("outLabel.value() = " + outLabel.value());
// Get labelA from getAnnotations() list
Asserts.assertEquals(1, vdComplex.getAnnotationElements().size(), "Expected getAnnotations().size() == 1");
final AnnotationElement outAnnotation = vdComplex.getAnnotationElements().get(0);
Asserts.assertNotNull(outAnnotation, "outAnnotation was null");
System.out.printf("Annotation: %s = %s%n", outAnnotation.getTypeName(), outAnnotation.getValue("value"));
Asserts.assertEquals(outAnnotation, labelA, "Expected firstAnnotation == labelA");
}
示例12
public static void testEventFactoryExample() throws IOException {
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();
}
示例13
private Type createType(Attributes attributes, boolean eventType, long typeId, boolean contantPool) {
String labelAttribute = ATTRIBUTE_LABEL;
String id = attributes.getValue(ATTRIBUTE_ID);
String path = attributes.getValue(ATTRIBUTE_PATH);
String builtInType = attributes.getValue(ATTRIBUTE_BUILTIN_TYPE);
String jvmType = attributes.getValue(ATTRIBUTE_JVM_TYPE);
String typeName = makeTypeName(id, path);
Type t;
if (eventType) {
t = new PlatformEventType(typeName, typeId, false, true);
} else {
t = new Type(typeName, null, typeId, contantPool);
}
typedef.put(id, typeName);
if (contantPool) {
labelAttribute = ATTRIBUTE_HR_NAME; // not "label" for some reason?
if (builtInType != null) {
typedef.put(builtInType, typeName);
}
if (jvmType != null) {
typedef.put(jvmType, typeName);
}
}
ArrayList<AnnotationElement> aes = new ArrayList<>();
if (path != null) {
aes.add(new AnnotationElement(Category.class, makeCategory(path)));
}
String label = attributes.getValue(labelAttribute);
if (label != null) {
aes.add(new AnnotationElement(Label.class, label));
}
String description = attributes.getValue(ATTRIBUTE_DESCRIPTION);
if (description != null) {
aes.add(new AnnotationElement(Description.class, description));
}
aes.trimToSize();
t.setAnnotations(aes);
return t;
}
示例14
static void addImplicitFields(Type type, boolean requestable, boolean hasDuration, boolean hasThread, boolean hasStackTrace, boolean hasCutoff) {
createAnnotationType(Timespan.class);
createAnnotationType(Timestamp.class);
createAnnotationType(Label.class);
defineType(long.class, null,false);
addFields(type, requestable, hasDuration, hasThread, hasStackTrace, hasCutoff);
}
示例15
private static List<AnnotationElement> createStandardAnnotations(String name, String description) {
List<AnnotationElement> annotationElements = new ArrayList<>(2);
annotationElements.add(new jdk.jfr.AnnotationElement(Label.class, name));
if (description != null) {
annotationElements.add(new jdk.jfr.AnnotationElement(Description.class, description));
}
return annotationElements;
}
示例16
public String getLabel() {
Label label = getAnnotation(Label.class);
if (label == null) {
return null;
}
return label.value();
}
示例17
@SettingDefinition
@Name("newName")
@Label(ANNOTATED_METHOD)
@Description(DESCRIPTION_OF_AN_ANNOTATED_METHOD)
@Timespan(Timespan.NANOSECONDS)
public boolean whatever(AnnotatedSetting s) {
return true;
}
示例18
@SettingDefinition
@Name("protectedBase")
@Label("Protected Base")
@Description("Description of protected base")
@Frequency
protected boolean something(PlainSetting control) {
return true;
}
示例19
@Name("baseName")
@Label("Base Label")
@Description("Base description")
@SettingDefinition
public boolean overridden(AnnotatedSetting control) {
return true;
}
示例20
public static void main(String[] args) throws Throwable {
EventType type = EventType.getEventType(MyEvent.class);
Label label = type.getAnnotation(Label.class);
if (label == null) {
Asserts.fail("Annotation label was null");
}
Asserts.assertEquals(label.value(), "myLabel", "Wrong value for annotation label");
Category category = type.getAnnotation(Category.class);
if (category == null) {
Asserts.fail("Annotation @Description was null");
}
Asserts.assertTrue(Arrays.equals(category.value(), new String[] {"Stuff"}), "Wrong value for annotation enabled");
Description description = type.getAnnotation(Description.class);
if (description != null) {
Asserts.fail("Annotation description should be null");
}
try {
type.getAnnotation(null);
Asserts.fail("No exception when getAnnotation(null)");
} catch(Exception e) {
// Expected exception
}
}
示例21
@SettingDefinition
@Name("newName")
@Label(ANNOTATED_METHOD)
@Description(DESCRIPTION_OF_AN_ANNOTATED_METHOD)
@Timespan(Timespan.NANOSECONDS)
public boolean whatever(AnnotatedSetting s) {
return true;
}
示例22
@SettingDefinition
@Name("protectedBase")
@Label("Protected Base")
@Description("Description of protected base")
@Frequency
protected boolean something(PlainSetting control) {
return true;
}
示例23
@Name("baseName")
@Label("Base Label")
@Description("Base description")
@SettingDefinition
public boolean overridden(AnnotatedSetting control) {
return true;
}
示例24
static void addImplicitFields(Type type, boolean requestable, boolean hasDuration, boolean hasThread, boolean hasStackTrace, boolean hasCutoff) {
createAnnotationType(Timespan.class);
createAnnotationType(Timestamp.class);
createAnnotationType(Label.class);
defineType(long.class, null,false);
addFields(type, requestable, hasDuration, hasThread, hasStackTrace, hasCutoff);
}
示例25
private static List<AnnotationElement> createStandardAnnotations(String name, String description) {
List<AnnotationElement> annotationElements = new ArrayList<>(2);
annotationElements.add(new jdk.jfr.AnnotationElement(Label.class, name));
if (description != null) {
annotationElements.add(new jdk.jfr.AnnotationElement(Description.class, description));
}
return annotationElements;
}
示例26
public String getLabel() {
Label label = getAnnotation(Label.class);
if (label == null) {
return null;
}
return label.value();
}
示例27
@SettingDefinition
@Name("newName")
@Label(ANNOTATED_METHOD)
@Description(DESCRIPTION_OF_AN_ANNOTATED_METHOD)
@Timespan(Timespan.NANOSECONDS)
public boolean whatever(AnnotatedSetting s) {
return true;
}
示例28
@SettingDefinition
@Name("protectedBase")
@Label("Protected Base")
@Description("Description of protected base")
@Frequency
protected boolean something(PlainSetting control) {
return true;
}
示例29
@Name("baseName")
@Label("Base Label")
@Description("Base description")
@SettingDefinition
public boolean overridden(AnnotatedSetting control) {
return true;
}
示例30
public static void main(String[] args) throws Throwable {
EventType type = EventType.getEventType(MyEvent.class);
Label label = type.getAnnotation(Label.class);
if (label == null) {
Asserts.fail("Annotation label was null");
}
Asserts.assertEquals(label.value(), "myLabel", "Wrong value for annotation label");
Category category = type.getAnnotation(Category.class);
if (category == null) {
Asserts.fail("Annotation @Description was null");
}
Asserts.assertTrue(Arrays.equals(category.value(), new String[] {"Stuff"}), "Wrong value for annotation enabled");
Description description = type.getAnnotation(Description.class);
if (description != null) {
Asserts.fail("Annotation description should be null");
}
try {
type.getAnnotation(null);
Asserts.fail("No exception when getAnnotation(null)");
} catch(Exception e) {
// Expected exception
}
}