That sounds good. If the factory methods return instances of
IEclipseContextControl (or IEclipseContextInternals?) then that
interface is an obvious location where one can look up more
information. There would be no casting, and no conditional invocation
of methods. If other clients only see IEclipseContext then dispose()
etc. are also hidden.
On Oct 20, 2009, at 16:03 , Oleg Besedin wrote:
I think this is a good point and something that we should look into.
As a background, this was done, believe it or not, in the name of
simplicity.
There are two roles when it comes to contexts: the contexts I
created, and the contexts I got from somewhere else.
For the "contexts I created", it makes sense to be able to control
the life cycle. However, for the contexts passed to the parts, I'd
like to: a) make them as simple as possible, without any strange
methods; and b) I would be unhappy if somebody actually disposed of
my context.
From a quick glance it seems that we can achieve this separation by
having an extra interface IEclipseContextControl (inherits from
IEclipseContext) with dispose and other "strange" methods to be
returned by context factories. I opened https://bugs.eclipse.org/bugs/show_bug.cgi?id=292766
for this.
Sincerely,
Oleg Besedin
From: Axel Rauschmayer <[email protected]>
To: E4 Project developer mailing list <[email protected]>
Date: 10/20/2009 09:02 AM
Subject: Re: [e4-dev] How should clients be expected to dispose
of IEclipseContext instances?
Sent by: [email protected]
Commenting out of complete ignorance regarding the actual problem,
but: I've never liked this kind of pattern, because it is hard to
discover and easy to forget.
Is there a better way of handling life cycle stages? I would expect
this kind of method to be always there, possibly with empty
implementations.
Greetings,
Axel
On Oct 20, 2009, at 14:39 , Paul Webster wrote:
> If code creates a creates a context with EclipseContextFactory then
> they should dispose it when they're done with it. i.e. in our
> model/renderer code we have to create and dispose the context. We
use
> the pattern with IDisposable (as you found :-)
>
> if (context implements IDisposable) {
> ((IDisposable)context).dispose();
> }
>
> PW
>
> --
> Paul Webster
> Hi floor. Make me a sammich! - GIR
> _______________________________________________
> e4-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/e4-dev
>
--
[email protected]
http://www.pst.ifi.lmu.de/~rauschma/
_______________________________________________
e4-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/e4-dev
_______________________________________________
e4-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/e4-dev
--
[email protected]
http://www.pst.ifi.lmu.de/~rauschma/
_______________________________________________
e4-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/e4-dev