Hi, On 14.06.2010 18:13, Sangjin Lee wrote: > Thanks. With the equinox DS (1.1.1.R35x_v20090806), however, I do get a > ComponentException saying that it is unable to resolve a service > instance (haven't tried felix yet). > > I have a complete proof-of-concept example that shows what I'm trying to > do, and hopefully you'd be able to see for yourself: http://bit.ly/dhnyfK. >
Thanks for the sample, which I quickly tested on Felix DS trunk, and to my surprise ;-) it worked .... (It doesn't seem to work on the latest release, though). Regards Felix > Thanks! > > Sangjin > > > On Mon, Jun 14, 2010 at 6:42 AM, BJ Hargrave <[email protected] > <mailto:[email protected]>> wrote: > > I don't see why this should not work. All you can do is refine one > of the target reference which must exist for the ComponentFactory to > be satisfied. So a service.target property passed to newInstance can > further refine the bound reference. > > It may be that the current implementations do not handle this, but > from a spec point of view, it should be supported. > -- > > *BJ Hargrave* > Senior Technical Staff Member, IBM > OSGi Fellow and CTO of the _OSGi Alliance_ <http://www.osgi.org/>_ > [email protected]_ <mailto:[email protected]> > > office: +1 386 848 1781 > mobile: +1 386 848 3788 > > > > > > > > From: Sangjin Lee <[email protected] <mailto:[email protected]>> > To: OSGi Developer Mail List <[email protected] > <mailto:[email protected]>> > Date: 2010/06/10 14:01 > Subject: [osgi-dev] [DS] ComponentFactory.newInstance with a > dynamic property > Sent by: [email protected] > <mailto:[email protected]> > ------------------------------------------------------------------------ > > > > I have a question on the behavior of ComponentFactory.newInstance() > when you inject a reference target dynamically. > > I have a factory component that has a unary mandatory reference to > some service, but the target is intentionally left blank (so I can > provide it dynamically). When I instantiate a specific instance, I > want to pass in a particular type so this specific instance can bind > to the right service instance. The code snippet is > at _http://bit.ly/dy8kFy_. > > I am basically adding a property for "service.target" = > "(type=foo)", so at runtime this binds specifically to a service > instance of type=foo. Will this pattern work? Also, if so, how does > ComponentFactory.newInstance() behave if that service is not > registered yet? Will it fail immediately or will it block/wait until > that particular service is registered? > > In a bigger context, I'm trying to see if I can use this pattern as > a way to "compel" a specific service with a type dynamically at > runtime. Is there a better pattern to compel a specific service type > dynamically? Thanks much! > > Regards, > Sangjin_______________________________________________ > > OSGi Developer Mail List > [email protected] <mailto:[email protected]> > https://mail.osgi.org/mailman/listinfo/osgi-dev > > > _______________________________________________ > OSGi Developer Mail List > [email protected] <mailto:[email protected]> > https://mail.osgi.org/mailman/listinfo/osgi-dev > > > > > _______________________________________________ > 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
