I'm using the ODATA extension to interact with my ODATA web service, and I ran 
into an issue when trying to delete entities with an Int64 Id.  When I pass my 
entity to Service.deleteEntity(), it eventually calls down into 
TypeUtils.toEdmKey(), which calls TypeUtils.toEdmInt64(), which calls 
Long.toString().  Nothing along the way appends a 'L' to the string, which it 
seems like is required per the ODATA spec (see 
http://www.odata.org/developers/protocols/overview#AbstractTypeSystem).

I believe this is a bug.  I poked around a bit looking at the code, and it 
looks like the toEdmKey() function is only used from Metadata, and is intended 
entirely for getting the key to use in the URI (there's a separate toEdm() 
method that's used from Service for getting a string to use for the value in 
the data).  Both toEdmKey() and toEdm() use toEdmInt64(), so it seems like 
toEdmKey() should be explicitly appending a 'L' to result in the Int64 case 
(and toEdm()/toEdmInt64() should remain unaffected).

Thanks!

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2879373

Reply via email to