You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Michael Bolz (JIRA)" <ji...@apache.org> on 2016/01/27 22:48:39 UTC
[jira] [Assigned] (OLINGO-857) AnnotationEdmProvider generates
unparsable EDM
[ https://issues.apache.org/jira/browse/OLINGO-857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Bolz reassigned OLINGO-857:
-----------------------------------
Assignee: Michael Bolz
> 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, 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)