RFR: 8347826: Introspector shows wrong method list after 8071693 [v12]

Sergey Bylokhov serb at openjdk.org
Wed Apr 9 02:26:38 UTC 2025


On Thu, 3 Apr 2025 09:21:38 GMT, Roman Marchenko <rmarchenko at openjdk.org> wrote:

>> Fixed `com.sun.beans.introspect.MethodInfo#MethodOrder` to make `Introspector.addMethod()` working properly when filtering methods out.
>> 
>> Also, after PR discussion, added the approptiate test cases with corresponding fixes in MethodInfo.java and PropertyInfo.java.
>> 
>> ---------
>> `getMethodDescriptors()` returns descriptors of public methods of a class and its parent classes, including default and static methods defined in interfaces. The result doesn't include methods which were declared and not implemented, bridge methods, or methods which were overriden in subclasses.
>> 
>> When a subclass "overrides" a static method from a parent class `getMethodDescriptors()` behaves as follows:
>> 
>> - In case of a clash with a class method, the class version will take precedence rather than interface's one. 
>> - If the same method appears in multiple classes/interfaces within the same hierarchy, the version from the most specific sub-interface will be selected.
>> - If the method appears in classes/interfaces from different hierarchies, the result is undefined, either version can be returned.
>> 
>> `getPropertyDescriptors()` returns descriptors of methods which were identified as getters or setters. As there can be the only method getter/setter per property, the following rules are applied when choosing a getter/setter:
>> 
>> * Getters/setters for the same property defined (not necessarily overriden) in subclasses have higher precedence.
>> * If there are getters/setters for the same property defined in the same class and argument types are assignable one to another, the method with the Least Common Supertype has the lower priority. If argument types are not assignable, the result is undefined (any method will be chosen).
>> * Gettters/setters declared and not implemented are not considered.
>
> Roman Marchenko has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fixing review comments

I do not have any other comments, @aivanov-jdk please take a look.

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

Marked as reviewed by serb (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/23443#pullrequestreview-2751882390


More information about the client-libs-dev mailing list