The BND documentation¹ states that a Service-Component reference with a
lowercase name provokes a bean-style "set" method to be mentioned in
the generated XML resource:

,----[ Service-Component Header section ]
| In that case the reference is augmented with a set<Name> method
| according to the standard bean rules. An unset<Name> method is added
| when the name appears in the list that is given to the dynamic
| directive.
`----

Note the second sentence, which says that a corresponding "unset"
method will be mentioned if the reference is noted as being of
"dynamic" policy.

Later the document states that the default policy is "static":

,----
| The defaults are therefore aligned with the SCR: a cardinality of
| 1..1, and static policy.
`----

However, I notice that with a maven-bundle-plugin directive like this:

  <Service-Component>com.foo.impl.BarImpl;
                     provide:=com.foo.Bar;
                     quux=com.foo.Quux</Service-Component>

The resulting OSGI-INF/com.foo.impl.BarImpl.xml file contains a
"reference" element like so:

    <reference name='quux'
               interface='com.foo.Quux'
               bind='setQuux'
               unbind='unsetQuux'/>

Note the presence of the "unbind" attribute. This conflicts with the
documentation above that states that the unbind method will only be
mentioned for "dynamic" policies.

Am I missing something, or is this a bug in BND?


Footnotes: 
¹ http://www.aqute.biz/Code/Bnd

-- 
Steven E. Harris

Reply via email to