Tapestry
  1. Tapestry
  2. TAPESTRY-1615

ClassTransformation needs ability to rename a method and extend the beginning of a method

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.5
    • Fix Version/s: 5.0.6
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      My original problem:

      -------------------------------------------
      Okay, so I'm creating a @Once annotation that when applied to a method
      like so:

      @Once
      public List<Foos> getFoos() {
      // do some expensive operation like reading foos from the db
      }

      you can call getFoos() as much as you want and it will only actually
      execute once, allowing you to reference foos many times in your template
      (or elsewhere) without having to worry about doing expensive operations
      multiple times or having to cache a value manually.

      I had this working just fine in T4 because you could call the superclass
      method but since this is transforming the class I can't call
      super.getFoos(). ClassTransformation doesn't seem to have any methods
      for renaming a method or replacing any calls to it.
      --------------------------

      This could be solved by either being able to rename a method so all calls go to your new method which can call the old method or by being able to add code to the beginning of a method similar to how extendMethod() currently adds to the end.

        Activity

        Hide
        Dan Adams added a comment -

        Added ClassTransformation.prefixMethod() for adding code to the beginning of a method.

        Show
        Dan Adams added a comment - Added ClassTransformation.prefixMethod() for adding code to the beginning of a method.

          People

          • Assignee:
            Dan Adams
            Reporter:
            Dan Adams
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development