[ 
https://issues.jboss.org/browse/JBSEAM-4589?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12574328#comment-12574328
 ] 

Peter Brewer commented on JBSEAM-4589:
--------------------------------------

I've applied a patch that I have up and working on my local environment. 

The patch will now save entities to the conversation even if they are wrapped 
or embedded in a complex user defined data-structure. However, for the sake of 
performance such wrapped entities must be annotated on the field with 
org.jboss.seam.annotations.persistence.EntityWrapper. This is a marker 
interface that tells the ManagedEntityWrapper to drop into wrapper and then 
perform passivation at that level. Further entity wrappers down the object 
graph must also be annotated though.

There are a couple of issues so far:
1. Recursive references are not handled, I'm currently working on this(should 
be quite simple), but thought others may like the patch straight away.
2. The field reference is not set to null, so the entity is serialized twice, 
once in the field and once in the conversation. This is so that the 
deserialization process has knowledge of the runtime type of the field, but it 
may be possible to fix this.
3. If a Collection or Map is annotated with EntityWrapper it must provide 
guaranteed ordering otherwise activation may break. Not sure how to avoid this, 
so suggestions welcome.

Please let me have any feedback you may have.



> ManagedEntityWrapper wrap and deserialize with in-depth fields of Stateful 
> Beans
> --------------------------------------------------------------------------------
>
>                 Key: JBSEAM-4589
>                 URL: https://issues.jboss.org/browse/JBSEAM-4589
>             Project: Seam
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.2.GA
>            Reporter: Sebastien Boutte
>         Attachments: JBSEAM-4375 and JBSEAM-4589.diff, 
> ManagedEntityWrapper.diff
>
>
> As it is said in documentation (Part : EJB Passivation and the 
> ManagedEntityInterceptor) ; seam is capable of passivate SMPC (EntityManager 
> with @In) and reattach all instances loaded at activation.
> For simple fields (Entities, Lists, Maps ...) , it works perfectly.
> For user defined fields (Wrapper with entity object, or more complex 
> structure), this is not the case and cause a lazy exception later after 
> activation.
> In class ManagedEntityWrapper, methods wrap and deserialize are not able to 
> do in depth operations.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues

Reply via email to