[ https://issues.apache.org/jira/browse/CAY-2195?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Artyom Kravchenko updated CAY-2195: ----------------------------------- Component/s: ROP > ROP: restore CayenneContext.userProperties in server context during client > commit > --------------------------------------------------------------------------------- > > Key: CAY-2195 > URL: https://issues.apache.org/jira/browse/CAY-2195 > Project: Cayenne > Issue Type: Task > Components: ROP > Affects Versions: 4.0.M3 > Environment: Cayenne ROP, ProtostuffROPSerializationService, > HttpROPConnector > Reporter: Artyom Kravchenko > > Hi dear cayenne developers. > I want to to use CayenneContext.userProperties - set it on client side and > get it on server during some listeners or filters execution. I need it to > handle client commits in different ways (in depends on userProperties): > create additional records, make some validation and other (in accordance with > my business requirements). > As I see this is not works as I expect: any userProperties which I set up in > client context do not accessible on server. > I have looked on this issue deeper and discover that: > - ClientServerChannel(singleton per client) store serverContext (also > singleton) instance and use this instance for any ROP actions (Sync/Query). > In my case all client changes (GraphDiff changes) will be restored in > serverContext and all subsequent operations (filters/listeners/callbacks) > will use exactly serverContext - do not know anything about client context > (named as 'originatingContext' in cayenne), moreover about userProperties. > - ClientMessage (SyncMessage in my case) has a reference on client context > (source). On client side SyncMessage initialized properly, but after > deserialization (by ProtostuffROPSerializationService on server side) the > source (client context) are lost - null value. > Yes, I know that source (client context) is not uses in any place on server > side (use serverContext for any ROP operations as described above), but this > is good place I would extract some useProperties from. > One more question is how cayenne ROP implements queue for client actions > (e.g. this is multithreading client app) since ClientServerChannel use the > same instance of serverContext for any client action. This is reasonable that > different threads can change serverContext state simultaneously. > -- This message was sent by Atlassian JIRA (v6.3.4#6332)