'@self' is not a collection by any definition of the word, it's a single
object, hence the lack of the collection (and the lack of filtering, there
is only one 'self' and that's the viewer :)

The same goes for activities, a query on /activities/@me/@self returns a
collection of activities (since it can contain 0, 1 or many results),
however /activities/@me/@self/<activityId> can only return 0 or 1 results,
so it returns an activity record and not a RestfulCollection.

Even if you could do
/people/@me/@self?filter...@friends&filterOp=contains&filterValue=<someUserId>
it would *always* return an empty result set *unless* the social networking
site allows for schizophrenic relationships and allowed you to befriend
and/or unfriend your self :)

Really i think the query your looking for is /people/@me/@self/<userId>,
which tells you if a person is a friend of '@me' or not (and returns a
single record), or
/people/@me/@friends?filterBy=id&filterOp=contains&filterValue=<userId>,
which returns a collection with a 0 or 1 entries in it.


On Fri, Feb 13, 2009 at 12:56 PM, Ben Smith <[email protected]> wrote:

> I'd personally prefer that as you'd get a more consistent response.
> However, this would change the current response for @self requests as it
> would be wrapped in the output of a RestfulCollection object. Currently a
> response for an @self request returns <response><person></person></response>
> where as a request to @friends returns
> <response><entry><person></person>[..]</entry></response>.
>
> Interestingly.. if you read
> http://opensocial-resources.googlecode.com/svn/spec/draft/REST-API.xml#rfc.section.3.1
>  it
> agrees with you, that every request should be assumed to be a collection,
> even if it will only ever have one entry!
>
> entry: an array of objects, one for each item matching the request, as
> defined in Section 11.1. For consistency of parsing, if the request could
> possibly return multiple items (as is normally the case), this value MUST
> always be an array of results, even if there happens to be 0 or 1 matching
> results. If the request is specifically for a single contact (e.g. because
> the request contains Additional Path Information like /@me/@all/{id} or
> /@me/@self), then entry MUST be an object containing the single item
> returned (i.e. "entry": [ { /* first item */ } ] and "entry": { /* only item
> */ } respectively).
>
> Therefore, I'll rescind my current patch and provide one that has
> PersonHandler only use getPeople(). Plan?
>
> Cheers,
> Ben
>
>
> On 13 Feb 2009, at 11:42, Ian Boston wrote:
>
>  Ben,
>>
>> What is wrong with doing:
>>
>> personService.getPeople(personSet, GroupId.Type.all, collectionOptions,
>> fieldsSet, securityToken);
>>
>> where personSet contains only the currentUser and the collectionOptions is
>> as per the URL.
>>
>> ?
>>
>> If that would give you what you want, there is no SPI change required.
>> (tell me I have missed something if I have, no coffee yet :)
>> )
>> Ian
>>
>> On 13 Feb 2009, at 11:32, Ben Smith wrote:
>>
>>  Please could someone have an opinion about
>>> https://issues.apache.org/jira/browse/SHINDIG-904
>>>
>>> There's a chance I need to provide a new patch as there have been quite a
>>> few changes since I originally provided it.
>>>
>>> It is quite important for me to be able to provide the standard
>>> parameters for 0.9:
>>> http://opensocial-resources.googlecode.com/svn/spec/draft/REST-API.xml#standardQueryParameters
>>>  and
>>> these need to be available to getPerson() to support the following query:
>>> /people/@me/@self?filter...@friends&filterOp=contains&filterValue=<someUserId>
>>>
>>> I realise that this change involves changing an SPI interface but this is
>>> the smallest, simplest change that was discussed a while ago, which I then
>>> submitted this patch for.
>>>
>>> Cheers,
>>> Ben Smith
>>>
>>>
>>>
>>
>

Reply via email to