You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Olaf Tomczak (Created) (JIRA)" <ji...@apache.org> on 2012/03/05 13:10:57 UTC

[jira] [Created] (TAP5-1860) problems with protected component fields

problems with protected component fields
----------------------------------------

                 Key: TAP5-1860
                 URL: https://issues.apache.org/jira/browse/TAP5-1860
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.3.2
            Reporter: Olaf Tomczak


There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.


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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252945#comment-13252945 ] 

Hudson commented on TAP5-1860:
------------------------------

Integrated in tapestry-trunk-freestyle #700 (See [https://builds.apache.org/job/tapestry-trunk-freestyle/700/])
    TAP5-1860: Access to protected component fields does not always reflect in subclasses (Revision 1325553)

     Result = SUCCESS
hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1325553
Files : 
* /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/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldSubclass.java

                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.3.3, 5.4
>
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) problems with protected component fields

Posted by "Steve Eynon (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252168#comment-13252168 ] 

Steve Eynon commented on TAP5-1860:
-----------------------------------

I believe there *is* a problem with the introduction of protected instance fields, but that it's different to the one stated.

Protected fields work just fine (and why wouldn't they, it's just Java!) however, T5 annotated fields are only instrumented within the same class. Meaning if you access an instrumented protected field from a subclass, it doesn't work.

The problem (as I see it) is that T5 doesn't complain when it instruments a field marked as protected. I would also like to see the documentation updated to explain this.

We've come a cropper with this a couple of times in work. The nasty gotcha being, if you access the field in DevMode the field is shadowed, so future protected access works - but fails spectacularly with NPEs in ProdMode!
                
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Updated] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship updated TAP5-1860:
---------------------------------------

    Summary: Access to protected component fields does not always reflect in subclasses  (was: problems with protected component fields)

