cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Artyom Kravchenko (JIRA)" <>
Subject [jira] [Updated] (CAY-2195) ROP: restore CayenneContext.userProperties in server context during client commit
Date Thu, 05 Jan 2017 08:50:58 GMT


Artyom Kravchenko updated CAY-2195:
    Component/s: ROP

> ROP: restore CayenneContext.userProperties in server context during client commit
> ---------------------------------------------------------------------------------
>                 Key: CAY-2195
>                 URL:
>             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

View raw message