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

Semyon Sadetsky semyon.sadetsky at oracle.com
Tue May 10 16:57:56 UTC 2016



On 4/28/2016 3:21 PM, Sergey Bylokhov wrote:
> On 27.04.16 10:12, Semyon Sadetsky wrote:
>>> Yes it does not work for primitives, it not treated as some special
>>> method(like 1-args), it call 3-args Class.forName(which do not support
>>> the primitives) directly like any other methods.
>> What will happen if the 3-args is called with a primitive?
>
> 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?

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



More information about the beans-dev mailing list