<AWT Dev> [9] Review Request: 6815345 java.awt.Component.createImage(int width, int height) should remove behavioral optionality
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Thu Sep 24 16:42:40 UTC 2015
On 24.09.15 18:38, Semyon Sadetsky wrote:
>
>
> On 9/24/2015 4:58 PM, Sergey Bylokhov wrote:
>> The new version of the fix:
>> http://cr.openjdk.java.net/~serb/6815345/webrev.05
> You assumption can be broken with the next
>
> AWTAccessor.getComponentAccessor().setPeer(jbutton1,
> new ButtonPeer() {
> ...
> @Override
> public Image createImage(int width, int height) {
> return new BufferedImage(width, height,
> BufferedImage.TYPE_INT_RGB);
> }
> ...
> });
AWTAccessor is unspecified thing, it is a safer version of reflection
which can break lots of things if used incorrectly. This api is for
internal use only.
>
> Maybe it would be better to write about peer=null in the method spec?
peer is a private field it cannot be mentioned in the specification.
Or
> not to be that direct and leave the initial phrase mentioning isHeadless()?
>>
>> The headless case is covered, heavyweight components cannot be created
>> in such mode, so only lightweight buttons are checked.
>>
>> On 24.09.15 15:58, Semyon Sadetsky wrote:
>>>
>>>
>>> On 9/24/2015 3:25 PM, Sergey Bylokhov wrote:
>>>> On 24.09.15 11:36, Semyon Sadetsky wrote:
>>>>> Hi Sergey,
>>>>>
>>>>> isHeadless()=true must return null. If so please add the
>>>>> corresponding
>>>>> test case. It is not not obvious from the code.
>>>>
>>>> isHeadless()=true is headless mode where the frames are always not
>>>> displayable, so everything is similar to the current test except that
>>>> in headless the pack() will be throw an exception and second part of
>>>> the test in this mode is unnecessary.
>>> Then maybe simply do not call pack() for the headless test?
>>> Okay, let me rephrase what I meant. Since isHeadless()=true case is
>>> mentioned in those 3 specs so explicitly it must be guarantied that the
>>> specified behavior works for the case as described. I cannot trace the
>>> result by reading the code of the createImage(), isHeadless() method is
>>> not even called there. So the test case should be added. Or you could
>>> remove isHeadless() references from the specs. Or write something like
>>> "the result is non-deterministic if isHeadless() is not false..."
>>>>
>>>>>
>>>>> --Semyon
>>>>>
>>>>> On 9/23/2015 9:14 PM, Sergey Bylokhov wrote:
>>>>>> Hello.
>>>>>> Please review the fix for jdk9.
>>>>>> The specification is updated as suggested in JDK-6186530 and
>>>>>> JDK-6815345. The test is added to prove that we always return null
>>>>>> when the component is not displayable.
>>>>>>
>>>>>> ccc request will be created after the technical review. One
>>>>>> additional
>>>>>> bug filed https://bugs.openjdk.java.net/browse/JDK-8137047
>>>>>>
>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-6815345
>>>>>> Webrev can be found at:
>>>>>> http://cr.openjdk.java.net/~serb/6815345/webrev.04
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list