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