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]

Reply via email to