[9] Review request: 8178015: Clarify requirement for app modules to export/open packages to javafx modules

Kevin Rushforth kevin.rushforth at oracle.com
Thu Apr 20 18:06:04 UTC 2017


Here is an updated webrev with a few suggested wording changes (e.g., 
removed the reference to ModuleDescriptor, changed "accessible by" back 
to "accessible to").

http://cr.openjdk.java.net/~kcr/8178015/webrev.02/

Additionally, I removed the example in the FXML annotation showing the 
use of "opens to" in module-info.java (but left the example in Application).

-- Kevin


Kevin Rushforth wrote:
>
>
> Mandy Chung wrote:
>>> On Apr 18, 2017, at 12:48 PM, Kevin Rushforth 
>>> <kevin.rushforth at oracle.com> wrote:
>>>
>>>
>>>
>>> Alan Bateman wrote:
>>>    
>>>> On 18/04/2017 19:19, Kevin Rushforth wrote:
>>>>      
>>>>> Good suggestion. Here is an updated webrev with Mandy's suggestion 
>>>>> and yours:
>>>>>
>>>>> http://cr.openjdk.java.net/~kcr/8178015/webrev.01/
>>>>>
>>>>> -- Kevin
>>>>>         
>>>> This looks mostly okay.
>>>>
>>>> I guess for FXML then I assume that the annotated member could be 
>>>> public, in which case the package just needs to be exported (no 
>>>> need to open).
>>>>       
>>> Yes, it could be, but the more typical use of the annotation is on 
>>> non-public members, so that was why I chose that as the example.
>>>     
>>
>> I have the same comment as Alan.  The example in the javadoc may be 
>> perceived as a recommendation.  We should probably recommend the 
>> annotated member be moved to public and encapsulated in its module, 
>> just exports it to javafx.fxml to use.    
>
> For the use of the FXML annotation, that is exactly the 
> recommendation. If you want the FXMLLoader to modify a public member 
> in a public class, you don't need the annotation at all (although I 
> guess it can still be used as useful documentation).
>
> In the longer "Introduction to FXML" doc, which is included with the 
> API docs and linked from the javafx.fxml package description, the only 
> examples we give of using the @FXML annotation are for non-public 
> members. See:
>
> http://download.java.net/java/jdk9/jfxdocs/javafx/fxml/doc-files/introduction_to_fxml.html#fxml_annotation 
>
>
> Specifically, the description of the FXML annotation says:
>
>    However, for developers who prefer more restricted visibility for
>    controller fields or handler methods, the javafx.fxml.FXML
>    annotation can be used. This annotation marks a protected or private
>    class member as accessible to FXML.
>
>
> For consistency, it seems best to show the example in the FXML 
> javadocs as an example of using "opens" since that is what would be 
> needed for the typical use case, such as those we document elsewhere.
>
> -- Kevin
>
>
>> Mandy


More information about the openjfx-dev mailing list