[ 
https://issues.apache.org/jira/browse/OLINGO-857?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15122245#comment-15122245
 ] 

Michael Bolz commented on OLINGO-857:
-------------------------------------

Hi [~mkolev],

Sorry that this solution does not fit your needs.

However, what Olingo generates is IMHO nearly the same as that of the Northwind 
service.
Two schemas with an entity container in each and a default entity container.
For Northwind all EntitySets are in the default container, hence they do not 
need the container name in the URL.
But if EntitySets are defined in each Schema/Container, those which are not in 
the default container would require the container name in the URL.
The problem in the Olingo generated Edm is that there is no way to define which 
entity container is the default.
But if this would be fixed you would need at least for the EntitySets outside 
the default container the container name in the URL (see also as example the 
{{Container2.Photos}} in the Olingo Core Reference Scenario 
({{ReferenceScenarioNonJaxrs.svc/Container2.Photos)}}).

Kind Regards,
Michael

> AnnotationEdmProvider generates unparsable EDM
> ----------------------------------------------
>
>                 Key: OLINGO-857
>                 URL: https://issues.apache.org/jira/browse/OLINGO-857
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata2-annotation
>    Affects Versions: V2 2.0.5
>            Reporter: Mitko Kolev
>            Assignee: Michael Bolz
>         Attachments: -Edm-model-with-namespaces.patch, ABCD.edmx, 
> AnnotationEdmProviderNamespacesTest.java, CDAB.edmx, long-description.txt
>
>
> 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}}.
> {code}
> @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;
>     }
> {code}
> * Now build the model with 
> {code}
> new AnnotationEdmProvider(Arrays.<Class<?>> asList(A.class, B.class, C.class, 
> D.class));      
> {code}
> * The query http://localhost/CC('1')/D results in 
>  Attempt to parse these queries results in 
> {code}
> org.apache.olingo.odata2.api.edm.EdmException: An exception occurred.
>       at 
> org.apache.olingo.odata2.core.edm.provider.EdmEntityContainerImplProv.getAssociationSet(EdmEntityContainerImplProv.java:169)
>       at 
> ...
> {code}
> 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. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to