Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
V2 2.0.5
-
None
-
None
Description
Using different namespaces for olingo annotated POJOs and the AnnotationEdmProvider may produce unparsable queries. Here is how to reproduce:
- create model that uses 2 namespaces with navigation between entities, for example the entities A and B have namespace AB, the entities C, D have namespace CD.
@EdmEntityType(name = "A", namespace = "AB") @EdmEntitySet(name = "AA") class A { @EdmKey @EdmProperty String id; @EdmNavigationProperty(toMultiplicity = Multiplicity.ZERO_OR_ONE, toType = B.class) B b; } @EdmEntityType(name = "B", namespace = "AB") @EdmEntitySet class B { @EdmNavigationProperty(toMultiplicity = Multiplicity.MANY, toType = A.class) List<A> a; } @EdmEntityType(name = "C", namespace = "CD") @EdmEntitySet(name = "CC") class C { @EdmKey @EdmProperty String id; @EdmNavigationProperty(toMultiplicity = Multiplicity.ZERO_OR_ONE, toType = D.class) D d; } @EdmEntityType(name = "D", namespace = "CD") @EdmEntitySet class D { @EdmNavigationProperty(toMultiplicity = Multiplicity.MANY, toType = C.class) List<C> c; }
- Now build the model with
new AnnotationEdmProvider(Arrays.<Class<?>> asList(A.class, B.class, C.class, D.class));
- The query http://localhost/CC('1')/D results in
Attempt to parse these queries results inorg.apache.olingo.odata2.api.edm.EdmException: An exception occurred. at org.apache.olingo.odata2.core.edm.provider.EdmEntityContainerImplProv.getAssociationSet(EdmEntityContainerImplProv.java:169) at ...
I guess the reason is that the default namespace container is generated in the wrong schema (the schema for the last entities in the list)
This issue is blocking our development.