The DS spec does not require you to specify both bind and unbind. So the 
ProSyst implementation is incorrect in this respect.

BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
[EMAIL PROTECTED]

office: +1 386 848 1781
mobile: +1 386 848 3788




Peter Kriens <[EMAIL PROTECTED]> 
02/23/2007 02:32 AM
Please respond to
felix-dev@incubator.apache.org


To
"Steven E. Harris" <[EMAIL PROTECTED]>
cc
felix-dev@incubator.apache.org
Subject
Re: Bundle plugin/BND question -- Service-Component header






It turned out that the ProSyst implementation of Declarative Services
threw an exception if there was a bind method and no unbind method. I
think this is wrong, but I was not up for a fight about it so I added
the unbind method. I'll update the documentation to reflect this.

I find it is no real problem to not implement the unbind method even
though it is i the XML file.

Kind regards,

     Peter Kriens
 



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

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

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

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

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

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

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

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

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

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

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


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



-- 
Peter Kriens                              Tel +33467542167
9C, Avenue St. Drézéry                    AOL,Yahoo: pkriens
34160 Beaulieu, France                    ICQ 255570717
Skype pkriens                             Fax +1 8153772599



Reply via email to