RFR: 8264124: Update MXBean specification and implementation to extend mapping of CompositeType to records [v2]

Daniel Fuchs dfuchs at openjdk.java.net
Wed Mar 31 15:41:19 UTC 2021


On Mon, 29 Mar 2021 22:12:01 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

>> You add record in "Mappings for other types".  I think it deserves a separate section "Mappings for record classes" (maybe after primitive types).   It's useful to add a row for record in the summary table above "Mappings for primitive types"
>
> Link added. With respect to adding a section for records, it's a bit difficult to separate that from the "Mapping for other types" without a lot of duplication. I can add a row in the summary table, and then add a new section "Mapping for records" just before "Mapping for other types", that just gives a brief overview and refers to the mapping for other types below. 
> 
> Something like this - what do you think?
> 
>     <h3 id="records">Mappings for Records</h3>
> 
>     <p>A {@linkplain Record record} <em>R</em> whose {@linkplain
>       Class#getRecordComponents() components} are
>       all convertible to open types, is itself convertible to a
>       {@link CompositeType} as follows.
>       The type name of this {@code CompositeType}
>       is determined by the same <a href="#type-names">type name rules</a>
>       defined by the <a href="#composite-map">Mapping for other types</a>
>       below. Its getters are the accessors for the {@linkplain
>       RecordComponent record components}, and the record is reconstructed
>       using its canonical constructor, without needing any annotation.</p>
> 
>     <p>A record may also expose additional non-canonical constructors, which
>       can be used to reconstruct the record if the composite data does
>       not exactly contain all the components expected by the
>       canonical constructor. However, in order to be taken into account
>       by the MXBean framework, such non-canonical constructors
>       need to be annotated with either the {@link ConstructorParameters
>       @javax.management.ConstructorParameters} or
>      {@code @java.beans.ConstructorProperties} annotation.</p>
> 
>     <p>The complete rules for the mapping are detailed as part
>       of the <a href="#composite-map">Mapping for other types</a>
>       below.</p>
> 
>     <h3 id="composite-map">Mappings for other types</h3>
> 
>     <p>Given a record, or a Java class or interface <em>J</em> that does not match the other
>       rules in the table above, the MXBean framework will attempt to map
>       it to a {@link CompositeType} as follows.  [....]

Hi Mandy, I have updated the PR with a revised version of the text above. Is that more in line what you had in mind?

best regards,
-- daniel

-------------

PR: https://git.openjdk.java.net/jdk/pull/3201


More information about the serviceability-dev mailing list