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