Integrated: 8264124: Update MXBean specification and implementation to extend mapping of CompositeType to records

Daniel Fuchs dfuchs at openjdk.java.net
Mon Apr 12 16:34:38 UTC 2021


On Thu, 25 Mar 2021 17:30:52 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

> This RFE proposes to extend the MXBean framework to define a mapping to records.
> 
> The MXBean framework already defines a mapping of `CompositeType` to plain java objects. Records are a natural representation of CompositeTypes. A record can be easily reconstructed from a `CompositeData` through the record canonical constructor. A clear advantage of records over plain java objects is that the canonical constructor will not need to be annotated in order to map composite data property names to constructor parameter names.
> 
> With this RFE, here is an example comparing coding a composite type `NamedNumber` that consists of an `int` and a `String`, using records and using a plain java class. In both case, the `CompositeType` looks like this:
> 
> 
> CompositeType(
>     "NamedNumber",                      // typeName
>     "NamedNumber",                      // description
>     new String[] {"number", "name"},    // itemNames
>     new String[] {"number", "name"},    // itemDescriptions
>     new OpenType[] {SimpleType.INTEGER,
>                     SimpleType.STRING}  // itemTypes
> );
> 
> 
> The plain Java class needs a public constructor annotated with `@ConstructorParameters` annotation:
> 
> 
> public class NamedNumber {
>     public int getNumber() {return number;}
>     public String getName() {return name;}
>     @ConstructorParameters({"number", "name"})
>     public NamedNumber(int number, String name) {
>         this.number = number;
>         this.name = name;
>     }
>     private final int number;
>     private final String name;
> }
> 
> 
> And the equivalent with a record class: 
> 
> 
> public record NamedNumber(int number, String name) {}

This pull request has now been integrated.

Changeset: d84a7e55
Author:    Daniel Fuchs <dfuchs at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/d84a7e55
Stats:     872 lines in 3 files changed: 838 ins; 12 del; 22 mod

8264124: Update MXBean specification and implementation to extend mapping of CompositeType to records

Reviewed-by: mchung, chegar, alanb

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

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


More information about the serviceability-dev mailing list