We are currently using Tapestry 4.0.X, however, moving to 4.1 might be a
better option than using a custom LinkRenderer or writing an
EnhancementWorker.

Thanks.

Carlos

-----Original Message-----
From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] 
Sent: Monday, May 07, 2007 1:51 PM
To: Tapestry users
Subject: Re: render() around advice


I would do what Howard suggests - but if for some reason you really have
to
do it this other way there is a service point that allows you to do this
without having to write an EnhancementWorker:

http://tapestry.apache.org/tapestry4.1/tapestry-framework/hivedoc/module
/tapestry.render.html

On 5/7/07, Howard Lewis Ship <[EMAIL PROTECTED]> wrote:
>
> The link components all have a disabled parameter, so it's just a
matter
> of
> hooking that up.
>
> Depending on the rules for determining enabled vs. disabled, you may
want
> to
> try creating your own binding prefix.  For example, let's say you are
> basing
> this upon the user's role.
>
> <a jwcid="@DirectLink" disabled="role:!admin"
> listener="listener:doResetDB">Reset the Database</a>
>
> In this way, the logic for the expression "role:!admin" is centralized
in
> the BindingFactory for prefix "role:", rather than scattered about or
> accessed from super-class properties or such.
>
> On 5/7/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]>
wrote:
> >
> > Java 5
> > Tapestry 4.0.x
> >
> > I  would like to make runtime checks to determine if a link will
render.
> > To avoid configuration tedium we do not want to use custom link
> > renderers.
> >
> > The desired solution would behave like around advice, it would:
> > - intercept the render() call (or some other method with HTML
generation
> > responsibilities)
> > - make a runtime check based on the user authorizations and the
target
> > (e.g. page, component etc)
> > - call/skip the superclasses/targets default render() implementation
> >
> > Based on a variety of other posts, it seems like the
EnhancementWorker
> > and EnhancementOperation are best suited for this.
> > EnhancementOperation.addMethod() would allow me to extend the base
> > component class and add any arbitrary code.  However, if any other
> > worker has modified the method, the EnhancementOperation will throw
an
> > exception.  I assume the same would happen if a worker attempted to
use
> > extendMethodImplementation on the render() method.
> >
> > This might be a moot point, because I we don't use any
> > EnhancementWorker's that conflict with our impl.  However, all
things
> > being equal, I would like a guarantee that our enhancement won't
cause a
> > runtime conflict.
> >
> > Is there a better way to provide these enhancements, perhaps using
> > Hivemind's proxy support?
> >
> > Thanks for any help!
> >
> > Carlos
> >
> >
> >
> >
> >
> >
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> Howard M. Lewis Ship
> TWD Consulting, Inc.
> Independent J2EE / Open-Source Java Consultant
> Creator and PMC Chair, Apache Tapestry
> Creator, Apache HiveMind
>
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
>



-- 
Jesse Kuhnert
Tapestry/Dojo team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to