Hi Kevin, all, 

attached please find an updated patch and my replies to Kevin’s comments at 
https://bugs.openjdk.java.net/browse/JDK-8088147:

> build.gradle 
> 
> 1. In the following: 
> 
> + if (IS_JIGSAW_TEST) { 
> + enabled = false // FIXME: JIGSAW -- support this with modules 
> + logger.info("JIGSAW Testing disabled for swt") 
> 
> I verified that it correctly skips this in JIGSAW mode. Can you look into 
> implementing this, though? It should not be difficult, and once we switch to 
> only supporting Jigsaw mode the tests will never be run until this is done. 
> If it does turn out to be too much work, then we could consider it as a 
> follow-on. 
> 

As already indicated in an earlier mail I would prefer to treat building up 
JIGSAW tests as a follow-on. I have not gained much experience with JIGSAW yet, 
but I would be willing to support this as far as I can. The problem I currently 
see is that SWT is still an automatic module, and JIGSAW-based SWT tests would 
have to access code from the swt-debug.jar, which is as well an automatic 
module. AFAIK, we would have to turn SWT into a named module first in order to 
make swt-debug.jar available on its module path. That seems to be out of scope 
here and should probably be investigated in an own issue.

> 2. Platform logic: 
> 
> + if(IS_MAC){ 
> + enabled = false 
> ... 
> + } 
> + if(IS_LINUX){ 
> 
> Normally we would handle this in the test itself by using assumeTrue and 
> platform checks. In this case, though, since it applies to all SWT tests run 
> on Mac (or Linux in case of the warning), this seems fine. 
> 
> Please fix the spacing to match our coding conventions, though. There should 
> be a space after the 'if' and a space before the '{'. So: 
> 
>     if (IS_MAC) { 

Ok. fine. We could even try to get SWT tests working on Mac by falling back to 
ant-based test execution here, but I would propose to handle this in a 
different issue as well (after all, this issue is about SWT image cursors and 
not about building up an SWT test harness).

> modules/swt/src/main/java/javafx/embed/swt/SWTCursors.java 
> 
> 3. Spacing issues: 
> 
> + if(display == null){ 
> 
> Please add a space after '(' and before '}' 
> 
> 
> -} 
> +} 
> \ No newline at end of file 
> 
> Please restore the newline after the last line. 

Done.

> SWTCursorsTest.java 
> 
> 4. Need a blank line before the package declaration: 
> 
> + */ 
> +package test.javafx.embed.swt; 
> +

Done.

> 5. Can you sort the imports alphabetically? 

I organized the imports and removed unused ones. It seems they are pretty much 
consistent with those of the other SWT classes.


> 6. Since the test loops waiting on a latch, please add a 10 second timeout 
> for the test: 
> 
>     @Test(timeout=10000) 
>     public void testImageCursor() throws Throwable { 

Done.

> SWTImageCursorTest.java 
> 
> 7. The following can use a lambda (as the setOnMouseEntered already did). 
> 
> + rect.setOnMouseExited(new EventHandler<MouseEvent>() { 
> + @Override 
> + public void handle(MouseEvent event) { 
> + scene.setCursor(null); 
> + } 
> + });

Done.

Kevin, thanks for picking this up.

Regards,
Alexander


> Am 27.07.2016 um 01:15 schrieb Kevin Rushforth <kevin.rushfo...@oracle.com>:
> 
> Picking this back up again, I have just added my comments to JBS issue.
> 
> https://bugs.openjdk.java.net/browse/JDK-8088147
> 
> The comments are minor in scope, so I suspect it will be ready for final 
> review after one more iteration. It will need one other reviewer, since I am 
> sponsoring the change.
> 
> Could someone else review this as well (maybe Alexander Z or Sergey)?
> 
> -- Kevin
> 
> 
> Kevin Rushforth wrote:
>> I'm back, and given that the review will take some time anyway, I will 
>> sponsor this once the review is complete. I see that Guru uploaded the patch 
>> for you (thanks, Guru) so I can test it next week.
>> 
>> -- Kevin
>> 
>> 
>> Alexander Nyssen wrote:
>>> It seems I was unsuccessful again. If somebody would be willing to sponsor 
>>> this contribution while Kevin is away (or at least update the patch 
>>> provided for JDK-8088147), I could mail the patch privately.
>>> 
>>> Regards,
>>> Alexander
>>> 
>>> 
>>>> Am 11.07.2016 um 19:59 schrieb Alexander Nyssen <alexan...@nyssen.org>:
>>>> 
>>>> It seems my attachment has again been ‚consumed‘ by the list. Trying again 
>>>> with an archive containing the patch file.
>>>> 
>>>> Regards,
>>>> Alexander
>>>> 
>>>> 
>>>>   
>>>>> Am 08.07.2016 um 23:28 schrieb Alexander Nyssen <alexan...@nyssen.org>:
>>>>> 
>>>>> Hi Kevin, all,
>>>>> attached please find a revised patch, where I have added the required 
>>>>> export to PlatformImpl and have fixed the build script, so it does no 
>>>>> longer break when being executed in jigsaw mode.
>>>>> As swt is no named module yet, I have disabled the JUnit test in jigsaw 
>>>>> mode for now. We would probably have to set up swt as a named module to 
>>>>> enable this, and would further have to make swt-debug.jar available as an 
>>>>> automated module on its module path. But this is a different problem.
>>>>> 
>>>>> Regards,
>>>>> Alexander
>>>>> 
>>>>> 
>>>>>     
>>>>>> Am 30.06.2016 um 12:14 schrieb Alexander Nyssen <alexan...@nyssen.org>:
>>>>>> 
>>>>>> Hi Kevin,
>>>>>> 
>>>>>>       
>>>>>>> Am 30.06.2016 um 01:20 schrieb Kevin Rushforth 
>>>>>>> <kevin.rushfo...@oracle.com>:
>>>>>>> 
>>>>>>> Hi Alexander,
>>>>>>> 
>>>>>>> I attached the patch to the bug:
>>>>>>> 
>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8088147
>>>>>>> 
>>>>>>> If I build it and run the manual test in "legacy" mode, meaning run 
>>>>>>> everything with 9+109 and the legacy jfxrt.jar file, then it runs and 
>>>>>>> the cursor now changes. So this looks like a good starting point for a 
>>>>>>> fix.
>>>>>>>          
>>>>>> Fine.
>>>>>> 
>>>>>>       
>>>>>>> I tried building and running this in Jigsaw mode (building with 
>>>>>>> jdk-9+109, but running the tests with a more recent JDK that includes 
>>>>>>> modularization support), and noticed two problems right away that must 
>>>>>>> be addressed:
>>>>>>> 
>>>>>>> 1. The unit tests for SWT are missing some of the jigsaw test tasks so 
>>>>>>> the build fails right away with an exception from gradle:
>>>>>>> 
>>>>>>>         
>>>>>>>> Task with name 'jigsawTestsLinux' not found in project ':swt'.
>>>>>>>>            
>>>>>>> Wiring up SWT-based tests to our unit test harness will take a bit more 
>>>>>>> work than what you have provided (not even counting the Mac issue, 
>>>>>>> which could be handled by excluding the test on Mac). In the short 
>>>>>>> term, relying on manual tests for this fix might be best.
>>>>>>> 
>>>>>>>          
>>>>>> I did not execute the tests in jigsaw mode yet, because other tests 
>>>>>> failed in this mode, too (as indicated in an earlier discussion). I will 
>>>>>> try to set things up in a virtual machine with Windows and/or Linux so I 
>>>>>> can work on the Gradle tests without having to deal with the Mac issue. 
>>>>>> The test harness will IMHO also be required for other contributions, and 
>>>>>> it would of course be fine if the automated test, I included in this 
>>>>>> patch, could be executed as well.
>>>>>> 
>>>>>>       
>>>>>>> 2. You have introduced a dependency on a new internal package, 
>>>>>>> com.sun.javafx.tk. If this is required in order to implement the fix, 
>>>>>>> then you will need to add this package to the list of packages exports 
>>>>>>> to javafx.swt in PlatformImpl; otherwise the following exception is 
>>>>>>> thrown at runtime:
>>>>>>> 
>>>>>>> Exception in thread "JavaFX Application Thread" 
>>>>>>> java.lang.IllegalAccessError: class javafx.embed.swt.SWTCursors (in 
>>>>>>> module javafx.swt) cannot access class com.sun.javafx.tk.Toolkit (in 
>>>>>>> module javafx.graphics) because module javafx.graphics does not export 
>>>>>>> com.sun.javafx.tk to module javafx.swt
>>>>>>>          
>>>>>> This dependency is required unless there is public API to convert a 
>>>>>> platform image (which is provided by the image cursor frame) to an 
>>>>>> image. To me, Image image = 
>>>>>> Toolkit.getImageAccessor().fromPlatformImage(cursorFrame.getPlatformImage());
>>>>>>  
>>>>>> seemed to be the way to go. I will thus add the respective export in a 
>>>>>> revised patch.
>>>>>> 
>>>>>>       
>>>>>>> I won't have time to sponsor this change until the second half of July, 
>>>>>>> but if others have time, the review can proceed and I'll pick it back 
>>>>>>> up then if it is in good enough shape to run.
>>>>>>>          
>>>>>> Especially setting up the SWT test harness will be kind of a blocker for 
>>>>>> succeeding contributions, so it would be nice if somebody could step in.
>>>>>> 
>>>>>> Regards,
>>>>>> Alexander
>>>>>> 
>>>>>>       
>>>>>>> -- Kevin
>>>>>>> 
>>>>>>> 
>>>>>>> Kevin Rushforth wrote:
>>>>>>>         
>>>>>>>> Hi Alexander,
>>>>>>>> 
>>>>>>>> It looks like your patch was stripped out by the mailing list server.
>>>>>>>> 
>>>>>>>> Can you please send me the patch offline, as a zip file (so line 
>>>>>>>> endings are preserved across different systems), and I will unzip it 
>>>>>>>> and attach it to the bug report.
>>>>>>>> 
>>>>>>>> -- Kevin
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Alexander Nyssen wrote:
>>>>>>>>           
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> I have worked on a first contribution related to JDK-8088147. 
>>>>>>>>> Attached please find a patch (created in extended Git format) that 
>>>>>>>>> comprises the related changes. I have augmented the implementation of 
>>>>>>>>> javafx.embed.swt.SWTCursors to handle the image cursor case. I 
>>>>>>>>> further adjusted javafx.scene.Scene to update the cursor frame (in 
>>>>>>>>> addition to the cursor) within synchronizeSceneProperties, so the 
>>>>>>>>> cursor is not cleared in the first pulse succeeding the cursor 
>>>>>>>>> property change.
>>>>>>>>> I have added an automated JUnit test (SWTCursorsTest) to the swt 
>>>>>>>>> module, as well as a manual test (SWTImageCursorTest) to the 
>>>>>>>>> systemTests module, with which the proper behavior can be verified. 
>>>>>>>>> As no tests for SWT existed so far, I updated the build.gradle and 
>>>>>>>>> gradle.properties files to support an SWT_TEST option, which allows 
>>>>>>>>> to handle them similar to Swing tests. I also added the respective 
>>>>>>>>> SWT dependency to the systemTests module. Please note that the JUnit 
>>>>>>>>> test can currently not be executed using Gradle on the Mac (where the 
>>>>>>>>> manual test currently is the single option; the automated tests are 
>>>>>>>>> disabled), because there SWT-based tests require the 
>>>>>>>>> -XstartOnFirstThread option that is currently not supported by the 
>>>>>>>>> Gradle test runner (see https://issues.gradle.org/browse/GRADLE-3290 
>>>>>>>>> for details). We would have to use an ant task as a workaround.
>>>>>>>>> 
>>>>>>>>> Regards,
>>>>>>>>> Alexander
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>              
>>> 
>>>  

Reply via email to