#: Eduardo Rocha changed the world a bit at a time by saying on  11/6/2005 3:51 
PM :#
I think Christian's idea is nice, and I saw at least three comments against it:

1. It is necessary to call injectDependencies on deserialization (Igor)

If a component implements "protected Object readResolve() throws
ObjectStreamException", as specified in Serializable class, I think
this could be handled, what do you think?


Yes - or at least this is what is supposed to be the correct way to handle it.

2. The component itself would do lookups (Alexandru).

Yes, but it would be a base class, and as a user you would never see
as your component doing the lookup. Otherwise, as said in a previous
thread, there could be a phase in the RequestCycle responsible for
injecting things, and that would also solve the issue (1).


The idea of the RequestCycle doing also injection is one that I like. Unfortunately it will not be able to solve the page/component injection. Wicket is encouragging the usage of normal Java constructors for adding pages, components, etc. For having automatic injection on these I really don't see any good solution other than aop ;-).


./alex
--
.w( the_mindstorm )p.

3. You should never ever call a overridable method in a constructor (Eelco).

Make it final?

2005/10/27, Christian Essl <[EMAIL PROTECTED]>:
On Thu, 27 Oct 2005 16:15:37 -0700, Eelco Hillenius
<[EMAIL PROTECTED]> wrote:

> Furthermore, you should never ever call a overridable method in a
> constructor.

You are right. It must be commented to not be dependent on any state set
of the constructors below this magic helper class. Apart of this
overriding is generaly a bit dangerous if you don't read the comment well
and don't know when it is called.

Anyway it was just an idea. I like this 'injection' thing just not AOP.

Christian

>
> Eelco
>
> On 10/27/05, Alexandru Popescu <[EMAIL PROTECTED]>
> wrote:
>> #: Christian Essl changed the world a bit at a time by saying on
>> 10/28/2005 12:54 AM :#
>> > Is AOP realy needed for that?
>> >
>> > Propably I do not understand the problem but why can't you just write
>> a
>> > special Panel, Page etc which calls an overrideable
>> injectDependencies()
>> > method in the constructor. The default implementation of
>> > injectDependencies() does basicly read the annotations, lookup the
>> > services and inject them?
>>
>> Because in this case the component itself does the lookup. And this is
>> not what you really want.
>>
>> ./alex
>> --
>> .w( the_mindstorm )p.
>>
>> I think this way you could on an instance by
>> > instance basis fine-grain control what gets injected. And during
>> testing
>> > you just inject the mocks in this overriden method.
>> >
>> > Just my two cents.
>> >
>> > Thanks,
>> > Christian
>> >
>> > On Thu, 27 Oct 2005 21:50:02 +0200, Stefan Arentz
>> > <[EMAIL PROTECTED]> wrote:
>> >
>> >>
>> >> On Oct 27, 2005, at 9:21 PM, Sven Meier wrote:
>> >>>
>> >>> BTW rather than letting panels pull service from the page, I'd
>> prefer
>> >>> the page to push services into its panels (i.e. the page  injects
>> >>> dependencies into its panels).
>> >>> I don't want my panels to be dependent on the containing page.
>> >>
>> >> Yup. That is exactly what I do.
>> >>
>> >> But. I just moved the aspect from WebPage to Component and guess
>> what,
>> >> the annotation and bean resolving works fine in Panels and
>> >> WebComponents too now :-)
>> >>
>> >> It is still to hackerish to use btw. There are some really nasty
>> delays
>> >> for example. I need to find some time to polish this.
>> >>
>> >>   S.
>> >>


--
Christian Essl





-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to