Riccardo, I will take a look at this because we have 2 differences with your
case:
- we use the filter only to return a dictionary
- we use only JSON
So to be perfectly clear our code is this one:
static ERXKeyFilter showFilter(final boolean showCustomValues) {
final ERXKeyFilter showFilter = ERXKeyFilter.filterWithNone();
showFilter.include(Product.Keys.PRODUCT_TYPE);
showFilter.include(Product.Keys.TITLE);
if (showCustomValues) {
showFilter.include(Product.Keys.CUSTOM_VALUES,
ERXKeyFilter.filterWithAll());
}
return showFilter;
}
Before (a couple of months ago), we manipulated nodes and even generating JSON
by hand !! So there are solutions for sure.
I will make a test to POST a dictionary in one of our request of our project
and keep you posted.
Philippe
On 11 oct. 2014, at 00:22, Riccardo De Menna <[email protected]> wrote:
> Hi Philippe,
>
> The filters seem ok to me… I’ve stepped through the ERRest code and it does
> match them. (BTW in this particular case the filter explicitly includes that
> property).
> The thing is that after matching it, it looks for a relationship property or
> a primitive one.
> Since the dictionary is neither, it discards the value.
>
> Let me post some code…
>
> I have a “location” property that holds geographic data (very similar to
> iOS’s CLPlacemark and CLLocation).
> I need to move this data back and forth between server and client, where it
> will be “rebuilt” into a CLLocation object.
>
> Since the “location” property is not primitive, I’ve excluded that one from
> the filter and instead included a custom “locationDictionary”.
>
> Something like the following…
>
> public NSDictionary<String,Object> locationDictionary() {
> return location() != null ? location().toPlistDictionary() : null;
> }
>
> public void setLocationDictionary(NSDictionary<String,Object> dictionary) {
> setLocation(TLocation.fromPlistDictionary(dictionary));
> }
>
> When I try to update the record on the server posting from the client, the
> location remains null.
>
> I was hoping that ERRest would detect that there is NO “locationDictionary”
> relationship and simply KVC post it to my EO.
>
> Maybe I’m just assuming something wrong… but what’s the best way to move
> dictionary attributes then?
>
> Thank you all in advance,
> Riccardo
>
> On 10/ott/2014, at 23:59, Philippe Rabier <[email protected]> wrote:
>
>> Hi Riccardo
>>
>> Did you think to create an alias and use it in your filter? And didn't you
>> forget to add a filter that includes all the keys when you built your write
>> filter?
>>
>> Otherwise all map content is excluded if you just add the key/alias of your
>> "map" attribute without using the method which takes a key and a filter as
>> parameters.
>>
>> Philippe Rabier
>> ---------------------
>> http://twitter.com/prabier
>>
>> Sent from my iPhone
>> Philippe Rabier
>> ---------------------
>> http://twitter.com/prabier
>>
>> Sent from my iPhone
>>
>>
>>> Anyone on this?
>>>
>>> On 09/ott/2014, at 15:52, Riccardo De Menna <[email protected]> wrote:
>>>
>>>> Hi all,
>>>>
>>>> This is an ERRest specific question.
>>>>
>>>> I have an iOS -> WebObjects/ERRest setup regularly working.
>>>> One of the entities on both sides has an attribute that returns an
>>>> NSDictionary.
>>>> The problem is that when I try to update this attribute from the iOS side
>>>> into the WO side, it is silently skipped and left empty.
>>>>
>>>> The iOS side JSON-serializes everything before posting the Rest requests…
>>>> as a result, the dictionary attribute shows in the JSON output, very
>>>> similar to a relationship child node.
>>>>
>>>> I could be saying something stupid here so please don’t be too harsh…
>>>>
>>>> The thing is, together with any primitive type, I was assuming that the
>>>> Map/Dictionary kind was among the things I could “obviously” send.
>>>> Now I’m not so sure… could anybody shed some light on this, since I could
>>>> be banging my head under the wrong tree?
>>>>
>>>> In other words… Can I send a Map/Dictionary type object inside my JSON
>>>> request and hope that WO/ERRest will catch that it is NOT a relationship
>>>> to other nodes, but simply a plain old dictionary and call my entity
>>>> setter or am I simply confusing ERRest?
>>>>
>>>> BTW, not sure if it means anything, but the attribute is actually a class
>>>> method and not a real model attribute since the dictionary needs to be
>>>> processed. Could that be the issue?
>>>>
>>>> Please help,
>>>> Riccardo De Menna
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list ([email protected])
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/demenna%40tuorlo.net
>>>>
>>>> This email sent to [email protected]
>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/prabier%40icloud.com
>>>
>>> This email sent to [email protected]
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/demenna%40tuorlo.net
>>
>> This email sent to [email protected]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]