Christophe,

I'm not sure that you understand the problem. Please review my initial post.

Regards, Paul.

Christophe Cordenier wrote:
Also, i don't know how this would be possible in pure Java... without
modifying method prototypes.

2010/9/1 Christophe Cordenier <christophe.corden...@gmail.com>

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




Reply via email to