i dont see why we are having this discussion now. we are on jdk1.4 so this
is a moot point. lets have this discussion once we move to jdk1.5.
-igor
On 4/26/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
no getModel() should always just work. It should return the model of the
component
also when it is inherrited and an inherrited will not be initialized in
the
constructor..
and the constructor of what? the component itself?? that can't be done
because the parent
is not know at that time (that was 2.0). So it will always be lazy.
they will be constructed a the first call to getModel() and will be
cleared
again in detach....So with the next request it will again be done lazy..
So the only solution is that we had an protected IModel getInternalModel()
that just returns the field. so getModel() would be then:
public IModel getModel()
{
IModel tmpModel = getInternalModel();
if (tmpModel == null)
{
this.model = initModel();
tmpModel = this.model;
}
return tmpModel;
}
On 4/26/07, Jan Vermeulen <[EMAIL PROTECTED]> wrote:
>
>
> Ok, that's when the model I return in getModel() would not be the one
> stored
> in the model member variable.
> I admit it's risky to allow to overwrite getModel(), if you're accessing
> the
> member variable directly is some core methods like initModel() or
> detach().
>
> But than the question might be: why not always call getModel() ? I would
> have left out initModel() in the core implementation of getModel(), so
> that
> it just returns the member variable. In case of an inherited model, it
> will
> get initialized anyway in the constructor or in setModel(). If the user,
> for
> some strange reason, want the init to be done lazy, they still can
> overwrite
> the basic getModel() implementation for that. And of course, the user is
> then responsible for what he puts in the getModel().
>
> Why do I insist so much in this ? Because I think that in a
> component-based
> framework like Wicket, the relation between specialized components and
> their
> corresponding model is essential, and it would be a pity that when
> creating
> a specialized component like a table, I cannot let it return directly
the
> tableModel that it uses: IModel is too basic.
>
> Jan.
>
>
> Johan Compagner wrote:
> >
> > no but if you override getModel() then the model property will never
be
> > set!
> > So for example if you override getModel() and there you return a
> > IComponentInhertiable model
> > or something like that then we will never find that. Because we don't
> call
> > getModel() any more
> > (that in your case would return a model for that component) but we
would
> > look at the model field
> > that in your case again will never be set.
> >
> > There are more places where we now directly look at the model for
> example
> > detachModel()
> > that doesn't do getModel() it again looks directly to the model
variable
> > So if you would override getModel() your model will never be detached.
> >
> > johan
> >
> >
> > On 4/26/07, Jan Vermeulen <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>
> >> Johan Compagner wrote:
> >> >
> >> > ahh and that is the change why getModel() needs to be final now...
> >> > because here and there we are directly looking at the model field
> >> instead
> >> > of
> >> > calling getModel()
> >> > so if you would override getModel() all that code would fail (or
> always
> >> > see
> >> > a null value)
> >> >
> >> > johan
> >> >
> >>
> >> Sorry, I don't get that. If you don't call getModel(), how can an
> >> overwritten version break your code ? It would if you were calling
> >> getModel(), but that's just what it no longer does !
> >>
> >> Jan.
> >> --
> >> View this message in context:
> >>
>
http://www.nabble.com/Timeframe-to-move-wicket---wicket-ext-projects-to-JDK1.5-tf3638110.html#a10197572
> >> Sent from the Wicket - Dev mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
>
http://www.nabble.com/Timeframe-to-move-wicket---wicket-ext-projects-to-JDK1.5-tf3638110.html#a10198777
> Sent from the Wicket - Dev mailing list archive at Nabble.com.
>
>