Hmm... Without knowing all of the details I'd say you'd have to do something like:
-) Add your annotation enhancement worker to the hivemind configuration point for annotation workers. -) Based on the annotation values passed in, decide if you want to enhance the class right there , or choose to delegate the work to a hivemind service. It sounds like you are going for delegation, so you'd need to look at some of the other annotation or normal enhancement workser for reference on how to add an injected field. (InjectObjectWorker sounds like a good candidate for browsing no? ) -) I have no idea what your helper classes signature is like for what input/output the methods have but then you'll need to look at the IComponent or IPage/page listener interfaces to decide what makes the most sense for your use case. -) There are enhancement workers that handle the page event listeners already, as well as tons that do the pageLoad stuff so that should handle that right? -) The Direct/any engine services are pretty damn easy to intercept now because all of them call "triggerComponent" (or something like that) to actually invoke a listener. On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote:
So, where would I put the logic to add a PageValidateListener to the page if it has a @Secure annotation? I plan on using EnhancementOperation.extendMethodImplementation(), but I don't know what signature to pass. I've got a special class that does validation based on @Secure annotations and I need to know how to hook it to my page. -----Original Message----- From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 07, 2006 3:25 PM To: Tapestry development Subject: Re: Permissions Mapping... You're awesome!! Between hibernate and acegi you're filling in two of the biggest holes we've had. (beside maybe cleaning up the site and some documentation ..cough ) On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote: > > Well, hopefully Acegi support will be done soon. So, we can put that to > rest. :-) > > -----Original Message----- > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 07, 2006 3:16 PM > To: Tapestry development > Subject: Re: Permissions Mapping... > > Glad I could be helpful :) The one added bonus of all the recent work > being > done in tapestry is that I feel pretty comforatable being able to > maintain/enhance the tapestry4 series now. > > Hopefully when 4.1 is done coming out we can all attack the bugs/features > that have been annoying everyone for so long. > > On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote: > > > > Okay, great. As always, thanks for your help! :-) > > > > > > -----Original Message----- > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, June 07, 2006 3:01 PM > > To: Tapestry development > > Subject: Re: Permissions Mapping... > > > > Tons of things contribute to the pageLoaded method..There's also my new > > Render chain that gets called after any component renders. (ie after > > renderComponent) . I would look at the pageLoaded method enhancers..I > > think > > anything dealing with injection/properties does this. (not in > annotations, > > in org.apache.tapestry.enahance) > > > > On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote: > > > > > > I'm looking for something that implements/overrides a method, but > > doesn't > > > "claim" it. > > > > > > -----Original Message----- > > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > > Sent: Wednesday, June 07, 2006 2:27 PM > > > To: Tapestry development > > > Subject: Re: Permissions Mapping... > > > > > > EventListener . Yeah I think there are some enchancers that run for it > > > (later, not in the annotation src though)... It's kind of up to you if > > you > > > need to enhance anything or not ;) (Personally I'd probably just use > the > > > annotations to provide a global cached sort of data lookup that some > > other > > > service could then use to do security stuff...Or somethin like that ;) > ) > > > > > > On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote: > > > > > > > > Which ones? I assume there are enhancers that take care of them, > too. > > > :-) > > > > > > > > -----Original Message----- > > > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > > > Sent: Wednesday, June 07, 2006 2:18 PM > > > > To: Tapestry development > > > > Subject: Re: Permissions Mapping... > > > > > > > > I just added some method level annotations into tapestry4/trunk if > > that > > > > helps... > > > > > > > > On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote: > > > > > > > > > > Howard, > > > > > > > > > > Cool idea and I was considering it too. But, would there be a > nice > > > way > > > > to > > > > > specify this without using annotations? I'm not really against > > them, > > > > but > > > > > some users get turned off by it. Also, do you have some example > > code > > > > > somewhere that I could "borrow"? Javassist isn't the easiest > thing > > in > > > > the > > > > > world, you know. :-) > > > > > > > > > > James > > > > > > > > > > -----Original Message----- > > > > > From: Howard Lewis Ship [mailto:[EMAIL PROTECTED] > > > > > Sent: Wednesday, June 07, 2006 2:06 PM > > > > > To: Tapestry development > > > > > Subject: Re: Permissions Mapping... > > > > > > > > > > What I did was create a @Privileged annotation. The annotation > > value > > > > was > > > > > the name of the required role. You could attach this method to > > > classes, > > > > or > > > > > to methods. @Privileged is inherited, and @Privileged("") means > no > > > > > special > > > > > privilege required. > > > > > > > > > > For classes, it implemented/extended PageValidateListener to check > > the > > > > > permission. > > > > > > > > > > For methods, it overrided the method to add a check before > invoking > > > > > super(). > > > > > > > > > > I extended Tapestry class and method annotation workers to handle > > > these > > > > > annotations. > > > > > > > > > > Worked like a charm. > > > > > > > > > > This approach puts the logic right into the pages or methods, > which > > is > > > > > where > > > > > I think it belongs. > > > > > > > > > > On 6/7/06, James Carman <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > All, > > > > > > > > > > > > You guys are the experts. I have a design question. I am > > creating > > > a > > > > > > tapestry/acegi integration package (parts of it are already > > > > done). What > > > > > I > > > > > > need to figure out is how to decide what roles an in-coming > > request > > > > > > requires? If it's a PageService request, I can check the page > > class > > > > for > > > > > a > > > > > > @RequiredRole annotation. If it's a DirectService request, I > can > > > > check > > > > > > the > > > > > > method for a @RequiredRole annotation. But, how do I do this in > a > > > > > general > > > > > > way? Any ideas? > > > > > > > > > > > > James > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Howard M. Lewis Ship > > > > > Independent J2EE / Open-Source Java Consultant > > > > > Creator and PMC Chair, Apache Tapestry > > > > > Creator, Jakarta HiveMind > > > > > > > > > > Professional Tapestry training, mentoring, support > > > > > and project work. http://howardlewisship.com > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > -- > > > > Jesse Kuhnert > > > > Tacos/Tapestry, team member/developer > > > > > > > > Open source based consulting work centered around > > > > dojo/tapestry/tacos/hivemind. > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > -- > > > Jesse Kuhnert > > > Tacos/Tapestry, team member/developer > > > > > > Open source based consulting work centered around > > > dojo/tapestry/tacos/hivemind. > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > -- > > Jesse Kuhnert > > Tacos/Tapestry, team member/developer > > > > Open source based consulting work centered around > > dojo/tapestry/tacos/hivemind. > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > Jesse Kuhnert > Tacos/Tapestry, team member/developer > > Open source based consulting work centered around > dojo/tapestry/tacos/hivemind. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Jesse Kuhnert Tacos/Tapestry, team member/developer Open source based consulting work centered around dojo/tapestry/tacos/hivemind. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Jesse Kuhnert Tacos/Tapestry, team member/developer Open source based consulting work centered around dojo/tapestry/tacos/hivemind.
