<Beans Dev>  Review Request: 8146313 The java.beans.Statement.invoke() method handles 3-arg Class.forName incorrectly
semyon.sadetsky at oracle.com
Tue Apr 26 07:01:40 UTC 2016
On 4/25/2016 10:14 PM, Sergey Bylokhov wrote:
> 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.
I did not ask to compare with the Class.forName(). In your change the
primitive types handled differently in case 3-args forName() in
comparison with the 1-arg. So that, this test case is required to prove
that the method can work with primitive types in the proposed way. Or
you meant that it must not work with primitives?
>> On 4/22/2016 7:20 PM, Sergey Bylokhov wrote:
>>> 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
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8146313
>>> Webrev can be found at:
More information about the beans-dev