This is how I'm tacking them currently:
Filter filter = _bundleContext.createFilter("(!(original.bean=*))");_serviceTracker = new ServiceTracker<Object, Object>( _bundleContext, filter, this); which as you might guess matches lots of services (anything that isn't explicitly one of these "original.beans". And so the addingService method actually has to check to see if a match is annotated and ignore it if it isn't. I've tried a number of different ways, but none seem to capture just the subset of annotated services, unless I add even more metadata in addition to the annotation. - Ray On Thu, Jun 27, 2013 at 3:11 PM, Raymond Auge <[email protected]>wrote: > But, how would you write a ServiceTracker do track it? > > I need a tracker to get the DS components to collaborate with a non-DS > system. > > i.e. the target isn't a component using a @Reference annotation. It's a > pure service tracker. > > I'm trying to implement a generic mechanism that allows annotation classes > with an existing web service annotation. When such a class is registered as > a service (in this case using DS annotations), I would like to register it > in our existing web service framework. > > These web services don't "infer" any particular type, other than the web > service annotation. > > - Ray > > > On Thu, Jun 27, 2013 at 2:59 PM, BJ Hargrave <[email protected]> wrote: > >> Well the type of the referenced service can be inferred from the argument >> to the method annotated with @Reference. >> -- >> >> *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: Raymond Auge <[email protected]> >> To: OSGi Developer Mail List <[email protected]> >> Date: 2013/06/27 14:53 >> Subject: [osgi-dev] tracking by annotations >> Sent by: [email protected] >> ------------------------------ >> >> >> >> Wouldn't it be nice if we could track|filter services by runtime type >> annotations? >> >> Currently I can see the only possible solution being something along the >> lines of (note these are bnd DS annotations): >> >> @Component( >> properties={ >> "annotation=com.foo.Baz" >> }, >> provide=Object.class >> ) >> @Baz >> public class Bar { >> } >> >> Nothing else works (such as passing the annotation class via the provide >> array). >> >> Note that in this case a complication comes up because the property must >> be a constant which means there is a danger if package is refactored. >> >> Thoughts? >> -- >> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> >> (@rotty3000) >> Senior Software Architect >> *Liferay, Inc.* <http://www.liferay.com/> (@Liferay) >> _______________________________________________ >> 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 >> > > > > -- > *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> > (@rotty3000) > Senior Software Architect > *Liferay, Inc.* <http://www.liferay.com> (@Liferay) > > -- *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000) Senior Software Architect *Liferay, Inc.* <http://www.liferay.com> (@Liferay)
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
