[ https://issues.apache.org/jira/browse/TUSCANY-2289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12604607#action_12604607 ]
Dan Becker commented on TUSCANY-2289: ------------------------------------- The way I read these rules are: Proposition A: Properties may also be injected via public setter methods (The extra information clause "even when the @Property annotation is not present" is not needed, it is just amplifying that present or not present @Property annotation is OK.) Proposition B: The @Property annotation must be used in order to inject a property onto a non-public field. The rules use the word "injection for both @Property annotation and public setter methods, so: Gilbert, there can be injection with a protected setter, if you use the @Property annotation. Vamsi, you are correct, you can use a protected setter, if you use the @Property annotation. The rules seem a little ambiguous because they don't distinguish the @Property annotation on the method versus on the instance variable. Given "properties are injected into unannotated protected fields too" , it sounds to me that this could be legal if you have had @Property(name="currency", required=true) protected void setCurrency( String theCurrency ); and protected String currency; An example on line 1376 shows how you can have an unannotated field and an annotated setter. > Java runtime should not inject property into an unannotated non-public field > by protected setter > ------------------------------------------------------------------------------------------------ > > Key: TUSCANY-2289 > URL: https://issues.apache.org/jira/browse/TUSCANY-2289 > Project: Tuscany > Issue Type: Bug > Components: Java SCA Core Runtime > Affects Versions: Java-SCA-Next > Reporter: Gilbert Kwan > Assignee: Simon Laws > Fix For: Java-SCA-Next > > > Java Common Annotations and APIs v1.0 - Sec 1.8.13: > 1349 Properties may also be injected via public setter methods even when the > @Property annotation is not > 1350 present. However, the @Property annotation must be used in order to > inject a property onto a non-public > 1351 field. In the case where there is no @Property annotation, the name of > the property is the same as the > 1352 name of the field or setter. > Currently the properties are injected into unannotated protected fields too. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.