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!

Sangjin


On Mon, Jun 14, 2010 at 6:42 AM, BJ Hargrave <[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]* <[email protected]>
>
> office: +1 386 848 1781
> mobile: +1 386 848 3788
>
>
>
>
>
>
> From:        Sangjin Lee <[email protected]>
> To:        OSGi Developer Mail List <[email protected]>
> Date:        2010/06/10 14:01
> Subject:        [osgi-dev] [DS] ComponentFactory.newInstance with a
> dynamic property
> Sent by:        [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*<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]
> 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

Reply via email to