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
          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 committed 991405 (1 file)
          Reviews: none

          TAP5-1188: Clean up and streamline code, make sure all inner classes (including inner interfaces) are loaded by the reloading class loader

          Howard M. Lewis Ship committed 991402 (14 files)
          Reviews: none

          TAP5-1188: Refactory URLChangeTracker from tapestry-core to tapestry-ioc

          Howard M. Lewis Ship committed 991400 (1 file)
          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