Tapestry 5
  1. Tapestry 5
  2. TAP5-1188

Refactoring the base class of a live-reloaded service implementation can cause mysterious NoSuchMethodError exceptions

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.2.0
    • Fix Version/s: 5.2.1
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      As currently implemented, live class reloading only takes into account the service implementation class (plus any inner classes of the implemention class). If the implementation class extends from a base class, the base class is not scanned for changes, and is not reloaded when it (or the actual implementation class) changes.

        Issue Links

          Activity

          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open In Progress In Progress
          77d 23h 28m 1 Howard M. Lewis Ship 31/Aug/10 21:40
          In Progress In Progress Closed Closed
          3h 23m 1 Howard M. Lewis Ship 01/Sep/10 01:04
          Hide
          Hudson added a comment -

          Integrated in tapestry-5.2-freestyle #185 (See https://hudson.apache.org/hudson/job/tapestry-5.2-freestyle/185/)
          TAP5-1188: Remove commented-out code
          TAP5-1188: Clean up and streamline code, make sure all inner classes (including inner interfaces) are loaded by the reloading class loader
          TAP5-1188: Add test to demonstrate that changing a base class reloads the service
          TAP5-1188: Make use of URLChangeTracker to track which file(s) may have changed, forcing a service to reload
          TAP5-1188: Refactory URLChangeTracker from tapestry-core to tapestry-ioc
          TAP5-1188: Tune some of the logic related to which classes are reloaded
          TAP5-1188: Refactor to use Javassist class loading objects

          Show
          Hudson added a comment - Integrated in tapestry-5.2-freestyle #185 (See https://hudson.apache.org/hudson/job/tapestry-5.2-freestyle/185/ ) TAP5-1188 : Remove commented-out code TAP5-1188 : Clean up and streamline code, make sure all inner classes (including inner interfaces) are loaded by the reloading class loader TAP5-1188 : Add test to demonstrate that changing a base class reloads the service TAP5-1188 : Make use of URLChangeTracker to track which file(s) may have changed, forcing a service to reload TAP5-1188 : Refactory URLChangeTracker from tapestry-core to tapestry-ioc TAP5-1188 : Tune some of the logic related to which classes are reloaded TAP5-1188 : Refactor to use Javassist class loading objects
          Howard M. Lewis Ship made changes -
          Status In Progress [ 3 ] Closed [ 6 ]
          Fix Version/s 5.2.1 [ 12315230 ]
          Resolution Fixed [ 1 ]
          Hide
          Howard M. Lewis Ship added a comment -

          Did a bunch of work to extend the "class loading umbrella" for a reloadable service to other classes in the same package, but also the base class

          Show
          Howard M. Lewis Ship added a comment - Did a bunch of work to extend the "class loading umbrella" for a reloadable service to other classes in the same package, but also the base class
          Howard M. Lewis Ship made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Howard M. Lewis Ship made changes -
          Assignee Howard M. Lewis Ship [ hlship ]
          Howard M. Lewis Ship made changes -
          Field Original Value New Value
          Link This issue relates to TAP5-1233 [ TAP5-1233 ]
          Howard M. Lewis Ship created issue -

            People

            • Assignee:
              Howard M. Lewis Ship
              Reporter:
              Howard M. Lewis Ship
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development