Good point, Jeremy.  I notice some strange-ness when I wrote it but
wasn't able to pin point the error.  Daniel also suggests to clarify
MonitorInfo as well.

Does this version look better?
     * Returns a {@code ThreadInfo} object represented by the
     * given {@code CompositeData}.
     * <a id="attributes"></a>
     * A {@code CompositeData} representing a {@code ThreadInfo} of
     * version <em>N</em> must contain all of the attributes defined
     * in version &le; <em>N</em> unless specified otherwise.
     * Same rule applies transitively to attributes whose type or
     * component type is {@code CompositeType}.
     * <p>
     * A {@code CompositeData} representing {@code ThreadInfo} of version
     * <em>N</em> contains {@code "stackTrace"} attribute representing
     * an array of {@code StackTraceElement} of version <em>N</em>.
     * The {@code "lockedMonitors"} attribute represents
     * an array of {@link MonitorInfo} of version <em>N</em>
     * which implies that its {@code "lockedStackFrame"} attribute also
     * represents {@code StackTraceElement} of the same version, <em>N</em>.
     * Otherwise, this method will throw {@code IllegalArgumentException}.


Mandy

On 2/27/18 9:56 AM, Jeremy Manson wrote:
Comment on new doc wording:


* A {@code CompositeData} representing a {@code ThreadInfo} of
* version <em>N</em> must contain all the attributes defined
* since <em>N</em> or earlier unless specified otherwise.

Wouldn't "all of the attributes defined since N or earlier" just mean "all of the attributes"?  "Since" is basically the same as "after".  Would "must contain all of the attributes for every version up to and including N" work?

Jeremy


Reply via email to