Oleg Besedin wrote:|
=> Single context object <=
I didn't follow the context object discussion it seems like this is a
better way to do the initData stuff. correct? That is cool. I wonder
as well if dynamic context is on the table? That is supplying objects
in the call the createExecutableExtension call.
> I don't like that clients cannot provide more
than just one single
> "context" object.
Good point. I did this for simplicity as having
one argument eliminates the need to match constructor arguments. If we
were to support multiple arguments we'd have to add a new construct to
the extension point schema - something like
= "1" name = "name_of the_attribute_from_plugin_xml"/>
= "2" name = "name_of the_attribute_from_plugin_xml"/>
This is probably worth supporting as an option.
Is there [easy] some way we can support annotations if they are there
(and we are on an appropriate VM) but otherwise allow people to work
=> Annotations and VM support <=
Annotations would be really nice to use. As an
take be the topic above ("single context object"): annotations
could have been used to tie constructor arguments to the XML
However, Eclipse SDK runs on 1.4 and the position
of the extension registry in the Eclipse stack does not give us much
We'll have to support pre-1.5 VMs at least in the 3.x stream, there is
no choice. As such any functionality based on annotations would have to
- the extension registry: while it
might not look
like a conventional DI framework, in spirit it is very similar. The
gets obscured by registry artifacts as pieces that gets injected are
/ IExtensions. With this enhancement the actual Java typed objects will
be injected using method/field injection; and an optional "context"
elements will be injected via constructors.
I entered a bug today to talk about linking the extension lifecycle
with that of services (DS) and more of the bundle lifecycle. This
would go a long way IMHO towards making extensions and services
intereact better. That and making it easeier to lookup and inject
services into createExecutableExtension and to contribute extensions
that are in fact services (e.g., make it easy to use an