I don't see the utility of tracking untyped services since you can't really use them :-)
In any case, I don't expect any changes to ServiceTracker regarding annotations. ServiceTracker tracks service based upon information visible in a ServiceReference (via ServiceEvents sent to ServiceListeners). An annotation on the implementation class or interface under which the service is registered is not visible in a ServiceReference. What you want to do should be done with service properties. Decorate the interesting service with some service property and then track based upon that service property. -- BJ Hargrave Senior Technical Staff Member, IBM OSGi Fellow and CTO of the OSGi Alliance 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: 2013/06/27 15:19 Subject: Re: [osgi-dev] tracking by annotations Sent by: osgi-dev-boun...@mail.osgi.org 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 <raymond.a...@liferay.com> 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 <hargr...@us.ibm.com> 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 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: 2013/06/27 14:53 Subject: [osgi-dev] tracking by annotations Sent by: osgi-dev-boun...@mail.osgi.org 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é (@rotty3000) Senior Software Architect Liferay, Inc. (@Liferay) _______________________________________________ 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é (@rotty3000) Senior Software Architect Liferay, Inc. (@Liferay) -- Raymond Augé (@rotty3000) Senior Software Architect Liferay, Inc. (@Liferay) _______________________________________________ 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