Appears like unannotated protected fields computed as properties also have the same problem.
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. ++Vamsi On Mon, Apr 7, 2008 at 12:26 AM, Vamsavardhana Reddy <[EMAIL PROTECTED]> wrote: > PART-1: > The Java Annotations&APIs specification Lines 1407, 1408, 1409, 1410 ... > * References may also be injected via public setter methods even when > the > * "@Reference" annotation is not present. However, the "@Reference" > * annotation must be used in order to inject a reference onto a non > public > * field. In the case where there is no "@Reference" annotation, the > name of > * the reference is the same as the name of the field or setter. > > This means a reference can not be injected onto a protected field without > an @Reference annotation. > > PART-2: > Java Component Implementation Specification - Section 1.2.7 line 358 to > 365: > 358 1.2.7. Semantics of an Unannotated Implementation > 359 The section defines the rules for determining properties and > references for a Java component > 360 implementation that does not explicitly declare them using @Reference > or @Property. > 361 In the absence of @Property and @Reference annotations, the properties > and references of a class are > 362 defined according to the following rules: > 363 1. Public setter methods that are not included in any interface > specified by an @Service annotation. > 364 2. Protected setter methods > 365 3. Public or protected fields unless there is a public or protected > setter method for the same name > > This means a protected field could end up as a reference in an unannotated > implementation. But from PART-1 above, a reference can not be injected > unless an @Reference annotation is present on a protected field!!! How will > a protected field computed as a reference for an unannotated implementation > get its value set? > > What am I missing? > > ++Vamsi >
