Hmmm. That gives me an idea. I was thinking that the reason I couldn't claim the method is that it would be possible for another annotation like @InjectObject for instance to be used and then I would have to preserve whatever changes were put in there by InjectObject. But since I suppose this annotation will only be used for non-abstract accessors that do some sort of calculation that it would be okay to claim the property. I'll give that a go and I think I should be all set. Thanks Jesse! Keep up the good work on Tapestry. :)
On Thu, 2006-05-25 at 12:35 -0400, Jesse Kuhnert wrote: > You should be able to do this fine using the existing annotation page logic. > > > In your annotation stuff for handling your specific type "claim" the > property specified using EnhancementOperation and then define a method body > that does the caching logic you describe and you'll be all set. (there are > other annotations in there that provide method body stuff to javassist for > you to reference) > > On 5/25/06, Dan Adams <[EMAIL PROTECTED]> wrote: > > > > Thank you for the time you guys have already spent on this, but if you > > have any other comments I would really appreciate them. Is there just no > > way to do this given the current tapestry annotation class structure? > > > > On Thu, 2006-05-25 at 10:51 -0400, Dan Adams wrote: > > > Well, I've been digging around in all the annotation source for 4.0.1 > > > and I seem to be stuck. It seems like there isn't any way to get to the > > > javassist methods or to do what I'm trying to do. I've looked at the > > > hivemind config and how to add the annotation. My only problem is how to > > > actually get the annotation to do what it needs to do. Any suggestions > > > on how to approach the problems I mentioned earlier? I also attached the > > > source which is pretty short. > > > > > > On Thu, 2006-05-25 at 10:42 -0400, Jesse Kuhnert wrote: > > > > Ah well...The annotations stuff in tapestry is pretty easy to follow > > (just > > > > added a lot of logic in this area myself). It would be best for you to > > refer > > > > to the tapestry annotations source, but the biggest thing is to also > > > > remember that annotations are done almost the same way that the > > > > "enhancement" stuff is done - with a hivemind chained pipeline > > > > configuration. There is an annotations hivemind configuration section > > that > > > > configures and sets up all of them as well. > > > > > > > > On 5/25/06, Dan Adams <[EMAIL PROTECTED]> wrote: > > > > > > > > > > You are right about this. I hadn't realized you could do that with > > > > > parameters. But that doesn't really apply to my problem since @Once > > > > > won't normally be used on parameters. It came up because in some > > > > > situations you have a method that does a hibernate query and returns > > a > > > > > list of objects and you'd like to be able to easily refer to that > > > > > property more than once in the template. A common situation is > > checking > > > > > the list size in an @If before doing something with it. > > > > > > > > > > On Thu, 2006-05-25 at 10:28 -0400, Jesse Kuhnert wrote: > > > > > > Doesn't tapestry support marking a parameter as cache-able > > already? > > > > > > > > > > > > On 5/25/06, James Carman <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > Have you looked into AspectJ? > > > > > > > > > > > > > > -----Original Message----- > > > > > > > From: Dan Adams [mailto:[EMAIL PROTECTED] > > > > > > > Sent: Thursday, May 25, 2006 10:00 AM > > > > > > > To: Tapestry users > > > > > > > Subject: RE: Help in writing a custom annotation > > > > > > > > > > > > > > Okay, my annotation is called @Once and if put on accessor will > > make > > > > > > > sure that the method is only executed once and then the return > > value > > > > > is > > > > > > > cached. Any further calls to the method will just return the > > saved > > > > > > > value. I've got pretty far but I think I'm stuck as I want to do > > > > > > > something that I could do with javassist but I'm not sure how to > > do > > > > > > > within the tapestry enhancement classes. I've attached what I > > have so > > > > > > > far and I would greatly appreciated it if someone could give me > > some > > > > > > > suggestions on what to do. My big problem is: > > > > > > > > > > > > > > - I could add code at the beginning and end of the method with > > > > > javassit > > > > > > > but can't see a way to do that > > > > > > > - Perhaps I could somehow rename the old method to something > > else and > > > > > > > put in a new method that calls it? > > > > > > > > > > > > > > Thanks a lot. > > > > > > > > > > > > > > On Thu, 2006-05-25 at 07:11 -0400, James Carman wrote: > > > > > > > > I'd look at the one that injects messages, or beans, or even > > the one > > > > > > > that > > > > > > > I > > > > > > > > wrote for "autowiring" (available in SVN on the 4.1 branch). > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > From: Dan Adams [mailto:[EMAIL PROTECTED] > > > > > > > > Sent: Wednesday, May 24, 2006 10:44 PM > > > > > > > > To: Tapestry users > > > > > > > > Subject: Help in writing a custom annotation > > > > > > > > > > > > > > > > I want to write an annotation that will intercept a method and > > add a > > > > > > > > property to the class. I've started digging around in some of > > the > > > > > > > > annotation sources but it's going pretty slow. Can someone > > point me > > > > > at > > > > > > > > the right place to look for where to start? > > > > > > > > > > > > > > > -- > > > > > > > Dan Adams > > > > > > > Software Engineer > > > > > > > Interactive Factory > > > > > > > 617.235.5857 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Dan Adams > > > > > Software Engineer > > > > > Interactive Factory > > > > > 617.235.5857 > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > -- > > Dan Adams > > Software Engineer > > Interactive Factory > > 617.235.5857 > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > -- Dan Adams Software Engineer Interactive Factory 617.235.5857 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]