Skip to content

Commit

Permalink
8308876: JFR: Deserialization of EventTypeInfo uses incorrect attribu…
Browse files Browse the repository at this point in the history
…te names

Reviewed-by: mgronlun
  • Loading branch information
egahlin committed May 27, 2023
1 parent bd113ee commit 5fdb22f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
* @since 9
*/
public final class EventTypeInfo {
private final List<SettingDescriptorInfo> settings;
private final List<SettingDescriptorInfo> settingDescriptors;
private final long id;
private final String name;
private final String description;
Expand All @@ -53,7 +53,7 @@ public final class EventTypeInfo {

// package private
EventTypeInfo(EventType eventType) {
this.settings = creatingSettingDescriptorInfos(eventType);
this.settingDescriptors = creatingSettingDescriptorInfos(eventType);
this.id = eventType.getId();
this.name = eventType.getName();
this.label = eventType.getLabel();
Expand All @@ -62,12 +62,20 @@ public final class EventTypeInfo {
}

private EventTypeInfo(CompositeData cd) {
this.settings = createSettings(cd.get("settings"));
if (cd.containsKey("settings")) {
this.settingDescriptors = createSettingDescriptors(cd.get("settings"));
} else {
this.settingDescriptors = createSettingDescriptors(cd.get("settingDescriptors"));
}
this.id = (long) cd.get("id");
this.name = (String) cd.get("name");
this.label = (String) cd.get("label");
this.description = (String) cd.get("description");
this.categoryNames = createCategoryNames((Object[]) cd.get("category"));
if (cd.containsKey("category")) {
this.categoryNames = createCategoryNames((Object[]) cd.get("category"));
} else {
this.categoryNames = createCategoryNames((Object[]) cd.get("categoryNames"));
}
}

private static List<String> createCategoryNames(Object[] array) {
Expand All @@ -87,7 +95,7 @@ private static List<SettingDescriptorInfo> creatingSettingDescriptorInfos(EventT
return Collections.unmodifiableList(settingDescriptorInfos);
}

private static List<SettingDescriptorInfo> createSettings(Object settings) {
private static List<SettingDescriptorInfo> createSettingDescriptors(Object settings) {
if (settings instanceof Object[] settingsArray) {
List<SettingDescriptorInfo> list = new ArrayList<>(settingsArray.length);
for (Object element : settingsArray) {
Expand Down Expand Up @@ -174,7 +182,7 @@ public String getDescription() {
* @see EventType#getSettingDescriptors()
*/
public List<SettingDescriptorInfo> getSettingDescriptors() {
return settings;
return settingDescriptors;
}

/**
Expand Down Expand Up @@ -229,11 +237,11 @@ public String toString() {
* <td>{@code String}</td>
* </tr>
* <tr>
* <th scope="row">category</th>
* <th scope="row">categoryNames</th>
* <td><code>ArrayType(1, SimpleType.STRING)</code></td>
* </tr>
* <tr>
* <th scope="row">settings</th>
* <th scope="row">settingDescriptors</th>
* <td>{@code javax.management.openmbean.CompositeData[]} whose element type
* is the mapped type for {@link SettingDescriptorInfo} as specified in the
* {@link SettingDescriptorInfo#from} method.</td>
Expand Down
5 changes: 3 additions & 2 deletions test/jdk/jdk/jfr/jmx/info/TestEventTypeInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,14 @@
* @summary Test for EventTypeInfo
* @requires vm.hasJFR
* @library /test/lib /test/jdk
* @run main/othervm jdk.jfr.jmx.info.TestEventTypeInfo
* @run main/othervm -Djdk.attach.allowAttachSelf=true -Dcom.sun.management.jmxremote jdk.jfr.jmx.info.TestEventTypeInfo
*/
public class TestEventTypeInfo {
public static void main(String[] args) throws Throwable {
FlightRecorder jfr = FlightRecorder.getFlightRecorder();

FlightRecorderMXBean bean = JmxHelper.getFlighteRecorderMXBean();
long selfPID = JmxHelper.getPID();
FlightRecorderMXBean bean = JmxHelper.getFlighteRecorderMXBean(selfPID);
List<EventTypeInfo> typeInfos = bean.getEventTypes();

Map<String, EventType> types = new HashMap<>();
Expand Down

1 comment on commit 5fdb22f

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.