> 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:

  Restored the original order processing

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/23443/files
  - new: https://git.openjdk.org/jdk/pull/23443/files/980ebde5..431705a0

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=23443&range=12
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=23443&range=11-12

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/23443.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/23443/head:pull/23443

PR: https://git.openjdk.org/jdk/pull/23443

Reply via email to