Details

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

      Description

      A long-term, multi-release strategy to replace ClassFactory/ClassGen and ClassTransformation methods with equivalents that are not tied to Javassist.

      Over a couple of releases, the methods could be introduced (still implemented on top of Javassist), and the Javassist-centric methods deprecated, then eventually disabled (NotImplementedException) or even removed.

      Rationale: Javassist is unprofessionally and fitfully maintained; many users have problems under Java6 due to Javassist.

        Issue Links

          Activity

          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #355 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/355/)

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #355 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/355/ )
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #342 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/342/)
          TAP5-853: Move call to check() before mutation methods of PlasticManagerBuilder

          hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1104591
          Files :

          • /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/PlasticManager.java
          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #342 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/342/ ) TAP5-853 : Move call to check() before mutation methods of PlasticManagerBuilder hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1104591 Files : /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/PlasticManager.java
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #335 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/335/)
          TAP5-853: Re-implement debugging-mode field write-behind
          TAP5-853: Add support for field write-behind (useful for debugging) when connecting a field to a FieldConduit

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #335 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/335/ ) TAP5-853 : Re-implement debugging-mode field write-behind TAP5-853 : Add support for field write-behind (useful for debugging) when connecting a field to a FieldConduit
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #334 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/334/)
          TAP5-853: Create an implementation of PlasticProxyFactory.getMethodLocation() and getConstructorLocation() based on ASM Tree API (not ClassFactory)

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #334 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/334/ ) TAP5-853 : Create an implementation of PlasticProxyFactory.getMethodLocation() and getConstructorLocation() based on ASM Tree API (not ClassFactory)
          Hide
          Howard M. Lewis Ship added a comment -

          Any remaining code changes fall under performance, not functionality.

          Show
          Howard M. Lewis Ship added a comment - Any remaining code changes fall under performance, not functionality.
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #332 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/332/)
          TAP5-853: Add support for logging the creation of proxies and transformed classes
          TAP5-853: Add support for listener notifications as classes are loaded

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #332 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/332/ ) TAP5-853 : Add support for logging the creation of proxies and transformed classes TAP5-853 : Add support for listener notifications as classes are loaded
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #331 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/331/)
          TAP5-853: Extend ComponentInstantiatorSource to use OperationTrack to identify what it is doing, in case of errors
          TAP5-853: A little refactoring to how ComponentInstantiatorSourceImpl is constructed
          TAP5-853: Mark more classes as deprecated and cleanup some imports
          TAP5-853: Correct contribution methods to ComponentClassTransformWorker service and re-instate tapestry-jpa in the build
          TAP5-853: Change MethodDescription to hold a genericSignature property that is used when creating new MethodNodes
          TAP5-853: Make corrections to invocation order of event handler methods (prior test code appeared broken, did moving to Plastic fix something that was quitely broken?)
          TAP5-853: Use correct ClassLoader when locating the URL for a class file
          TAP5-853: If a return value for a method invocation is overridden, the checked exception should be discarded
          TAP5-853: Update some tests for minor changes to messages
          TAP5-853: Have annotation proxies provide a reasonable value for toString()
          TAP5-853: Add a check that class to instantiate is not abstract
          TAP5-853: Modify the error messages related to improper component instantiations
          TAP5-853: Change getMethodIdentifier() to include the fully qualified class name as well as method name, etc.
          TAP5-853: Replace the original no-args constructor (if present) with one that throws IllegalStateException, as with other constructors
          TAP5-853: Take @Inherited into account when searching for annotations on a PlasticClass
          TAP5-853: Transform field access inside static methods as well as instance methods
          TAP5-853: Use correct class loader hierarchy to prevent ClassCastExceptions
          TAP5-853: Do a better job tracking what methods are implemented in each class, to prevent naming conflicts in child classes
          TAP5-853: Safely dereference method parameter values which may be null
          TAP5-853: Fix a bug where field access methods needed by the Shim were incorrectly optimized away
          TAP5-853: Fix setConduit() and setComputedConduit() to return this, not null
          TAP5-853: Set up the component-layer PlasticProxyFactory with the correct parent class loader (the loader created for components)
          TAP5-853: Reimplement replaceAccess(TransformField) in terms of the revised FieldConduit interface (which exposes the object instance)
          TAP5-853: Change FieldConduit to pass the object instance as well as the InstanceContext to get() and set()
          TAP5-853: Implement getSignature(), isDeclaredMethod() and getModfiers()
          TAP5-853: Add getModifiers() to PlasticField
          TAP5-853: Change the bridge implementation of matchFields(Predicate) to work across all fields, rather than just unclaimed fields
          TAP5-853: Change getFieldsWithAnnotation() to return all non-introduced fields, regardless of whether they are claimed
          TAP5-853: Ensure that PropertyWorker operates early, so that it sees all fields, before they are claimed by other workers
          TAP5-853: Reimplement getMethodIdentifier()
          TAP5-853: Reimplement replaceAccess()
          TAP5-853: Allow a field's conduit to be a computed value
          TAP5-853: Reimplement getSignature()
          TAP5-853: Reimplement TransformMethod.isOverride()
          TAP5-853: Add ability to determine if a PlasticMethod represents an override of a transformed super-class method
          TAP5-853: Continue extending BridgeClassTransformation to handle the odds & ends of the old ClassTransformation API
          TAP5-853: Initial work on reimplementing ComponentInstantiatorSource using PlasticManager instead of Javassist
          TAP5-853: Mark the getClassFactory() method as deprecated, and remove getClassSource() entirely
          TAP5-853: Genericize the configureInstantiator() method
          TAP5-853: Add method for obtaining super class of transformed class
          TAP5-853: Initial work on converting component class transformation to work on top of Plastic

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #331 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/331/ ) TAP5-853 : Extend ComponentInstantiatorSource to use OperationTrack to identify what it is doing, in case of errors TAP5-853 : A little refactoring to how ComponentInstantiatorSourceImpl is constructed TAP5-853 : Mark more classes as deprecated and cleanup some imports TAP5-853 : Correct contribution methods to ComponentClassTransformWorker service and re-instate tapestry-jpa in the build TAP5-853 : Change MethodDescription to hold a genericSignature property that is used when creating new MethodNodes TAP5-853 : Make corrections to invocation order of event handler methods (prior test code appeared broken, did moving to Plastic fix something that was quitely broken?) TAP5-853 : Use correct ClassLoader when locating the URL for a class file TAP5-853 : If a return value for a method invocation is overridden, the checked exception should be discarded TAP5-853 : Update some tests for minor changes to messages TAP5-853 : Have annotation proxies provide a reasonable value for toString() TAP5-853 : Add a check that class to instantiate is not abstract TAP5-853 : Modify the error messages related to improper component instantiations TAP5-853 : Change getMethodIdentifier() to include the fully qualified class name as well as method name, etc. TAP5-853 : Replace the original no-args constructor (if present) with one that throws IllegalStateException, as with other constructors TAP5-853 : Take @Inherited into account when searching for annotations on a PlasticClass TAP5-853 : Transform field access inside static methods as well as instance methods TAP5-853 : Use correct class loader hierarchy to prevent ClassCastExceptions TAP5-853 : Do a better job tracking what methods are implemented in each class, to prevent naming conflicts in child classes TAP5-853 : Safely dereference method parameter values which may be null TAP5-853 : Fix a bug where field access methods needed by the Shim were incorrectly optimized away TAP5-853 : Fix setConduit() and setComputedConduit() to return this, not null TAP5-853 : Set up the component-layer PlasticProxyFactory with the correct parent class loader (the loader created for components) TAP5-853 : Reimplement replaceAccess(TransformField) in terms of the revised FieldConduit interface (which exposes the object instance) TAP5-853 : Change FieldConduit to pass the object instance as well as the InstanceContext to get() and set() TAP5-853 : Implement getSignature(), isDeclaredMethod() and getModfiers() TAP5-853 : Add getModifiers() to PlasticField TAP5-853 : Change the bridge implementation of matchFields(Predicate) to work across all fields, rather than just unclaimed fields TAP5-853 : Change getFieldsWithAnnotation() to return all non-introduced fields, regardless of whether they are claimed TAP5-853 : Ensure that PropertyWorker operates early, so that it sees all fields, before they are claimed by other workers TAP5-853 : Reimplement getMethodIdentifier() TAP5-853 : Reimplement replaceAccess() TAP5-853 : Allow a field's conduit to be a computed value TAP5-853 : Reimplement getSignature() TAP5-853 : Reimplement TransformMethod.isOverride() TAP5-853 : Add ability to determine if a PlasticMethod represents an override of a transformed super-class method TAP5-853 : Continue extending BridgeClassTransformation to handle the odds & ends of the old ClassTransformation API TAP5-853 : Initial work on reimplementing ComponentInstantiatorSource using PlasticManager instead of Javassist TAP5-853 : Mark the getClassFactory() method as deprecated, and remove getClassSource() entirely TAP5-853 : Genericize the configureInstantiator() method TAP5-853 : Add method for obtaining super class of transformed class TAP5-853 : Initial work on converting component class transformation to work on top of Plastic
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #327 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/327/)

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #327 (See https://builds.apache.org/hudson/job/tapestry-trunk-freestyle/327/ )
          Hide
          Hudson added a comment -

          Integrated in tapestry-trunk-freestyle #319 (See https://hudson.apache.org/hudson/job/tapestry-trunk-freestyle/319/)
          TAP5-853: Add some missing javadoc

          Show
          Hudson added a comment - Integrated in tapestry-trunk-freestyle #319 (See https://hudson.apache.org/hudson/job/tapestry-trunk-freestyle/319/ ) TAP5-853 : Add some missing javadoc
          Hide
          Hudson added a comment -

          Integrated in tapestry-5.2-freestyle #317 (See https://hudson.apache.org/hudson/job/tapestry-5.2-freestyle/317/)
          TAP5-853: Don't inject the PropertyConduitDelegate unless actually needed

          Show
          Hudson added a comment - Integrated in tapestry-5.2-freestyle #317 (See https://hudson.apache.org/hudson/job/tapestry-5.2-freestyle/317/ ) TAP5-853 : Don't inject the PropertyConduitDelegate unless actually needed

            People

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

              Dates

              • Created:
                Updated:
                Resolved:

                Development