On Sun, 20 Aug 2023 21:17:18 GMT, Nir Lisker <[email protected]> wrote:
>> Andy Goryachev has updated the pull request incrementally with one
>> additional commit since the last revision:
>>
>> review comments
>
> modules/javafx.controls/src/test/java/test/javafx/scene/control/ControlPropertiesTest.java
> line 232:
>
>> 230: private String err(Method method, String message) {
>> 231: return method + " " + message;
>> 232: }
>
> (This comment didn't appear in the review for some reason.)
>
> I think that the code could be a bit more clean. I took a stab at it:
>
>
> Set<Class<?>> CLASSES = Set.of(/*...*/);
>
> private void check(Class<?> cls) {
> Map<String, Method> methods =
> Stream.of(cls.getMethods()).collect(Collectors.toMap(Method::getName, m ->
> m)); // the loop is also fine
>
> for (var method : methods.values()) {
> String name = method.getName();
> if (name.endsWith("Property")) {
> checkModifiers(method);
>
> String propName = name.substring(0, name.length() -
> "Property".length());
> check(methods, propName, "get", 0);
> check(methods, propName, "set", 1);
> check(methods, propName, "is", 0);
> }
> }
> }
>
> private void check(Map<String, Method> methods, String name, String
> prefix, int numArgs) {
> String methodName = new StringJoiner("", prefix, name.substring(0,
> 1).toUpperCase() + name.substring(1)).toString();
>
> Method m = methods.get(methodName);
> if (m != null && m.getParameterCount() == numArgs) {
> checkModifiers(m);
> }
> }
>
> private void checkModifiers(Method m) {
> int mod = m.getModifiers();
> if (Modifier.isPublic(mod) && !Modifier.isFinal(mod)) {
> if (FAIL_FAST) {
> throw new AssertionError(errorMessage(m));
> } else {
> System.err.println(errorMessage(m));
> }
> }
> }
>
> private String errorMessage(Method method) {
> return method + "is not final";
> }
Thank you for suggestions!
Frankly, I don't see much value in rewriting of this method. A more
interesting problem is how to enumerate all descendants of the Control class
using the package name, in such a way that will reliably work in an IDE, from a
JAR, or in any test framework (jtreg or otherwise).
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1213#discussion_r1300278200