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


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.

Reply via email to