[ 
https://issues.apache.org/jira/browse/TAPESTRY-2460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12607392#action_12607392
 ] 

kristian edited comment on TAPESTRY-2460 at 6/23/08 2:59 PM:
------------------------------------------------------------------------

hi howard,

i tested my beaneditor example with the latest codebase (svn 670759 and 670748) 
and i still got the same StackOverflowException. 

My test tries to simulate an example where the second BeanEditor receives its 
data from a PropertyEditContext object. it cannot access the child property 
directly because the block is defined in another page that contributes the 
required Blocks. 

i was not able to track down the problem myself, but i guess the problem is 
that the first BeanEditors' PropertyEditor passes the object to the 
PropertyEditContext by creating a conduit. Then the second BeanEditor tries to 
pass in the object as well by creating another conduit. and somehow the first 
conduit starts pointing to the second conduit (or the other way round). when i 
then submit the form the BeanEditor will try to read the object parameter by 
reading the conduit and thus starting the loop. 

As said, its just a guess. I already took a look at the cache inside the 
PropertyConduitSource but couldn't find anything. below is the stack trace i get

g,
kris

// the beginning of the stack trace is different
# 
rg.apache.tapestry5.ioc.util.CaseInsensitiveMap.caseInsenitiveHashCode(CaseInsensitiveMap.java:485)
# 
org.apache.tapestry5.ioc.util.CaseInsensitiveMap.select(CaseInsensitiveMap.java:390)
# 
org.apache.tapestry5.ioc.util.CaseInsensitiveMap.get(CaseInsensitiveMap.java:367)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.getBinding(InternalComponentResourcesImpl.java:284)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.isBound(InternalComponentResourcesImpl.java:158)
# 
org.apache.tapestry5.corelib.components.BeanEditor._$read_parameter_object(BeanEditor.java)
# 
org.apache.tapestry5.corelib.components.BeanEditor.getObject(BeanEditor.java:142)
# org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:53)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:237)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:252)
# 
org.apache.tapestry5.corelib.components.PropertyEditor._$read_parameter_object(PropertyEditor.java)
# 
org.apache.tapestry5.corelib.components.PropertyEditor.access$2(PropertyEditor.java:86)
# 
org.apache.tapestry5.corelib.components.PropertyEditor$1.getPropertyValue(PropertyEditor.java:166)
# org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:53)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:237)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:252)
# 
org.apache.tapestry5.corelib.components.BeanEditor._$read_parameter_object(BeanEditor.java)
# 
org.apache.tapestry5.corelib.components.BeanEditor.getObject(BeanEditor.java:142)
# org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:53)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:237)
# 
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:252)
# 
org.apache.tapestry5.corelib.components.PropertyEditor._$read_parameter_object(PropertyEditor.java)
# 
org.apache.tapestry5.corelib.components.PropertyEditor.access$2(PropertyEditor.java:86)
# 
org.apache.tapestry5.corelib.components.PropertyEditor$1.getPropertyValue(PropertyEditor.java:166)
# org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:53)

  
> Nested BeanEditors (where the block parameter for a property to one 
> BeanEditor contains another BeanEditor) results in a StackOverflowException
> -----------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TAPESTRY-2460
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2460
>             Project: Tapestry
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.0.13
>            Reporter: Kristian Marinkovic
>            Assignee: Howard M. Lewis Ship
>             Fix For: 5.0.14
>
>         Attachments: beaneditor.zip
>
>
> the eclipse/maven example project shows how a StackOverflowException is 
> thrown if a Form is submitted that contains a BeanEditor that itself contains 
> another BeanEditor. However the initial display works perfectly.
> somehow i suspect the PropertyConduits to be responsible because two of them 
> produce the infinite loop.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to