[ 
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.

Reply via email to