I think it was a problem in the past, but right now with my one-line fix, it 
works fine when I create or update a blog entry, and if I set 
setAnonymousUpdateEnabled(true) on the categories, it creates the category as 
expected.

I'm going to commit it to the integration branch, if someone find a test case 
that my fix breaks, please say so.

> It was my understanding that many-to-many relationships had to be handled 
> "manually" due to them not being processed correctly by the framework.
> 
> -G
> 
> 
> On Jun 18, 2012, at 7:52 AM, Pascal Robert wrote:
> 
>> I'm working on my WOWODC slides, and I'm doing something that I didn't do 
>> for many months: updating a 1:N (in fact, it's a N:N with a flatten 
>> relationship). So I have a blog entry which can have multiple categories, 
>> and I was doing an update to a blog post to add some categories, with:
>> 
>> PUT /cgi-bin/WebObjects/WOWODCBlog.woa/ra/blogEntries/2.json HTTP/1.1
>> 
>> { "id":2,"type":"BlogEntry", categories: [ {id : 1}, {id : 2} ] }
>> 
>> Problem is: the categories were not linked to the blog post. Worse, if I 
>> make the link between a category and the blog entry with a "manual" EOF 
>> call, and after I try the same PUT call, it was emptying the relationship! 
>> So after debugging, I found that the problem was here:
>> 
>> ERXRestRequestNode.java.updateObjectWithFilter
>> 
>> I was getting into:
>> 
>>      if (toManyNode.children().count() == 0 && 
>> ERXRestUtils.isPrimitive(toManyNode.value())) {
>>              if (lockedRelationship) {
>>                      childObj = null;
>>              } else {
>>                      childObj = toManyNode.value();
>>              }
>>      }
>> 
>> toManyNode.id was ok (returns the id I'm passing in), but value() is empty, 
>> so I was not reaching the logic below in the method that is adding the 
>> objects into the relationship. I fixed it by removed the call to 
>> 'toManyNode.value()' and adding :
>> 
>>      childObj = 
>> IERXRestDelegate.Factory.delegateForClassDescription(destinationClassDescription).objectOfEntityWithID(destinationClassDescription,
>>  id, context);
>> 
>> Since then, works perfectly. But since that code was added last year (in 
>> commit 35a78ceea4f1c1cb713884d3f02b3f8d048b452c), I'm wondering is my fix is 
>> ok or it's me who do something wrong.
>> 
>> 
>> _______________________________________________
>> 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/mastermind%40knuckleheads.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]

Reply via email to