You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Hudson (Commented) (JIRA)" <ji...@apache.org> on 2011/12/23 21:10:30 UTC

[jira] [Commented] (TAP5-1801) Component fields should not need to be private, merely non-public

    [ https://issues.apache.org/jira/browse/TAP5-1801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13175564#comment-13175564 ] 

Hudson commented on TAP5-1801:
------------------------------

Integrated in tapestry-trunk-freestyle #648 (See [https://builds.apache.org/job/tapestry-trunk-freestyle/648/])
    TAP5-1801: Allow non-public fields in instrumented classes

Update some tests, due to non-private fields being allowed now
TAP5-1801: Allow non-public fields in instrumented classes

Support field instrumentation on accesses from inner classes
TAP5-1801: Allow non-public fields in instrumented classes

Add a test for cross-class field access
TAP5-1801: Allow non-public fields in instrumented classes

Refactor how file instrumentations are stored in the PlasticClass and in the PlasticClassPool
TAP5-1801: Allow non-public fields in instrumented classes

Added most of the logic for tracking instrument methods for fields of classes
TAP5-1801: Allow non-public fields in instrumented classes

hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1222792
Files : 
* /tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
* /tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Datum.java
* /tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProtectedFields.java

hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1222790
Files : 
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/ClassType.java
* /tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy
* /tapestry/tapestry5/trunk/plastic/src/test/java/testinterfaces/ValueGetter.java
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java

hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1222789
Files : 
* /tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldAccessTests.groovy
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedField.java
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldCollaborator.java

hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1222788
Files : 
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/FieldInstrumentation.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/FieldInstrumentations.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticFieldImpl.java

hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1222787
Files : 
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticFieldImpl.java

hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1222786
Files : 
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
* /tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticFieldImpl.java
* /tapestry/tapestry5/trunk/plastic/src/test/groovy/org/apache/tapestry5/plastic/ObtainPlasticClass.groovy
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/NonPrivateInstanceField.java
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/PublicInstanceField.java

                
> Component fields should not need to be private, merely non-public
> -----------------------------------------------------------------
>
>                 Key: TAP5-1801
>                 URL: https://issues.apache.org/jira/browse/TAP5-1801
>             Project: Tapestry 5
>          Issue Type: Improvement
>          Components: plastic, tapestry-core
>    Affects Versions: 5.4
>            Reporter: Howard M. Lewis Ship
>            Assignee: Howard M. Lewis Ship
>              Labels: bytecode
>             Fix For: 5.4
>
>
> Currently, Plastic assets, early, that all instance fields are private.  Instead, it should check fields as transformations are applied to them, and ensure that they are merely non-public. Access to the fields from other classes (including inner classes) must be routed through access methods.
> Inner classes will now need a limited set of transformations, to handle the cases where a protected or package private field is directly accessed, in which case, the appropriate accessor method will be used instead.
> It seems possible that two transformed classes that each access the other's non-public fields might cause an endless loop; if so, this should be identified and reported.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira