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

          Transition Time In Source Status Execution Times Last Executer Last Execution Date
          Open Open Closed Closed
          586d 1h 18m 1 Howard M. Lewis Ship 02/May/11 23:57
          Howard M. Lewis Ship made changes -
          Fix Version/s 5.3 [ 12316024 ]
          Fix Version/s 5.3.0 [ 12316023 ]
          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)
          Howard M. Lewis Ship made changes -
          Status Open [ 1 ] Closed [ 6 ]
          Fix Version/s 5.3.0 [ 12316023 ]
          Resolution Fixed [ 1 ]
          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/ )
          Howard M. Lewis Ship made changes -
          Link This issue is related to TAP5-1509 [ TAP5-1509 ]
          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
          Pierce Wetter made changes -
          Link This issue incorporates TAP5-1138 [ TAP5-1138 ]
          Howard M. Lewis Ship made changes -
          Link This issue is related to TAP5-519 [ TAP5-519 ]
          Howard M. Lewis Ship made changes -
          Link This issue incorporates TAP5-993 [ TAP5-993 ]
          Howard M. Lewis Ship made changes -
          Field Original Value New Value
          Assignee Howard M. Lewis Ship [ hlship ]
          Howard M. Lewis Ship created issue -

            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