You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Artyom Kravchenko (JIRA)" <ji...@apache.org> on 2017/01/05 08:50:58 UTC

[jira] [Updated] (CAY-2195) ROP: restore CayenneContext.userProperties in server context during client commit

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