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

          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
          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

            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