Roger Che created OLINGO-1261: --------------------------------- Summary: The target binding type should be available from Navigation Property Key: OLINGO-1261 URL: https://issues.apache.org/jira/browse/OLINGO-1261 Project: Olingo Issue Type: Bug Components: odata4-server Affects Versions: (Java) V4 4.4.0 Reporter: Roger Che Attachments: Zoo.xml
The Navigation Property can declare with a (collection of) parent type and bind to a sub type EntitySet. See org.apache.olingo.client.core.metadatavalidator.EdmTypeValidator#validateNavigationBindingPaths But in the runtime, the Navigation Property always return a type of the declare type but not the binding type. This can cause problem when the Navigation Property is declare with a parent type while in the EntitySet/Singleton it is bind to the child type Entity Set. See the uploaded Zoo.xml. The problems includes. # When sending GET request to [http://localhost:8080/zoo.svc/Zoo/Animals.] I expect to get the binding type 'Tiger' for UriResourceNavigation 'Animals'. Because in the metadata, the Singleton Zoo bind the Animals to Collection(Tiger). But there is no such API. I can only use the API UriResourceNavigation#getProperty()#getType() to get the declaring type 'Animal'. Since I cannot get the actual binding type. I cannot serialize the entity with a Tiger type which includes the property 'Weight' # When sending POST request to do the deep insert to [http://localhost:8080/zoo.svc/Zoo/Animals.] with the payload \{"Id":"tiger-002", "Name": "test test", "Weight": 150}. I still expect to get binding type 'Tiger' for UriResourceNavigation 'Animals'. So that i can deserialize the bod to an entity of Tiger. But I can only get the type 'Animal' for UriResourceNavigation 'Animals' from existing API. And it will throw me an exception telling that "'Weight' can not be mapped as a property or an annotation." -- This message was sent by Atlassian JIRA (v7.6.3#76005)