Ok, let me ask a different way: Is there a way that I could use the new R6 service properties in target filters?
On Mon, Mar 9, 2015 at 11:20 AM, Raymond Auge <raymond.a...@liferay.com> wrote: > > > On Mon, Mar 9, 2015 at 11:13 AM, BJ Hargrave <hargr...@us.ibm.com> wrote: > >> Why not: >> >> @Component(name="MyFum") >> public class MyFum implements Fum { } >> >> @Component >> public class MyFoo implements Foo { >> @Reference(target = "(component.name=MyFum)") >> public void setFum(Fum fum) {..} >> } >> > > What if Fum isn't a component? > > >> -- >> >> *BJ Hargrave* >> Senior Technical Staff Member, IBM >> OSGi Fellow and CTO of the *OSGi Alliance* <http://www.osgi.org/> >> *hargr...@us.ibm.com* <hargr...@us.ibm.com> >> >> office: +1 386 848 1781 >> mobile: +1 386 848 3788 >> >> >> >> >> >> From: Raymond Auge <raymond.a...@liferay.com> >> To: OSGi Developer Mail List <osgi-dev@mail.osgi.org> >> Date: 2015/03/09 11:08 >> Subject: Re: [osgi-dev] getting a service filtered on my bundleId >> Sent by: osgi-dev-boun...@mail.osgi.org >> ------------------------------ >> >> >> >> Allow me to demonstrate using a real world scenario we have right now. >> >> There is an API comprised of at least two parts - Foo & Fum >> >> There are many implementations of Foo and Fum coming from many bundles >> >> However, the typical case is also that a Foo impl uses it's own Fum impl. >> >> So, your first attempt looks like this: >> >> @Component(service = Fum.class) >> public class MyFum implements Fum { } >> >> @Component(service = Foo.class) >> public class MyFoo implements Foo { >> @Reference >> public void setFum(Fum fum) {..} >> } >> >> Now this can break, because there are many Fums, right? >> >> So I need to be more specific. At the moment I have to do an ugly hack >> which is export the Fum by also it's FumImpl type: >> >> @Component(service = {Fum.class, MuFum.class}) >> public class MyFum implements Fum { } >> >> and now in the Foo impl, I need to change to either: >> >> @Component(service = Foo.class) >> public class MyFoo implements Foo { >> @Reference(service = MyFum.class) >> public void setFum(Fum fum) {..} >> } >> >> OR >> >> @Component(service = Foo.class) >> public class MyFoo implements Foo { >> @Reference(target = "(objectClass=MyFum)") >> public void setFum(Fum fum) {..} >> } >> >> all of that is really crappy! >> >> Why do I need to expose the internal details just so I can connect two >> Components together with such crud information. >> >> Why can't I simply do this: >> >> @Component(service = Fum.class) >> public class MyFum implements Fum { } >> >> @Component(service = Foo.class) >> public class MyFoo implements Foo { >> @Reference(target = "(service.bundleid=${*bundle.id* >> <http://bundle.id/>})") >> public void setFum(Fum fum) {..} >> } >> >> There! problem solved! >> >> R6 added a few very nice service properties like service.bundleid but >> they are completely useless because I CAN'T use them realistically because >> that information is runtime only and you can't know about it ahead of time. >> >> >> On Mon, Mar 9, 2015 at 3:40 AM, Balázs Zsoldos < >> *balazs.zsol...@everit.biz* <balazs.zsol...@everit.biz>> wrote: >> "we don't support multiple "active" extenders like DS" >> >> Even DS components use each-other via OSGi services and it does not (and >> should not) matter if those OSGi services are registered by components >> within the same bundle. >> >> In case all components are designed in the way that they know only about >> OSGi services, it should not be a problem to use Blueprint, DS, iPojo >> together within the same bundle. The problem starts when the components >> want to know about other components, not OSGi services. >> >> *Zsoldos Balázs* >> Rendszertervező | Software architect >> >> >> >> +36 70 594 9234 | *balazs.zsol...@everit.biz* <balazs.zsol...@everit.biz> >> >> *EverIT Kft.* >> 1137 Budapest, Katona József utca 17. III. em. 2. >> *http://www.everit.biz* <http://www.everit.biz/> I *i...@everit.biz* >> <i...@everit.biz> >> >> Ezen üzenet és annak bármely csatolt anyaga bizalmas, jogi védelem alatt >> áll, a nyilvános közléstől védett. Az üzenetet kizárólag a címzett, illetve >> az általa meghatalmazottak használhatják fel. Ha Ön nem az üzenet >> címzettje, úgy kérjük, hogy telefonon, vagy e-mail-ben értesítse erről az >> üzenet küldőjét és törölje az üzenetet, valamint annak összes csatolt >> mellékletét a rendszeréből. Ha Ön nem az üzenet címzettje, abban az esetben >> tilos az üzenetet vagy annak bármely csatolt mellékletét lemásolnia, >> elmentenie, az üzenet tartalmát bárkivel közölnie vagy azzal visszaélnie. >> >> >> This message and any attachment are confidential and are legally >> privileged. It is intended solely for the use of the individual or entity >> to whom it is addressed and others authorised to receive it. If you are not >> the intended recipient, please telephone or email the sender and delete >> this message and any attachment from your system. Please note that any >> dissemination, distribution, copying or use of or reliance upon the >> information contained in and transmitted with this e-mail by or to anyone >> other than the recipient designated above by the sender is unauthorised and >> strictly prohibited. >> >> >> On Sun, Mar 8, 2015 at 8:37 PM, BJ Hargrave <*hargr...@us.ibm.com* >> <hargr...@us.ibm.com>> wrote: >> > From: Raymond Auge <*raymond.a...@liferay.com* >> <raymond.a...@liferay.com>> >> > BJ bundles are not limited to using only a single spec! OSGi is >> > modular after all, no? >> >> > It's entirely possible for a bundle to use several extenders at >> > once. This is a completely legitimate use case. >> >> > This is exactly the case I'm dealing with. >> >> > I don't think what I'm asking is outlandish. >> >> It is a case discussed in the OSGi EGs and that we never agreed to solve. >> Basically, we don't support multiple "active" extenders like DS, Blueprint >> and Web Application Specification each trying to control a bundle. There is >> no way to coordinate that as you see. We certainly expect different bundles >> to use different technologies, but did not do anything to support a single >> bundle to be extended by multiple active extenders. What you are attempting >> to do is outside the scope of the existing OSGi specifications. I highly >> recommend you split the bundle up so that only a single active extender is >> controlling each bundle. >> >> -- >> >> *BJ Hargrave* >> Senior Technical Staff Member, IBM >> OSGi Fellow and CTO of the *OSGi Alliance* <http://www.osgi.org/> >> *hargr...@us.ibm.com* <hargr...@us.ibm.com> >> >> office: *+1 386 848 1781* <%2B1%20386%20848%201781> >> mobile: *+1 386 848 3788* <%2B1%20386%20848%203788> >> >> >> _______________________________________________ >> OSGi Developer Mail List >> *osgi-dev@mail.osgi.org* <osgi-dev@mail.osgi.org> >> *https://mail.osgi.org/mailman/listinfo/osgi-dev* >> <https://mail.osgi.org/mailman/listinfo/osgi-dev> >> >> >> _______________________________________________ >> OSGi Developer Mail List >> *osgi-dev@mail.osgi.org* <osgi-dev@mail.osgi.org> >> *https://mail.osgi.org/mailman/listinfo/osgi-dev* >> <https://mail.osgi.org/mailman/listinfo/osgi-dev> >> >> >> >> -- >> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> >> (@rotty3000) >> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com/> >> (@Liferay) >> Board Member & EEG Co-Chair, *OSGi Alliance* <http://osgi.org/> >> (@OSGiAlliance)_______________________________________________ >> OSGi Developer Mail List >> osgi-dev@mail.osgi.org >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> >> >> _______________________________________________ >> OSGi Developer Mail List >> osgi-dev@mail.osgi.org >> https://mail.osgi.org/mailman/listinfo/osgi-dev >> > > > > -- > *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> > (@rotty3000) > Senior Software Architect *Liferay, Inc.* <http://www.liferay.com> > (@Liferay) > Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> > (@OSGiAlliance) > -- *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000) Senior Software Architect *Liferay, Inc.* <http://www.liferay.com> (@Liferay) Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev