[ https://issues.apache.org/jira/browse/FELIX-5139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15057722#comment-15057722 ]
Carsten Ziegeler commented on FELIX-5139: ----------------------------------------- [~olli] I think the same checks that the SCR implementation does should be done by bnd lib. > 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)