[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [equinox-dev] Incubator request for Extensions/Services Integration work
- From: Stefan Liebig <Stefan.Liebig@xxxxxxxxxxxx>
- Date: Tue, 01 Apr 2008 15:38:42 +0200
- Delivered-to: firstname.lastname@example.org
- User-agent: Thunderbird 126.96.36.199 (Windows/20080213)
Great! This is a very interesting topic.
Within Riena we are currently using a simple to use ÂframeworkÂ to
inject services and extensions
into objects (pojos). Our approach is code based and looks like this.
where ÂtargetÂ is the pojo that gets a service/s injected. When services
come and go they will be injected
into or removed from the pojos. The method names for injecting/removing
can be specified with the bind()
and unbind() methods. If they are not defined default method names are
extension points get injected into pojos as instances of an interface
defined by useType(). If the interface is
not defined explicitly it will be retrieved with reflection from the
bind method. The interface needs only to declare
the getters. Dynamic proxies will be created for this interface which
map the data from the extensions. A few simple
rules are used for the mapping from extension to the properties
(lightweight xml/java mapping).
The source code is available in org.eclipse.riena package
org.eclipse.riena.core.injector. Unit tests are available in
org.eclipse.riena.tests packages org.eclipse.riena.core.extension/service.
Neil Bartlett wrote:
I have been doing some investigative work recently in the area of
integrating extensions with OSGi services. As a result of this, I have
developed a small framework for dynamically injecting services into
extension objects according to metadata defined via the extension
registry. As a very simple example, suppose we have an extension
object (e.g. a ViewPart) which has a method
setLogReader(LogReaderService). We can declare an "injected bean"
extension as follows:
And then the actual view extension as:
This results in all objects instantiated from the log view extension
being dynamically injected with the log reader service as it becomes
available (and un-injected when it goes away).
I would like to request a work area under the Equinox incubator as a
home for this code so that others can test it and experiment with this
and other approaches to the extensions/services integration problem.
equinox-dev mailing list