<Beans Dev> [9] Review Request: 8146313 The java.beans.Statement.invoke() method handles 3-arg Class.forName incorrectly

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu May 12 14:15:39 UTC 2016

On 10.05.16 19:57, Semyon Sadetsky wrote:
>> Same as Class.forName(): "java.lang.ClassNotFoundException: int"
> It is not obvious. You check package access for primitive types which is
> suspicious.
> You test the returning value to be in accordance with the
> Class.forName() spec. Why not to test the checked exception which are
> the part of the same spec?

Please review an updated version of the test, validation of the 
exception when an invalid data was passed is added.


> --Semyon
>>>>>>> On 4/22/2016 7:20 PM, Sergey Bylokhov wrote:
>>>>>>>> Hello.
>>>>>>>> Please review the fix for jdk9(the fix was discussed offline
>>>>>>>> already).
>>>>>>>> The Statement class can execute the methods and pass some
>>>>>>>> parameters
>>>>>>>> for them. It can be used to store the statement(method
>>>>>>>> call+parameter)
>>>>>>>> in xml and load it when necessary. This class has special case for
>>>>>>>> Class.forName() because it provides some additional features(for
>>>>>>>> example it uses a different class loaders and supports primitive
>>>>>>>> types). But it does not take into account that there is the second
>>>>>>>> 3-args forName() method. It was fixed in the change.
>>>>>>>> 3-args forName() method is considered as a usual method which
>>>>>>>> will be
>>>>>>>> executed for provided class+classloadder. The additional check for
>>>>>>>> package access is added. Note that I added a code to always
>>>>>>>> clone the
>>>>>>>> list of arguments just as an additional safeness for the future
>>>>>>>> changes.
>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8146313
>>>>>>>> Webrev can be found at:
>>>>>>>> http://cr.openjdk.java.net/~serb/8146313/webrev.03

Best regards, Sergey.

More information about the beans-dev mailing list