You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by "Jamey Wood (JIRA)" <ji...@apache.org> on 2008/07/07 20:50:33 UTC

[jira] Updated: (SHINDIG-428) Adding multiple newUpdatePersonAppDataRequest items to a single DataRequest does not work (for restful container)

     [ https://issues.apache.org/jira/browse/SHINDIG-428?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jamey Wood updated SHINDIG-428:
-------------------------------

    Attachment: fix-428-bug.patch

A simple patch which addresses this issue (but, as noted in the original description, may not be sufficiently robust as it could allow for collisions with keys selected by end users).

> Adding multiple newUpdatePersonAppDataRequest items to a single DataRequest does not work (for restful container)
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: SHINDIG-428
>                 URL: https://issues.apache.org/jira/browse/SHINDIG-428
>             Project: Shindig
>          Issue Type: Bug
>          Components: OpenSocial  feature (Javascript)
>         Environment: restful container
>            Reporter: Jamey Wood
>         Attachments: fix-428-bug.patch
>
>
> When using the restful container, adding multiple newUpdatePersonAppDataRequest items to a single DataRequest does not work.  Specifically, only the last such item added will actually be transmitted to the server.  For example, this javascript sequence:
>   var req = opensocial.newDataRequest();
>   req.add(req.newUpdatePersonAppDataRequest(opensocial.DataRequest.PersonId.OWNER, 'key1', 'val1'));
>   req.add(req.newUpdatePersonAppDataRequest(opensocial.DataRequest.PersonId.OWNER, 'key2', 'val2'));
>   req.send();
> Currently causes json like this to be sent to the server:
>   {"undefined":{"url":"/appdata/@owner/@self/@app?fields=key2","method":"POST","postData":{"key2":"val2"}}}
> Obviously, the issue is that key1/val1 are not included in this json.
> I believe this issue arises because of these lines in features/opensocial-current/restfulcontainer.js:
>   116   var jsonBatchData = {};
>   117 
>   118   for (var j = 0; j < totalRequests; j++) {
>   119     var requestObject = requestObjects[j];
>   120 
>   121     jsonBatchData[requestObject.key] = {url : requestObject.request.url,
>   122       method : requestObject.request.method};
>   123     if (requestObject.request.postData) {
>   124       jsonBatchData[requestObject.key].postData = requestObject.request.postData;
>   125     }
>   126   }
> The results of newUpdatePersonAppDataRequest(...) calls do not have a "key" value set.  So each of them ends up competing for the null entry in the jsonBatchData map (and the last one in wins--overwriting any previous items).
> I have a very simple patch which does get this working, but may not do so in a robust enough way.  With it, an end user could cause problems if they chose an unusual key (such as "__syskey_0") for a data request in the same batch.

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