<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
Mon Apr 25 19:14:45 UTC 2016


On 25.04.16 21:44, Semyon Sadetsky wrote:
> Could you add primitive class case to the test?

No, the test compares behavior of Statement and Class.forName() and 
checks that they works similarly(returns exactly the same classes), but 
the latter does not support primitive types(this is supported by the 
extension of Statement which calls single-args  Class.forName()) so we 
cannot compare results of such calls.

> 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