Creating objects of different classes based on configuration data is not supported by Declarative Services. The DS runtime always instantiates the class named in the "implementation" element.
You will need to drop down to the ServiceTracker API to achieve what you are trying to do. Neil Sent from my BlackBerry On 19 Nov 2010, at 09:04, Martin Ždila <[email protected]> wrote: > Hello > > We are using Managed Service Factory in Declarative Services to create one > component for every configuration. This works perfectly if the component we > want to register is exactly of the class specified in the <implementation > class="..."/>. > But sometimes we need a factory to create the component of different > implementation type. For example we want to register componend that is of the > java.security.cert.Certificate subtype according to the configuration > properties like: > - certificate type (eg. X509) (this defines the real type) > - certificate (in PEM format) > - security provider name > > There may be multiple certificates registered - every with the different > properties. We can't do <implementation > class="java.security.cert.Certificate"/> because this class can't configure > itself from the properties. Also the real implementation can be > sun.security.x509.X509CertImpl or different class according to the > "certificate type" configuration property. > > We checked the usage of Component Factory (factory="...") and Service Factory > (servicefactory="...") but none seems to solve our problem. One solution is > to use delegator design pattern, but it is too cumbersome. Is there some > transparent way to achieve our needs using Declarative Services so that > consumer component will only use <reference > interface="java.security.cert.Certificate" bind="setCertificate" > target="..."/> ? > > Thanks in advance > Best regards > -- > Ing. Martin Ždila > tel:+421-908-363-848 > mailto:[email protected] > http://www.zdila.sk/ > _______________________________________________ > OSGi Developer Mail List > [email protected] > https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