I've taken the code and renamed the classes slightly (to Grandparent and Parent), and enabled component transformation logging.


    DEBUG - // class version 50.0 (50)
    // access flags 0x21
    public class test/base/pages/Grandparent implements org/apache/tapestry5/runtime/Component org/apache/tapestry5/runtime/RenderCommand  {

      // compiled from: Grandparent.java

      // access flags 0x14
      protected final Lorg/slf4j/Logger; log
      @Lorg/apache/tapestry5/ioc/annotations/Inject;()

      // access flags 0x4
      protected Z fieldSetOnEvent
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x12
      private final Lorg/apache/tapestry5/internal/InternalComponentResources; internalComponentResources

      // access flags 0x12
      private final Lorg/apache/tapestry5/internal/InternalComponentResources; resources

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; fieldSetOnEvent_FieldConduit

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/InstanceContext; instanceContext

      // access flags 0x2
      private initializeInstance()V
       L0
        LINENUMBER 12 L0
        RETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/Grandparent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x1
      public getFieldValueUsingGrandparentGetter()Z
       L0
        LINENUMBER 19 L0
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_get_fieldSetOnEvent ()Z
        IRETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/Grandparent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x0
      onAnother()V
       L0
        LINENUMBER 28 L0
        ALOAD 0
        ICONST_1
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_set_fieldSetOnEvent (Z)V
       L1
        LINENUMBER 29 L1
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.log : Lorg/slf4j/Logger;
        LDC "onAnother: this.fieldSetOnEvent = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_get_fieldSetOnEvent ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 30 L2
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.log : Lorg/slf4j/Logger;
        LDC "onAnother: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 32 L3
        RETURN
       L4
        LOCALVARIABLE this Ltest/base/pages/Grandparent; L0 L4 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x1
      public postRenderCleanup()V
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.resources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        INVOKEINTERFACE org/apache/tapestry5/internal/InternalComponentResources.postRenderCleanup ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setupRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public beginRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public beforeRenderTemplate(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public afterRenderTemplate(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public beforeRenderBody(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public afterRenderBody(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public afterRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public cleanupRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public dispatchComponentEvent(Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
       L0
        LDC false
        ISTORE 2
        ALOAD 1
        LDC "Another"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L1
        ALOAD 1
        LDC "test.base.pages.Grandparent.onAnother()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.onAnother ()V
        LDC true
        ISTORE 2
        GOTO L2
       L1
       L2
        ILOAD 2
        IRETURN
       L3
        LOCALVARIABLE var0 Z L0 L3 2
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getComponentResources()Lorg/apache/tapestry5/ComponentResources;
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.internalComponentResources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ARETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_internalComponentResources(Lorg/apache/tapestry5/internal/InternalComponentResources;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field internalComponentResources of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getFieldSetOnEvent()Z
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_get_fieldSetOnEvent ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setFieldSetOnEvent(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_set_fieldSetOnEvent (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public render(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/RenderQueue;)V
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.resources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ALOAD 1
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/internal/InternalComponentResources.render (Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/RenderQueue;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_resources(Lorg/apache/tapestry5/internal/InternalComponentResources;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field resources of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1014
      protected final reject_field_change_log(Lorg/slf4j/Logger;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field log of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_fieldSetOnEvent_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field fieldSetOnEvent_FieldConduit of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1014
      protected final conduit_get_fieldSetOnEvent()Z
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.fieldSetOnEvent_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/base/pages/Grandparent.fieldSetOnEvent : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1014
      protected final conduit_set_fieldSetOnEvent(Z)V
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.fieldSetOnEvent_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/base/pages/Grandparent.fieldSetOnEvent : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>()V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Class test.base.pages.Grandparent has been transformed and may not be directly instantiated."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        INVOKESPECIAL java/lang/Object.<init> ()V
        ALOAD 0
        ALOAD 2
        LDC "org.apache.tapestry5.internal.InternalComponentResources"
        INVOKESTATIC org/apache/tapestry5/internal/plastic/PlasticInternalUtils.getFromInstanceContext (Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/String;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/internal/InternalComponentResources
        PUTFIELD test/base/pages/Grandparent.internalComponentResources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ALOAD 0
        ALOAD 2
        LDC "org.apache.tapestry5.internal.InternalComponentResources"
        INVOKESTATIC org/apache/tapestry5/internal/plastic/PlasticInternalUtils.getFromInstanceContext (Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/String;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/internal/InternalComponentResources
        PUTFIELD test/base/pages/Grandparent.resources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ALOAD 0
        ALOAD 1
        ICONST_0
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/slf4j/Logger
        PUTFIELD test/base/pages/Grandparent.log : Lorg/slf4j/Logger;
        ALOAD 0
        ALOAD 1
        ICONST_1
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/base/pages/Grandparent.fieldSetOnEvent_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 2
        PUTFIELD test/base/pages/Grandparent.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.initializeInstance ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0
    }

    DEBUG - // class version 50.0 (50)
    // access flags 0x421
    public abstract class test/base/pages/other/Parent extends test/base/pages/Grandparent  {

      // compiled from: Parent.java

      // access flags 0x2
      private initializeInstance()V
       L0
        LINENUMBER 10 L0
        RETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/other/Parent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x0
      onOther()V
       L0
        LINENUMBER 14 L0
        ALOAD 0
        ICONST_1
        PUTFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z
       L1
        LINENUMBER 15 L1
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.log : Lorg/slf4j/Logger;
        LDC "onOther: this.fieldSetOnEvent = {}"
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 16 L2
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.log : Lorg/slf4j/Logger;
        LDC "onOther: this.getFieldValueViaParentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.getFieldValueViaParentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 17 L3
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.log : Lorg/slf4j/Logger;
        LDC "onOther: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L4
        LINENUMBER 19 L4
        RETURN
       L5
        LOCALVARIABLE this Ltest/base/pages/other/Parent; L0 L5 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x1
      public getFieldValueViaParentGetter()Z
       L0
        LINENUMBER 23 L0
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z
        IRETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/other/Parent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x1
      public dispatchComponentEvent(Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
       L0
        ALOAD 0
        ALOAD 1
        INVOKESPECIAL test/base/pages/Grandparent.dispatchComponentEvent (Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
        ISTORE 2
        ALOAD 1
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.isAborted ()Z
        IFEQ L1
        LDC true
        IRETURN
        GOTO L2
       L1
       L2
        ALOAD 1
        LDC "Other"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L3
        ALOAD 1
        LDC "test.base.pages.other.Parent.onOther()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.onOther ()V
        LDC true
        ISTORE 2
        GOTO L4
       L3
       L4
        ILOAD 2
        IRETURN
       L5
        LOCALVARIABLE var0 Z L0 L5 2
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>()V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Class test.base.pages.other.Parent has been transformed and may not be directly instantiated."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        ALOAD 1
        ALOAD 2
        INVOKESPECIAL test/base/pages/Grandparent.<init> (Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.initializeInstance ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0
    }

    DEBUG - // class version 50.0 (50)
    // access flags 0x21
    public class test/pages/Index extends test/base/pages/other/Parent  {

      // compiled from: Index.java

      // access flags 0x2
      private Z result1
      @Lorg/apache/tapestry5/annotations/Persist;(value="flash")
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x2
      private Z result2
      @Lorg/apache/tapestry5/annotations/Persist;(value="flash")
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x2
      private Z result3
      @Lorg/apache/tapestry5/annotations/Persist;(value="flash")
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; result1_FieldConduit

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/InstanceContext; instanceContext

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; result2_FieldConduit

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; result3_FieldConduit

      // access flags 0x2
      private initializeInstance()V
       L0
        LINENUMBER 14 L0
        RETURN
       L1
        LOCALVARIABLE this Ltest/pages/Index; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x0
      onSome()V
       L0
        LINENUMBER 33 L0
        ALOAD 0
        ICONST_1
        PUTFIELD test/pages/Index.fieldSetOnEvent : Z
       L1
        LINENUMBER 34 L1
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSome: this.fieldSetOnEvent = {}"
        ALOAD 0
        GETFIELD test/pages/Index.fieldSetOnEvent : Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 35 L2
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSome: this.getFieldValueViaParentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueViaParentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 36 L3
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSome: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L4
        LINENUMBER 37 L4
        RETURN
       L5
        LOCALVARIABLE this Ltest/pages/Index; L0 L5 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x0
      onSuccess()Ljava/lang/Object;
       L0
        LINENUMBER 41 L0
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSuccess: this.fieldSetOnEvent = {}"
        ALOAD 0
        GETFIELD test/pages/Index.fieldSetOnEvent : Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L1
        LINENUMBER 42 L1
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSuccess: this.getFieldValueViaParentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueViaParentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 43 L2
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSuccess: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 44 L3
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.fieldSetOnEvent : Z
        INVOKEVIRTUAL test/pages/Index.conduit_set_result1 (Z)V
       L4
        LINENUMBER 45 L4
        ALOAD 0
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueViaParentGetter ()Z
        INVOKEVIRTUAL test/pages/Index.conduit_set_result2 (Z)V
       L5
        LINENUMBER 46 L5
        ALOAD 0
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueUsingGrandparentGetter ()Z
        INVOKEVIRTUAL test/pages/Index.conduit_set_result3 (Z)V
       L6
        LINENUMBER 47 L6
        ALOAD 0
        ARETURN
       L7
        LOCALVARIABLE this Ltest/pages/Index; L0 L7 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x1
      public getResult1()Z
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.conduit_get_result1 ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setResult1(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/pages/Index.conduit_set_result1 (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getResult2()Z
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.conduit_get_result2 ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setResult2(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/pages/Index.conduit_set_result2 (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getResult3()Z
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.conduit_get_result3 ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setResult3(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/pages/Index.conduit_set_result3 (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public dispatchComponentEvent(Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
       L0
        ALOAD 0
        ALOAD 1
        INVOKESPECIAL test/base/pages/other/Parent.dispatchComponentEvent (Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
        ISTORE 2
        ALOAD 1
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.isAborted ()Z
        IFEQ L1
        LDC true
        IRETURN
        GOTO L2
       L1
       L2
        ALOAD 1
        LDC "Some"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L3
        ALOAD 1
        LDC "test.pages.Index.onSome()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.onSome ()V
        LDC true
        ISTORE 2
        GOTO L4
       L3
       L4
        ALOAD 1
        LDC "Success"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L5
        ALOAD 1
        LDC "test.pages.Index.onSuccess()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.onSuccess ()Ljava/lang/Object;
        ALOAD 1
        SWAP
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.storeResult (Ljava/lang/Object;)Z
        IFEQ L6
        LDC true
        IRETURN
        GOTO L7
       L6
       L7
        LDC true
        ISTORE 2
        GOTO L8
       L5
       L8
        ILOAD 2
        IRETURN
       L9
        LOCALVARIABLE var0 Z L0 L9 2
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_result1_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field result1_FieldConduit of class test.pages.Index is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_get_result1()Z
        ALOAD 0
        GETFIELD test/pages/Index.result1_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/pages/Index.result1 : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_set_result1(Z)V
        ALOAD 0
        GETFIELD test/pages/Index.result1_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/pages/Index.result1 : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_result2_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field result2_FieldConduit of class test.pages.Index is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_get_result2()Z
        ALOAD 0
        GETFIELD test/pages/Index.result2_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/pages/Index.result2 : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_set_result2(Z)V
        ALOAD 0
        GETFIELD test/pages/Index.result2_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/pages/Index.result2 : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_result3_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field result3_FieldConduit of class test.pages.Index is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_get_result3()Z
        ALOAD 0
        GETFIELD test/pages/Index.result3_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/pages/Index.result3 : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_set_result3(Z)V
        ALOAD 0
        GETFIELD test/pages/Index.result3_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/pages/Index.result3 : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>()V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Class test.pages.Index has been transformed and may not be directly instantiated."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        ALOAD 1
        ALOAD 2
        INVOKESPECIAL test/base/pages/other/Parent.<init> (Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        ALOAD 1
        ICONST_2
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/pages/Index.result1_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 2
        PUTFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ALOAD 0
        ALOAD 1
        ICONST_3
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/pages/Index.result2_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 1
        ICONST_4
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/pages/Index.result3_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.initializeInstance ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0
    }

                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Assigned] (TAP5-1860) problems with protected component fields

Posted by "Howard M. Lewis Ship (Assigned) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship reassigned TAP5-1860:
------------------------------------------

    Assignee: Howard M. Lewis Ship
    
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Closed] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Closed) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship closed TAP5-1860.
--------------------------------------

       Resolution: Fixed
    Fix Version/s: 5.4
                   5.3.3
    
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.3.3, 5.4
>
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) problems with protected component fields

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252494#comment-13252494 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

The intent is that protected instance fields accessed from a base class are, in fact, instrumented.  So there's probably a bug here.
                
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252865#comment-13252865 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

  public class FieldInsnNode extends AbstractInsnNode {

      /**
       * The internal name of the field's owner class (see
       * {@link org.apache.tapestry5.internal.plastic.asm.Type#getInternalName() getInternalName}).
       */
      public String owner;

I wonder if this is a bug in the copy of ASM copied into Plastic?

Nope. node.owner doesn't do what I thought.  It's the name of the class containing the reference to the field, not the name of the class that defines the field.
                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252957#comment-13252957 ] 

Hudson commented on TAP5-1860:
------------------------------

Integrated in tapestry-5.3-freestyle #22 (See [https://builds.apache.org/job/tapestry-5.3-freestyle/22/])
    TAP5-1860: Access to protected component fields does not always reflect in subclasses (Revision 1325552)

     Result = FAILURE
hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1325552
Files : 
* /tapestry/tapestry5/branches/5.3/plastic/src/main/java/org/apache/tapestry5/internal/plastic/FieldInstrumentations.java
* /tapestry/tapestry5/branches/5.3/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
* /tapestry/tapestry5/branches/5.3/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
* /tapestry/tapestry5/branches/5.3/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy

                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.3.3, 5.4
>
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252865#comment-13252865 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

  public class FieldInsnNode extends AbstractInsnNode {

      /**
       * The internal name of the field's owner class (see
       * {@link org.apache.tapestry5.internal.plastic.asm.Type#getInternalName() getInternalName}).
       */
      public String owner;

I wonder if this is a bug in the copy of ASM copied into Plastic?

Nope. node.owner doesn't do what I thought.  It's the name of the class containing the reference to the field, not the name of the class that defines the field.
                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252843#comment-13252843 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

Already seeing some incorrect bytecode, in the intermediate class, Parent:


      onOther()V
       L0
        LINENUMBER 14 L0
        ALOAD 0
        ICONST_1
        PUTFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z


... thought it might be due to name collision, but nope.  That is, the fact that each class defines a method named "onOther()".  


Awesome. I now have a test case that fails in the Plastic test suite.
                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) problems with protected component fields

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252494#comment-13252494 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

The intent is that protected instance fields accessed from a base class are, in fact, instrumented.  So there's probably a bug here.
                
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252858#comment-13252858 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

Think I found the problem:


    private FieldInstrumentations findInstrumentations(FieldInsnNode node)
    {
        if (node.owner.equals(classNode.name))
        {
            return fieldInstrumentations;
        }

        return pool.getFieldInstrumentations(node.owner);

    }


What I'm seeing in the debugger is that node.owner is the name of the class being *transformed*, not the class that contains the field.
                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252957#comment-13252957 ] 

Hudson commented on TAP5-1860:
------------------------------

Integrated in tapestry-5.3-freestyle #22 (See [https://builds.apache.org/job/tapestry-5.3-freestyle/22/])
    TAP5-1860: Access to protected component fields does not always reflect in subclasses (Revision 1325552)

     Result = FAILURE
hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1325552
Files : 
* /tapestry/tapestry5/branches/5.3/plastic/src/main/java/org/apache/tapestry5/internal/plastic/FieldInstrumentations.java
* /tapestry/tapestry5/branches/5.3/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
* /tapestry/tapestry5/branches/5.3/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassPool.java
* /tapestry/tapestry5/branches/5.3/plastic/src/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy

                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.3.3, 5.4
>
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Assigned] (TAP5-1860) problems with protected component fields

Posted by "Howard M. Lewis Ship (Assigned) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship reassigned TAP5-1860:
------------------------------------------

    Assignee: Howard M. Lewis Ship
    
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Updated] (TAP5-1860) problems with protected component fields

Posted by "Olaf Tomczak (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Olaf Tomczak updated TAP5-1860:
-------------------------------

    Attachment: testapp.tgz

Attached a project with simple application exposing the issue.
                
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) problems with protected component fields

Posted by "Steve Eynon (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252168#comment-13252168 ] 

Steve Eynon commented on TAP5-1860:
-----------------------------------

I believe there *is* a problem with the introduction of protected instance fields, but that it's different to the one stated.

Protected fields work just fine (and why wouldn't they, it's just Java!) however, T5 annotated fields are only instrumented within the same class. Meaning if you access an instrumented protected field from a subclass, it doesn't work.

The problem (as I see it) is that T5 doesn't complain when it instruments a field marked as protected. I would also like to see the documentation updated to explain this.

We've come a cropper with this a couple of times in work. The nasty gotcha being, if you access the field in DevMode the field is shadowed, so future protected access works - but fails spectacularly with NPEs in ProdMode!
                
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252945#comment-13252945 ] 

Hudson commented on TAP5-1860:
------------------------------

Integrated in tapestry-trunk-freestyle #700 (See [https://builds.apache.org/job/tapestry-trunk-freestyle/700/])
    TAP5-1860: Access to protected component fields does not always reflect in subclasses (Revision 1325553)

     Result = SUCCESS
hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1325553
Files : 
* /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/test/groovy/org/apache/tapestry5/plastic/FieldConduitTests.groovy
* /tapestry/tapestry5/trunk/plastic/src/test/java/testsubjects/ProtectedFieldSubclass.java

                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.3.3, 5.4
>
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Updated] (TAP5-1860) problems with protected component fields

Posted by "Olaf Tomczak (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Olaf Tomczak updated TAP5-1860:
-------------------------------

    Attachment: testapp.tgz

Attached a project with simple application exposing the issue.
                
> problems with protected component fields
> ----------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Updated] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship updated TAP5-1860:
---------------------------------------

    Summary: Access to protected component fields does not always reflect in subclasses  (was: problems with protected component fields)

I've taken the code and renamed the classes slightly (to Grandparent and Parent), and enabled component transformation logging.


    DEBUG - // class version 50.0 (50)
    // access flags 0x21
    public class test/base/pages/Grandparent implements org/apache/tapestry5/runtime/Component org/apache/tapestry5/runtime/RenderCommand  {

      // compiled from: Grandparent.java

      // access flags 0x14
      protected final Lorg/slf4j/Logger; log
      @Lorg/apache/tapestry5/ioc/annotations/Inject;()

      // access flags 0x4
      protected Z fieldSetOnEvent
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x12
      private final Lorg/apache/tapestry5/internal/InternalComponentResources; internalComponentResources

      // access flags 0x12
      private final Lorg/apache/tapestry5/internal/InternalComponentResources; resources

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; fieldSetOnEvent_FieldConduit

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/InstanceContext; instanceContext

      // access flags 0x2
      private initializeInstance()V
       L0
        LINENUMBER 12 L0
        RETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/Grandparent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x1
      public getFieldValueUsingGrandparentGetter()Z
       L0
        LINENUMBER 19 L0
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_get_fieldSetOnEvent ()Z
        IRETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/Grandparent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x0
      onAnother()V
       L0
        LINENUMBER 28 L0
        ALOAD 0
        ICONST_1
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_set_fieldSetOnEvent (Z)V
       L1
        LINENUMBER 29 L1
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.log : Lorg/slf4j/Logger;
        LDC "onAnother: this.fieldSetOnEvent = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_get_fieldSetOnEvent ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 30 L2
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.log : Lorg/slf4j/Logger;
        LDC "onAnother: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 32 L3
        RETURN
       L4
        LOCALVARIABLE this Ltest/base/pages/Grandparent; L0 L4 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x1
      public postRenderCleanup()V
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.resources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        INVOKEINTERFACE org/apache/tapestry5/internal/InternalComponentResources.postRenderCleanup ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setupRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public beginRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public beforeRenderTemplate(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public afterRenderTemplate(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public beforeRenderBody(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public afterRenderBody(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public afterRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public cleanupRender(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/Event;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public dispatchComponentEvent(Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
       L0
        LDC false
        ISTORE 2
        ALOAD 1
        LDC "Another"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L1
        ALOAD 1
        LDC "test.base.pages.Grandparent.onAnother()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.onAnother ()V
        LDC true
        ISTORE 2
        GOTO L2
       L1
       L2
        ILOAD 2
        IRETURN
       L3
        LOCALVARIABLE var0 Z L0 L3 2
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getComponentResources()Lorg/apache/tapestry5/ComponentResources;
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.internalComponentResources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ARETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_internalComponentResources(Lorg/apache/tapestry5/internal/InternalComponentResources;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field internalComponentResources of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getFieldSetOnEvent()Z
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_get_fieldSetOnEvent ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setFieldSetOnEvent(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/base/pages/Grandparent.conduit_set_fieldSetOnEvent (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public render(Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/RenderQueue;)V
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.resources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ALOAD 1
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/internal/InternalComponentResources.render (Lorg/apache/tapestry5/MarkupWriter;Lorg/apache/tapestry5/runtime/RenderQueue;)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_resources(Lorg/apache/tapestry5/internal/InternalComponentResources;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field resources of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1014
      protected final reject_field_change_log(Lorg/slf4j/Logger;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field log of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_fieldSetOnEvent_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field fieldSetOnEvent_FieldConduit of class test.base.pages.Grandparent is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1014
      protected final conduit_get_fieldSetOnEvent()Z
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.fieldSetOnEvent_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/base/pages/Grandparent.fieldSetOnEvent : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1014
      protected final conduit_set_fieldSetOnEvent(Z)V
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.fieldSetOnEvent_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/base/pages/Grandparent.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/base/pages/Grandparent.fieldSetOnEvent : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>()V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Class test.base.pages.Grandparent has been transformed and may not be directly instantiated."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        INVOKESPECIAL java/lang/Object.<init> ()V
        ALOAD 0
        ALOAD 2
        LDC "org.apache.tapestry5.internal.InternalComponentResources"
        INVOKESTATIC org/apache/tapestry5/internal/plastic/PlasticInternalUtils.getFromInstanceContext (Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/String;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/internal/InternalComponentResources
        PUTFIELD test/base/pages/Grandparent.internalComponentResources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ALOAD 0
        ALOAD 2
        LDC "org.apache.tapestry5.internal.InternalComponentResources"
        INVOKESTATIC org/apache/tapestry5/internal/plastic/PlasticInternalUtils.getFromInstanceContext (Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/String;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/internal/InternalComponentResources
        PUTFIELD test/base/pages/Grandparent.resources : Lorg/apache/tapestry5/internal/InternalComponentResources;
        ALOAD 0
        ALOAD 1
        ICONST_0
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/slf4j/Logger
        PUTFIELD test/base/pages/Grandparent.log : Lorg/slf4j/Logger;
        ALOAD 0
        ALOAD 1
        ICONST_1
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/base/pages/Grandparent.fieldSetOnEvent_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 2
        PUTFIELD test/base/pages/Grandparent.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/Grandparent.initializeInstance ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0
    }

    DEBUG - // class version 50.0 (50)
    // access flags 0x421
    public abstract class test/base/pages/other/Parent extends test/base/pages/Grandparent  {

      // compiled from: Parent.java

      // access flags 0x2
      private initializeInstance()V
       L0
        LINENUMBER 10 L0
        RETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/other/Parent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x0
      onOther()V
       L0
        LINENUMBER 14 L0
        ALOAD 0
        ICONST_1
        PUTFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z
       L1
        LINENUMBER 15 L1
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.log : Lorg/slf4j/Logger;
        LDC "onOther: this.fieldSetOnEvent = {}"
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 16 L2
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.log : Lorg/slf4j/Logger;
        LDC "onOther: this.getFieldValueViaParentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.getFieldValueViaParentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 17 L3
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.log : Lorg/slf4j/Logger;
        LDC "onOther: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L4
        LINENUMBER 19 L4
        RETURN
       L5
        LOCALVARIABLE this Ltest/base/pages/other/Parent; L0 L5 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x1
      public getFieldValueViaParentGetter()Z
       L0
        LINENUMBER 23 L0
        ALOAD 0
        GETFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z
        IRETURN
       L1
        LOCALVARIABLE this Ltest/base/pages/other/Parent; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x1
      public dispatchComponentEvent(Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
       L0
        ALOAD 0
        ALOAD 1
        INVOKESPECIAL test/base/pages/Grandparent.dispatchComponentEvent (Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
        ISTORE 2
        ALOAD 1
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.isAborted ()Z
        IFEQ L1
        LDC true
        IRETURN
        GOTO L2
       L1
       L2
        ALOAD 1
        LDC "Other"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L3
        ALOAD 1
        LDC "test.base.pages.other.Parent.onOther()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.onOther ()V
        LDC true
        ISTORE 2
        GOTO L4
       L3
       L4
        ILOAD 2
        IRETURN
       L5
        LOCALVARIABLE var0 Z L0 L5 2
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>()V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Class test.base.pages.other.Parent has been transformed and may not be directly instantiated."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        ALOAD 1
        ALOAD 2
        INVOKESPECIAL test/base/pages/Grandparent.<init> (Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        INVOKEVIRTUAL test/base/pages/other/Parent.initializeInstance ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0
    }

    DEBUG - // class version 50.0 (50)
    // access flags 0x21
    public class test/pages/Index extends test/base/pages/other/Parent  {

      // compiled from: Index.java

      // access flags 0x2
      private Z result1
      @Lorg/apache/tapestry5/annotations/Persist;(value="flash")
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x2
      private Z result2
      @Lorg/apache/tapestry5/annotations/Persist;(value="flash")
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x2
      private Z result3
      @Lorg/apache/tapestry5/annotations/Persist;(value="flash")
      @Lorg/apache/tapestry5/annotations/Property;()

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; result1_FieldConduit

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/InstanceContext; instanceContext

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; result2_FieldConduit

      // access flags 0x12
      private final Lorg/apache/tapestry5/plastic/FieldConduit; result3_FieldConduit

      // access flags 0x2
      private initializeInstance()V
       L0
        LINENUMBER 14 L0
        RETURN
       L1
        LOCALVARIABLE this Ltest/pages/Index; L0 L1 0
        MAXSTACK = 1
        MAXLOCALS = 1

      // access flags 0x0
      onSome()V
       L0
        LINENUMBER 33 L0
        ALOAD 0
        ICONST_1
        PUTFIELD test/pages/Index.fieldSetOnEvent : Z
       L1
        LINENUMBER 34 L1
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSome: this.fieldSetOnEvent = {}"
        ALOAD 0
        GETFIELD test/pages/Index.fieldSetOnEvent : Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 35 L2
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSome: this.getFieldValueViaParentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueViaParentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 36 L3
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSome: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L4
        LINENUMBER 37 L4
        RETURN
       L5
        LOCALVARIABLE this Ltest/pages/Index; L0 L5 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x0
      onSuccess()Ljava/lang/Object;
       L0
        LINENUMBER 41 L0
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSuccess: this.fieldSetOnEvent = {}"
        ALOAD 0
        GETFIELD test/pages/Index.fieldSetOnEvent : Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L1
        LINENUMBER 42 L1
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSuccess: this.getFieldValueViaParentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueViaParentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L2
        LINENUMBER 43 L2
        ALOAD 0
        GETFIELD test/pages/Index.log : Lorg/slf4j/Logger;
        LDC "onSuccess: this.getFieldValueUsingGrandparentGetter() = {}"
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueUsingGrandparentGetter ()Z
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/slf4j/Logger.info (Ljava/lang/String;Ljava/lang/Object;)V
       L3
        LINENUMBER 44 L3
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.fieldSetOnEvent : Z
        INVOKEVIRTUAL test/pages/Index.conduit_set_result1 (Z)V
       L4
        LINENUMBER 45 L4
        ALOAD 0
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueViaParentGetter ()Z
        INVOKEVIRTUAL test/pages/Index.conduit_set_result2 (Z)V
       L5
        LINENUMBER 46 L5
        ALOAD 0
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.getFieldValueUsingGrandparentGetter ()Z
        INVOKEVIRTUAL test/pages/Index.conduit_set_result3 (Z)V
       L6
        LINENUMBER 47 L6
        ALOAD 0
        ARETURN
       L7
        LOCALVARIABLE this Ltest/pages/Index; L0 L7 0
        MAXSTACK = 3
        MAXLOCALS = 1

      // access flags 0x1
      public getResult1()Z
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.conduit_get_result1 ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setResult1(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/pages/Index.conduit_set_result1 (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getResult2()Z
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.conduit_get_result2 ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setResult2(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/pages/Index.conduit_set_result2 (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public getResult3()Z
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.conduit_get_result3 ()Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public setResult3(Z)V
        ALOAD 0
        ILOAD 1
        INVOKEVIRTUAL test/pages/Index.conduit_set_result3 (Z)V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public dispatchComponentEvent(Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
       L0
        ALOAD 0
        ALOAD 1
        INVOKESPECIAL test/base/pages/other/Parent.dispatchComponentEvent (Lorg/apache/tapestry5/runtime/ComponentEvent;)Z
        ISTORE 2
        ALOAD 1
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.isAborted ()Z
        IFEQ L1
        LDC true
        IRETURN
        GOTO L2
       L1
       L2
        ALOAD 1
        LDC "Some"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L3
        ALOAD 1
        LDC "test.pages.Index.onSome()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.onSome ()V
        LDC true
        ISTORE 2
        GOTO L4
       L3
       L4
        ALOAD 1
        LDC "Success"
        LDC ""
        ICONST_0
        INVOKEINTERFACE org/apache/tapestry5/runtime/ComponentEvent.matches (Ljava/lang/String;Ljava/lang/String;I)Z
        IFEQ L5
        ALOAD 1
        LDC "test.pages.Index.onSuccess()"
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.setMethodDescription (Ljava/lang/String;)V
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.onSuccess ()Ljava/lang/Object;
        ALOAD 1
        SWAP
        INVOKEINTERFACE org/apache/tapestry5/runtime/Event.storeResult (Ljava/lang/Object;)Z
        IFEQ L6
        LDC true
        IRETURN
        GOTO L7
       L6
       L7
        LDC true
        ISTORE 2
        GOTO L8
       L5
       L8
        ILOAD 2
        IRETURN
       L9
        LOCALVARIABLE var0 Z L0 L9 2
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_result1_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field result1_FieldConduit of class test.pages.Index is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_get_result1()Z
        ALOAD 0
        GETFIELD test/pages/Index.result1_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/pages/Index.result1 : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_set_result1(Z)V
        ALOAD 0
        GETFIELD test/pages/Index.result1_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/pages/Index.result1 : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_result2_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field result2_FieldConduit of class test.pages.Index is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_get_result2()Z
        ALOAD 0
        GETFIELD test/pages/Index.result2_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/pages/Index.result2 : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_set_result2(Z)V
        ALOAD 0
        GETFIELD test/pages/Index.result2_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/pages/Index.result2 : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final reject_field_change_result3_FieldConduit(Lorg/apache/tapestry5/plastic/FieldConduit;)V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Field result3_FieldConduit of class test.pages.Index is read-only."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_get_result3()Z
        ALOAD 0
        GETFIELD test/pages/Index.result3_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.get (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST java/lang/Boolean
        INVOKEVIRTUAL java/lang/Boolean.booleanValue ()Z
        DUP
        ALOAD 0
        SWAP
        PUTFIELD test/pages/Index.result3 : Z
        IRETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1010
      final conduit_set_result3(Z)V
        ALOAD 0
        GETFIELD test/pages/Index.result3_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 0
        GETFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ILOAD 1
        INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
        INVOKEINTERFACE org/apache/tapestry5/plastic/FieldConduit.set (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Ljava/lang/Object;)V
        ALOAD 0
        ILOAD 1
        PUTFIELD test/pages/Index.result3 : Z
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>()V
        NEW java/lang/IllegalStateException
        DUP
        LDC "Class test.pages.Index has been transformed and may not be directly instantiated."
        INVOKESPECIAL java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
        ATHROW
        MAXSTACK = 0
        MAXLOCALS = 0

      // access flags 0x1
      public <init>(Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        ALOAD 1
        ALOAD 2
        INVOKESPECIAL test/base/pages/other/Parent.<init> (Lorg/apache/tapestry5/internal/plastic/StaticContext;Lorg/apache/tapestry5/plastic/InstanceContext;)V
        ALOAD 0
        ALOAD 1
        ICONST_2
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/pages/Index.result1_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 2
        PUTFIELD test/pages/Index.instanceContext : Lorg/apache/tapestry5/plastic/InstanceContext;
        ALOAD 0
        ALOAD 1
        ICONST_3
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/pages/Index.result2_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        ALOAD 1
        ICONST_4
        INVOKEVIRTUAL org/apache/tapestry5/internal/plastic/StaticContext.get (I)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/ComputedValue
        ALOAD 2
        INVOKEINTERFACE org/apache/tapestry5/plastic/ComputedValue.get (Lorg/apache/tapestry5/plastic/InstanceContext;)Ljava/lang/Object;
        CHECKCAST org/apache/tapestry5/plastic/FieldConduit
        PUTFIELD test/pages/Index.result3_FieldConduit : Lorg/apache/tapestry5/plastic/FieldConduit;
        ALOAD 0
        INVOKEVIRTUAL test/pages/Index.initializeInstance ()V
        RETURN
        MAXSTACK = 0
        MAXLOCALS = 0
    }

                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252858#comment-13252858 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

Think I found the problem:


    private FieldInstrumentations findInstrumentations(FieldInsnNode node)
    {
        if (node.owner.equals(classNode.name))
        {
            return fieldInstrumentations;
        }

        return pool.getFieldInstrumentations(node.owner);

    }


What I'm seeing in the debugger is that node.owner is the name of the class being *transformed*, not the class that contains the field.
                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Commented] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13252843#comment-13252843 ] 

Howard M. Lewis Ship commented on TAP5-1860:
--------------------------------------------

Already seeing some incorrect bytecode, in the intermediate class, Parent:


      onOther()V
       L0
        LINENUMBER 14 L0
        ALOAD 0
        ICONST_1
        PUTFIELD test/base/pages/other/Parent.fieldSetOnEvent : Z


... thought it might be due to name collision, but nope.  That is, the fact that each class defines a method named "onOther()".  


Awesome. I now have a test case that fails in the Plastic test suite.
                
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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

        

[jira] [Closed] (TAP5-1860) Access to protected component fields does not always reflect in subclasses

Posted by "Howard M. Lewis Ship (Closed) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/TAP5-1860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship closed TAP5-1860.
--------------------------------------

       Resolution: Fixed
    Fix Version/s: 5.4
                   5.3.3
    
> Access to protected component fields does not always reflect in subclasses
> --------------------------------------------------------------------------
>
>                 Key: TAP5-1860
>                 URL: https://issues.apache.org/jira/browse/TAP5-1860
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Olaf Tomczak
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.3.3, 5.4
>
>         Attachments: testapp.tgz
>
>
> There seems to be a problem with the new feature introduced in 5.3.2 - https://issues.apache.org/jira/browse/TAP5-1801
> When I create a protected field in by base page class, setting the field in a subclass' event handling method seems to have no effect.

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