Right,

But actually, I don't think that setupRender method are meant to be private.


Strategy is parent before children. see
http://markmail.org/thread/u3t6xfa2mzopwgpz

2010/9/1 Alex Kotchnev <akoch...@gmail.com>

> Christophe,
>    I guess a part of the problem is that if I subclass from a parent class,
> I might not know what private methods it has. Thus, if the superclass ends
> up having a private method annotated w/ @SetupRender, and I accidentally
> end
> up having a private method in my class w/ the same name and annotated
> @SetupRender, my method isn't getting called. Sounds like a massive
> violation of encapsulation principles.
>
> Regards,
>
> Alex K
>
> On Wed, Sep 1, 2010 at 8:25 AM, Christophe Cordenier <
> christophe.corden...@gmail.com> wrote:
>
> > Hi !
> >
> > Actually as far as i remember when method have the same name, the
> generated
> > code would simply call 'init' method without method selection in this
> case.
> >
> > Anyway, Paul should use a protected or package visibility in his case and
> > call super.init() on the parent class.
> >
> > 2010/9/1 Alex Kotchnev <akoch...@gmail.com>
> >
> > > Christophe,
> > >   I think Paul's point is that there shouldn't be any overriding
> > happening
> > > : in his first case, these  are private methods; hence, the @Override
> > > annotation would be incorrect.
> > >
> > >   Sounds like a bug to me.
> > >
> > > Regards,
> > >
> > > Alex K
> > >
> > >
> > >
> > > On Wed, Sep 1, 2010 at 2:27 AM, Christophe Cordenier <
> > > christophe.corden...@gmail.com> wrote:
> > >
> > > > Hi !
> > > >
> > > > You should use @Override on overriden methods in sub-classes
> > > >
> > > > 2010/9/1 Paul Stanton <p...@mapshed.com.au>
> > > >
> > > > > I've found a strange issue with the @SetupRender annotation when
> used
> > > in
> > > > a
> > > > > class hierarchy.
> > > > >
> > > > > Typically, in java 2 classes within a hierarchy can have the same
> > > > signature
> > > > > for a private method and not effect each other, so I would expect
> > this
> > > to
> > > > be
> > > > > the case when both of these private methods are annotated with
> > > > @SetupRender.
> > > > > Therefore the output for case 1 and case 2 (below) should be the
> same
> > > and
> > > > > print both messages "setupRender2", "setupRender1".
> > > > >
> > > > > However case 1 only prints "setupRender2" meaning it somehow
> > overwrites
> > > > the
> > > > > method in it's implementing class.
> > > > >
> > > > > This is concerning because
> > > > > 1. there should never be a requirement that a sub-class knows of
> it's
> > > > > super-classes implementation
> > > > > 2. if hierarchy does come into play, the subclass should override
> the
> > > > super
> > > > > class.
> > > > >
> > > > > CASE 1:
> > > > > ------------------
> > > > > public abstract class StartBase {
> > > > >   @SetupRender
> > > > >   private void init() {
> > > > >       log.debug("setupRender2");
> > > > >   }
> > > > > }
> > > > >
> > > > > public class Start extends StartBase {
> > > > >   @SetupRender
> > > > >   private void init() {
> > > > >       log.debug("setupRender1");
> > > > >   }
> > > > > }
> > > > >
> > > > > CASE 2:
> > > > > ------------------
> > > > > public abstract class StartBase {
> > > > >   @SetupRender
> > > > >   private void init2() {
> > > > >       log.debug("setupRender2");
> > > > >   }
> > > > > }
> > > > >
> > > > > public class Start extends StartBase {
> > > > >   @SetupRender
> > > > >   private void init1() {
> > > > >       log.debug("setupRender1");
> > > > >   }
> > > > > }
> > > > >
> > > > >
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > > > > For additional commands, e-mail: users-h...@tapestry.apache.org
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Regards,
> > > > Christophe Cordenier.
> > > >
> > > > Committer on Apache Tapestry 5
> > > > Co-creator of wooki @wookicentral.com
> > > >
> > >
> >
> >
> >
> > --
> > Regards,
> > Christophe Cordenier.
> >
> > Committer on Apache Tapestry 5
> > Co-creator of wooki @wookicentral.com
> >
>



-- 
Regards,
Christophe Cordenier.

Committer on Apache Tapestry 5
Co-creator of wooki @wookicentral.com

Reply via email to