# HG changeset patch # User egahlin # Date 1562620256 -7200 # Node ID b72401c57125b0cb5b45b67b983723dc1a7cbdc7 # Parent bcbc53560c77df64f92a32b6d485e1d4e0d2bbfb Add ObjectContext class diff -r bcbc53560c77 -r b72401c57125 src/jdk.jfr/share/classes/jdk/jfr/consumer/ObjectContext.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.jfr/share/classes/jdk/jfr/consumer/ObjectContext.java Mon Jul 08 23:10:56 2019 +0200 @@ -0,0 +1,39 @@ +package jdk.jfr.consumer; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jdk.jfr.EventType; +import jdk.jfr.ValueDescriptor; + +final class ObjectContext { + private final Map contextLookup; + + final EventType eventType; + final List fields; + final TimeConverter timeConverter; + + public ObjectContext(EventType eventType, List fields, TimeConverter timeConverter) { + this.contextLookup = new HashMap<>(); + this.eventType = eventType; + this.fields = fields; + this.timeConverter = timeConverter; + } + + private ObjectContext(ObjectContext root, ValueDescriptor desc) { + this.eventType = root.eventType; + this.contextLookup = root.contextLookup; + this.timeConverter = root.timeConverter; + this.fields = desc.getFields(); + } + + public ObjectContext getInstance(ValueDescriptor desc) { + ObjectContext h = contextLookup.get(desc); + if (h == null) { + h = new ObjectContext(this, desc); + contextLookup.put(desc, h); + } + return h; + } +} \ No newline at end of file