[ https://issues.apache.org/jira/browse/FELIX-5139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15065690#comment-15065690 ]
David Jencks commented on FELIX-5139: ------------------------------------- Sean -- the field type is valid only if FieldOption is Update, which bnd does not appear to have computed correctly, at least it's not in his <reference>. So I don't yet see a bug in felix ds, just problems in bnd. > SCR logs errors for reference but works as expected > --------------------------------------------------- > > Key: FELIX-5139 > URL: https://issues.apache.org/jira/browse/FELIX-5139 > Project: Felix > Issue Type: Bug > Components: Declarative Services (SCR), Maven Bundle Plugin > Affects Versions: scr-2.0.2, maven-bundle-plugin-3.0.1 > Reporter: Oliver Lietz > > When annotating a field like below with {{bind}} and {{unbind}} I don't > expect SCR to act on the field directly but using named {{bind}} and > {{unbind}} methods instead (which is the case indeed). > {noformat} > @Reference( > service = FooService.class, > cardinality = ReferenceCardinality.AT_LEAST_ONE, > policy = ReferencePolicy.DYNAMIC, > bind = "addFooService", > unbind = "removeFooService" > ) > private final Set<FooService> fooServices = new > LinkedHashSet<FooService>(); > protected synchronized void addFooService(final FooService fooService) { > fooServices.add(fooService); > // operate on fooServices > } > protected synchronized void removeFooService(final FooService fooService) > { > fooServices.remove(fooService); > // operate on fooServices > } > {noformat} > Nevertheless SCR logs errors at runtime when binding services: > {noformat} > [...] | ERROR | xFrameworkWiring | [...] | [[...]] Field fooServices in > component class [...] must be declared volatile to handle a dynamic reference > [...] | ERROR | xFrameworkWiring | [...] | [[...]] Field fooServices in > component class [...] has unsupported type java.util.Set. It must be one of > java.util.Collection or java.util.List. > [...] | ERROR | xFrameworkWiring | [...] | [[...]] Field fooServices in > component class [...] must not be declared as final > {noformat} > The reference in SCR Component descriptor contains the attribute {{field}} > (which is likely the cause for the errors): > {noformat} > <reference name="fooServices" cardinality="1..n" policy="dynamic" > interface="FooService" bind="addFooService" unbind="removeFooService" > field="fooServices"/> > {noformat} > If the combination of reference attributes as above is illegal, Maven Bundle > Plugin should log the errors at compile time instead and break the build. -- This message was sent by Atlassian JIRA (v6.3.4#6332)