Repository: olingo-odata4 Updated Branches: refs/heads/master deb1d2036 -> 37a1e110c
[OLINGO-1004] removed CTCompCompExtended and added CTBase in ESFourKeyAlias instead Signed-off-by: Christian Amend <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/d30f47ec Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/d30f47ec Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/d30f47ec Branch: refs/heads/master Commit: d30f47ec6b476e99904ccbdc3521a16a39c261a4 Parents: deb1d20 Author: Morten Riedel <[email protected]> Authored: Tue Aug 16 15:11:43 2016 +0200 Committer: Christian Amend <[email protected]> Committed: Wed Aug 17 09:43:38 2016 +0200 ---------------------------------------------------------------------- .../olingo/server/tecsvc/data/DataCreator.java | 10 +- .../tecsvc/provider/ComplexTypeProvider.java | 8 - .../json/ODataJsonDeserializerEntityTest.java | 45 ++-- .../xml/ODataXmlDeserializerTest.java | 65 +++-- .../json/ODataJsonSerializerTest.java | 96 ++++--- .../serializer/xml/ODataXmlSerializerTest.java | 266 ++++++++----------- 6 files changed, 234 insertions(+), 256 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d30f47ec/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java index aac9a34..542e393 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/data/DataCreator.java @@ -196,9 +196,10 @@ public class DataCreator { .addProperty(createComplex("PropertyCompComp", ComplexTypeProvider.nameCTCompComp.getFullQualifiedNameAsString(), createComplex("PropertyComp", - ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(), + ComplexTypeProvider.nameCTBase.getFullQualifiedNameAsString(), createPrimitive("PropertyInt16", (short) 111), - createPrimitive("PropertyString", "Num111") + createPrimitive("PropertyString", "Num111"), + createPrimitive("AdditionalPropString", "Test123") ) )) ); @@ -1197,12 +1198,11 @@ public class DataCreator { entity = new Entity(); entity.addProperty(createPrimitive("PropertyInt16", (short) 2)); entity.addProperty(createComplex("PropertyComp", - ComplexTypeProvider.nameCTCompCompExtended.getFullQualifiedNameAsString(), + ComplexTypeProvider.nameCTCompComp.getFullQualifiedNameAsString(), createComplex("PropertyComp", ComplexTypeProvider.nameCTTwoPrim.getFullQualifiedNameAsString(), createPrimitive("PropertyInt16", (short) 987), - createPrimitive("PropertyString", "String 2")), - createPrimitive("PropertyDate", getDate(2012, 12, 3)))); + createPrimitive("PropertyString", "String 2")))); entityCollection.getEntities().add(entity); setEntityType(entityCollection, edm.getEntityType(EntityTypeProvider.nameETCompComp)); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d30f47ec/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ComplexTypeProvider.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ComplexTypeProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ComplexTypeProvider.java index 7d539b6..b04b3d1 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ComplexTypeProvider.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ComplexTypeProvider.java @@ -38,8 +38,6 @@ public class ComplexTypeProvider { public static final FullQualifiedName nameCTCompCollComp = new FullQualifiedName(SchemaProvider.NAMESPACE, "CTCompCollComp"); public static final FullQualifiedName nameCTCompComp = new FullQualifiedName(SchemaProvider.NAMESPACE, "CTCompComp"); - public static final FullQualifiedName nameCTCompCompExtended = new FullQualifiedName( - SchemaProvider.NAMESPACE, "CTCompCompExtended"); public static final FullQualifiedName nameCTCompNav = new FullQualifiedName(SchemaProvider.NAMESPACE, "CTCompNav"); public static final FullQualifiedName nameCTMixPrimCollComp = new FullQualifiedName(SchemaProvider.NAMESPACE, @@ -126,12 +124,6 @@ public class ComplexTypeProvider { return new CsdlComplexType() .setName("CTCompComp") .setProperties(Arrays.asList(PropertyProvider.propertyComp_CTTwoPrim)); - - } else if (complexTypeName.equals(nameCTCompCompExtended)) { - return new CsdlComplexType() - .setName("CTCompCompExtended") - .setBaseType(nameCTCompComp) - .setProperties(Arrays.asList(PropertyProvider.propertyDate)); } else if (complexTypeName.equals(nameCTCompCollComp)) { return new CsdlComplexType() http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d30f47ec/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java index c92edfc..d91f3ff 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java @@ -46,7 +46,6 @@ import org.apache.olingo.commons.api.edm.EdmProperty; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.provider.CsdlMapping; import org.apache.olingo.commons.api.format.ContentType; -import org.apache.olingo.commons.core.edm.primitivetype.EdmDate; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.deserializer.DeserializerException; import org.apache.olingo.server.api.deserializer.DeserializerResult; @@ -229,26 +228,34 @@ public class ODataJsonDeserializerEntityTest extends AbstractODataDeserializerTe + "\"@odata.etag\":\"W/\\\"32767\\\"\"," + "\"PropertyInt16\":32767," + "\"PropertyComp\":{" - + "\"@odata.type\":\"#olingo.odata.test1.CTCompCompExtended\"," - + "\"PropertyComp\":{" - + "\"@odata.type\":\"#olingo.odata.test1.CTTwoPrim\"," - + "\"PropertyInt16\":32767," - + "\"PropertyString\":\"First Resource - first\"" - + "}," - + "\"PropertyDate\":\"2012-10-03\"" - + "}}"; - final Entity result = deserialize(payload, "ETCompComp"); + + "\"@odata.type\":\"#olingo.odata.test1.CTTwoPrim\"," + + "\"PropertyInt16\":11," + + "\"PropertyString\":\"Num11\"" + + "}," + + "\"PropertyCompComp\":{" + + "\"@odata.type\":\"#olingo.odata.test1.CTCompComp\"," + + "\"PropertyComp\":{" + + "\"@odata.type\":\"#olingo.odata.test1.CTBase\"," + + "\"PropertyInt16\":32767," + + "\"PropertyString\":\"Num111\"," + + "\"AdditionalPropString\":\"Test123\"" + + "}}}"; + final Entity result = deserialize(payload, "ETFourKeyAlias"); Assert.assertNotNull(result); - Property property = result.getProperty("PropertyComp"); - Assert.assertEquals("PropertyComp", property.getName()); - Assert.assertTrue(property.isComplex()); - final ComplexValue cv = property.asComplex(); - Assert.assertEquals("olingo.odata.test1.CTCompCompExtended", property.getType()); - Assert.assertEquals( - "2012-10-03", - EdmDate.getInstance().valueToString(getCVProperty(cv, "PropertyDate").asPrimitive(), false, 10, 3, 0, - false)); + Property propertyCompComp = result.getProperty("PropertyCompComp"); + Assert.assertEquals("PropertyCompComp", propertyCompComp.getName()); + Assert.assertEquals("olingo.odata.test1.CTCompComp", propertyCompComp.getType()); + Assert.assertTrue(propertyCompComp.isComplex()); + + ComplexValue complexValuePropComp = propertyCompComp.asComplex(); + Property propertyComp = getCVProperty(complexValuePropComp, "PropertyComp"); + Assert.assertEquals("PropertyComp", propertyComp.getName()); + Assert.assertEquals("olingo.odata.test1.CTBase", propertyComp.getType()); + Assert.assertTrue(propertyComp.isComplex()); + + final ComplexValue cvAdditionalString = propertyComp.asComplex(); + Assert.assertEquals("Test123",getCVProperty(cvAdditionalString, "AdditionalPropString").asPrimitive()); } @Test http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d30f47ec/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java index 416c219..0daee4d 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/xml/ODataXmlDeserializerTest.java @@ -32,6 +32,7 @@ import org.apache.olingo.commons.api.data.Link; import org.apache.olingo.commons.api.data.Property; import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntitySet; +import org.apache.olingo.commons.api.edm.EdmEntityType; import org.apache.olingo.commons.api.edm.EdmPrimitiveType; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; @@ -537,42 +538,50 @@ public class ODataXmlDeserializerTest extends AbstractODataDeserializerTest { @Test public void extendedComplexProperty() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); String payload = "<?xml version='1.0' encoding='UTF-8'?>" + "<atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\" " + "xmlns:metadata=\"http://docs.oasis-open.org/odata/ns/metadata\" " - + "xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\" " - + "metadata:etag=\"W/"32767"\">" + + "xmlns:data=\"http://docs.oasis-open.org/odata/ns/data\">" + "<atom:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\" " - + "term=\"#olingo.odata.test1.ETCompComp\"/>" - + "<atom:content type=\"application/xml\">" - + "<metadata:properties>" - + "<data:PropertyInt16>32767</data:PropertyInt16>" - + "<data:PropertyComp metadata:type=\"#olingo.odata.test1.CTCompCompExtended\">" - + "<data:PropertyComp metadata:type=\"#olingo.odata.test1.CTTwoPrim\">" - + "<data:PropertyInt16>32767</data:PropertyInt16>" - + "<data:PropertyString>First Resource - first</data:PropertyString>" - + "</data:PropertyComp>" - + "<data:PropertyDate>2012-10-03</data:PropertyDate>" - + "</data:PropertyComp>" - + "</metadata:properties>" - + "</atom:content>" - + "</atom:entry>"; + + "term=\"#olingo.odata.test1.ETFourKeyAlias\"/>" + + "<atom:content type=\"application/xml\">" + + "<metadata:properties>" + + "<data:PropertyInt16 metadata:type=\"Int16\">1</data:PropertyInt16>" + + "<data:PropertyComp metadata:type=\"#olingo.odata.test1.CTTwoPrim\">" + + "<data:PropertyInt16 metadata:type=\"Int16\">11</data:PropertyInt16>" + + "<data:PropertyString>Num11</data:PropertyString>" + + "</data:PropertyComp>" + + "<data:PropertyCompComp metadata:type=\"#olingo.odata.test1.CTCompComp\">" + + "<data:PropertyComp metadata:type=\"#olingo.odata.test1.CTBase\">" + + "<data:PropertyInt16 metadata:type=\"Int16\">111</data:PropertyInt16>" + + "<data:PropertyString>Num111</data:PropertyString>" + + "<data:AdditionalPropString>Test123</data:AdditionalPropString>" + + "</data:PropertyComp>" + + "</data:PropertyCompComp>" + + "</metadata:properties>" + + "</atom:content>" + + "</atom:entry>"; - Entity result = deserializer.entity(new ByteArrayInputStream(payload.getBytes()), - edmEntitySet.getEntityType()).getEntity(); + EdmEntityType entityType = edmEntitySet.getEntityType(); + Entity result = deserializer.entity(new ByteArrayInputStream(payload.getBytes()), entityType) + .getEntity(); Assert.assertNotNull(result); - Property property = result.getProperty("PropertyComp"); - Assert.assertEquals("PropertyComp", property.getName()); - Assert.assertTrue(property.isComplex()); - final ComplexValue cv = property.asComplex(); - Assert.assertEquals("olingo.odata.test1.CTCompCompExtended", property.getType()); - Assert.assertEquals( - "2012-10-03", - EdmDate.getInstance().valueToString(getCVProperty(cv, "PropertyDate").asPrimitive(), false, 10, 3, 0, - false)); + Property propertyCompComp = result.getProperty("PropertyCompComp"); + Assert.assertEquals("PropertyCompComp", propertyCompComp.getName()); + Assert.assertEquals("olingo.odata.test1.CTCompComp", propertyCompComp.getType()); + Assert.assertTrue(propertyCompComp.isComplex()); + + ComplexValue complexValuePropComp = propertyCompComp.asComplex(); + Property propertyComp = getCVProperty(complexValuePropComp, "PropertyComp"); + Assert.assertEquals("PropertyComp", propertyComp.getName()); + Assert.assertEquals("olingo.odata.test1.CTBase", propertyComp.getType()); + Assert.assertTrue(propertyComp.isComplex()); + + final ComplexValue cvAdditionalString = propertyComp.asComplex(); + Assert.assertEquals("Test123",getCVProperty(cvAdditionalString, "AdditionalPropString").asPrimitive()); } @Test http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d30f47ec/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java index 536c1ac..22b8807 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java @@ -904,11 +904,12 @@ public class ODataJsonSerializerTest { @Test public void selectComplex() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); final EdmEntityType entityType = edmEntitySet.getEntityType(); final EntityCollection entitySet = data.readAll(edmEntitySet); - final SelectOption select = ExpandSelectMock.mockSelectOption(Collections.singletonList( - ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString"))); + final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList( + ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyInt16"), + ExpandSelectMock.mockSelectItem(edmEntitySet,"PropertyCompComp", "PropertyComp", "PropertyString"))); InputStream result = serializer .entityCollection(metadata, entityType, entitySet, EntityCollectionSerializerOptions.with() @@ -918,21 +919,26 @@ public class ODataJsonSerializerTest { .select(select) .build()).getContent(); final String resultString = IOUtils.toString(result); - Assert.assertEquals("{" - + "\"@odata.context\":\"$metadata#ESCompComp(PropertyComp/PropertyComp/PropertyString)\"," - + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," - + "\"value\":[" - + "{\"@odata.id\":\"ESCompComp(1)\",\"PropertyComp\":" - + "{\"PropertyComp\":{\"PropertyString\":\"String 1\"}}}," - + "{\"@odata.id\":\"ESCompComp(2)\",\"PropertyComp\":" - + "{\"@odata.type\":\"#olingo.odata.test1.CTCompCompExtended\"," - + "\"PropertyComp\":{\"PropertyString\":\"String 2\"}}}]}", - resultString); + final String expected = "{" + + "\"@odata.context\":\"$metadata#ESFourKeyAlias" + + "(PropertyInt16,PropertyCompComp/PropertyComp/PropertyString)\"," + + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," + + "\"value\":[" + + "{" + + "\"@odata.id\":\"id\"," + + "\"PropertyInt16\":1," + + "\"PropertyCompComp\":{" + + "\"PropertyComp\":{" + + "\"@odata.type\":\"#olingo.odata.test1.CTBase\"," + + "\"PropertyString\":\"Num111\"" + + "}}}]}"; + + Assert.assertEquals(expected, resultString); } @Test public void selectExtendedComplexType() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); final EdmEntityType entityType = edmEntitySet.getEntityType(); final EntityCollection entitySet = data.readAll(edmEntitySet); InputStream result = serializer @@ -942,27 +948,34 @@ public class ODataJsonSerializerTest { .build()).getContent(); final String resultString = IOUtils.toString(result); - String expected = "{" + - "\"@odata.context\":\"$metadata#ESCompComp\"," + - "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," + - "\"value\":[" + - "{\"PropertyInt16\":1," + - "\"PropertyComp\":{\"PropertyComp\":{" + - "\"PropertyInt16\":123,\"PropertyString\":\"String 1\"}}}," + - "{\"PropertyInt16\":2," + - "\"PropertyComp\":{\"@odata.type\":\"#olingo.odata.test1.CTCompCompExtended\"," + - "\"PropertyComp\":{\"PropertyInt16\":987,\"PropertyString\":\"String 2\"},\"PropertyDate\":\"2012-12-03\"}}]}"; + String expected = "{" + + "\"@odata.context\":\"$metadata#ESFourKeyAlias\"," + + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," + + "\"value\":[{" + + "\"PropertyInt16\":1," + + "\"PropertyComp\":{" + + "\"PropertyInt16\":11," + + "\"PropertyString\":\"Num11\"" + + "}," + + "\"PropertyCompComp\":{" + + "\"PropertyComp\":{" + + "\"@odata.type\":\"#olingo.odata.test1.CTBase\"," + + "\"PropertyInt16\":111," + + "\"PropertyString\":\"Num111\"," + + "\"AdditionalPropString\":\"Test123\"" + + "}}}]}"; + Assert.assertEquals(expected, resultString); } @Test public void selectComplexTwice() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); final EdmEntityType entityType = edmEntitySet.getEntityType(); final EntityCollection entitySet = data.readAll(edmEntitySet); final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList( - ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString"), - ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp"))); + ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyString"), + ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyCompComp", "PropertyComp"))); final String resultString = IOUtils.toString(serializer .entityCollection(metadata, entityType, entitySet, EntityCollectionSerializerOptions.with() @@ -971,16 +984,25 @@ public class ODataJsonSerializerTest { .build()) .select(select) .build()).getContent()); - Assert.assertEquals("{" - + "\"@odata.context\":\"$metadata#ESCompComp(PropertyComp/PropertyComp)\"," - + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," - + "\"value\":[" - + "{\"@odata.id\":\"ESCompComp(1)\",\"PropertyComp\":{\"PropertyComp\":{\"PropertyInt16\":123," - + "\"PropertyString\":\"String 1\"}}}," - + "{\"@odata.id\":\"ESCompComp(2)\",\"PropertyComp\":" - + "{\"@odata.type\":\"#olingo.odata.test1.CTCompCompExtended\"," - + "\"PropertyComp\":{\"PropertyInt16\":987,\"PropertyString\":\"String 2\"}}}]}", - resultString); + + String expected = "{" + + "\"@odata.context\":\"$metadata#ESFourKeyAlias" + + "(PropertyComp/PropertyString,PropertyCompComp/PropertyComp)\"," + + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," + + "\"value\":[{" + + "\"@odata.id\":\"id\"," + + "\"PropertyComp\":{" + + "\"PropertyString\":\"Num11\"" + + "}," + + "\"PropertyCompComp\":{" + + "\"PropertyComp\":{" + + "\"@odata.type\":\"#olingo.odata.test1.CTBase\"," + + "\"PropertyInt16\":111," + + "\"PropertyString\":\"Num111\"," + + "\"AdditionalPropString\":\"Test123\"" + + "}}}]}"; + + Assert.assertEquals(expected, resultString); } @Test http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d30f47ec/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java index d110622..e9928dd 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerTest.java @@ -1153,11 +1153,12 @@ public class ODataXmlSerializerTest { @Test public void selectComplex() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); final EdmEntityType entityType = edmEntitySet.getEntityType(); final EntityCollection entitySet = data.readAll(edmEntitySet); final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList( - ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString"))); + ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyInt16"), + ExpandSelectMock.mockSelectItem(edmEntitySet,"PropertyCompComp", "PropertyComp", "PropertyString"))); long currentTimeMillis = System.currentTimeMillis(); InputStream result = serializer .entityCollection(metadata, entityType, entitySet, @@ -1165,66 +1166,47 @@ public class ODataXmlSerializerTest { .contextURL(ContextURL.with().entitySet(edmEntitySet) .selectList(helper.buildContextURLSelectList(entityType, null, select)) .build()) - .id("http://host/svc/ESCompComp") + .id("http://host/svc/ESFourKeyAlias") .select(select) .build()).getContent(); final String resultString = IOUtils.toString(result); final String expected = "<?xml version='1.0' encoding='UTF-8'?>\n" + "<a:feed xmlns:a=\"http://www.w3.org/2005/Atom\"\n" + - " xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" + - " xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\"\n" + - " m:context=\"$metadata#ESCompComp(PropertyComp/PropertyComp/PropertyString)\"\n" + - " m:metadata-etag=\"metadataETag\">\n" + - " <a:id>http://host/svc/ESCompComp</a:id>\n" + - " <a:entry>\n" + - " <a:id>ESCompComp(1)</a:id>\n" + - " <a:title />\n" + - " <a:summary />\n" + - "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + - " <a:author>\n" + - " <a:name />\n" + - " </a:author>\n" + - " <a:link rel=\"edit\" href=\"ESCompComp(1)\"/>\n" + - " <a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"\n" + - " term=\"#olingo.odata.test1.ETCompComp\" />\n" + - " <a:content type=\"application/xml\">\n" + - " <m:properties>\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTCompComp\">\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + - " <d:PropertyString>String 1</d:PropertyString>\n" + - " </d:PropertyComp>\n" + - " </d:PropertyComp>\n" + - " </m:properties>\n" + - " </a:content>\n" + - " </a:entry>\n" + - " <a:entry>\n" + - " <a:id>ESCompComp(2)</a:id>\n" + - " <a:title />\n" + - " <a:summary />\n" + - "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + - " <a:author>\n" + - " <a:name />\n" + - " </a:author>\n" + - " <a:link rel=\"edit\" href=\"ESCompComp(2)\"/>\n" + - " <a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"\n" + - " term=\"#olingo.odata.test1.ETCompComp\" />\n" + - " <a:content type=\"application/xml\">\n" + - " <m:properties>\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTCompCompExtended\">\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + - " <d:PropertyString>String 2</d:PropertyString>\n" + - " </d:PropertyComp>\n" + - " </d:PropertyComp>\n" + - " </m:properties>\n" + - " </a:content>\n" + - " </a:entry>\n" + - "</a:feed>\n"; + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" + + "xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\" \n" + + "m:context=\"$metadata#ESFourKeyAlias" + + "(PropertyInt16,PropertyCompComp/PropertyComp/PropertyString)\"\n" + + "m:metadata-etag=\"metadataETag\">\n" + + "<a:id>http://host/svc/ESFourKeyAlias</a:id>\n" + + "<a:entry>\n" + + "<a:id>id</a:id>\n" + + "<a:title />\n" + + "<a:summary />\n" + + "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + + "<a:author>\n" + + "<a:name/>\n" + + "</a:author>\n" + + "<a:link rel=\"edit\" href=\"id\"/>\n" + + "<a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\" " + + "term=\"#olingo.odata.test1.ETFourKeyAlias\"/>\n" + + "<a:content type=\"application/xml\">\n" + + "<m:properties>\n" + + "<d:PropertyInt16 m:type=\"Int16\">1</d:PropertyInt16>\n" + + "<d:PropertyCompComp m:type=\"#olingo.odata.test1.CTCompComp\">\n" + + "<d:PropertyComp m:type=\"#olingo.odata.test1.CTBase\">\n" + + "<d:PropertyString>Num111</d:PropertyString>\n" + + "</d:PropertyComp>\n" + + "</d:PropertyCompComp>\n" + + "</m:properties>\n" + + "</a:content>\n" + + "</a:entry>\n" + + "</a:feed>"; checkXMLEqual(expected, resultString); } @Test public void selectComplexExtended() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); final EdmEntityType entityType = edmEntitySet.getEntityType(); final EntityCollection entitySet = data.readAll(edmEntitySet); long currentTimeMillis = System.currentTimeMillis(); @@ -1232,73 +1214,56 @@ public class ODataXmlSerializerTest { .entityCollection(metadata, entityType, entitySet, EntityCollectionSerializerOptions.with() .contextURL(ContextURL.with().entitySet(edmEntitySet).build()) - .id("http://host/svc/ESCompComp") + .id("http://host/svc/ESFourKeyAlias") .build()).getContent(); final String resultString = IOUtils.toString(result); - String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + - "<a:feed xmlns:a=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\" " - + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\" m:context=\"$metadata#ESCompComp\" " - + "m:metadata-etag=\"metadataETag\">\n" + - " <a:id>http://host/svc/ESCompComp</a:id>\n" + - " <a:entry>\n" + - " <a:id>ESCompComp(1)</a:id>\n" + - " <a:title />\n" + - " <a:summary />\n" + - " <a:updated>"+ UPDATED_FORMAT.format(new Date(currentTimeMillis)) +"</a:updated>\n" + - " <a:author>\n" + - " <a:name />\n" + - " </a:author>\n" + - " <a:link rel=\"edit\" href=\"ESCompComp(1)\" />\n" + - " <a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\" " - + "term=\"#olingo.odata.test1.ETCompComp\" />\n" + - " <a:content type=\"application/xml\">\n" + - " <m:properties>\n" + - " <d:PropertyInt16 m:type=\"Int16\">1</d:PropertyInt16>\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTCompComp\">\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + - " <d:PropertyInt16 m:type=\"Int16\">123</d:PropertyInt16>\n" + - " <d:PropertyString>String 1</d:PropertyString>\n" + - " </d:PropertyComp>\n" + - " </d:PropertyComp>\n" + - " </m:properties>\n" + - " </a:content>\n" + - " </a:entry>\n" + - " <a:entry>\n" + - " <a:id>ESCompComp(2)</a:id>\n" + - " <a:title />\n" + - " <a:summary />\n" + - " <a:updated>"+ UPDATED_FORMAT.format(new Date(currentTimeMillis)) +"</a:updated>\n" + - " <a:author>\n" + - " <a:name />\n" + - " </a:author>\n" + - " <a:link rel=\"edit\" href=\"ESCompComp(2)\" />\n" + - " <a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\" " - + "term=\"#olingo.odata.test1.ETCompComp\" />\n" + - " <a:content type=\"application/xml\">\n" + - " <m:properties>\n" + - " <d:PropertyInt16 m:type=\"Int16\">2</d:PropertyInt16>\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTCompCompExtended\">\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + - " <d:PropertyInt16 m:type=\"Int16\">987</d:PropertyInt16>\n" + - " <d:PropertyString>String 2</d:PropertyString>\n" + - " </d:PropertyComp>\n" + - " <d:PropertyDate m:type=\"Date\">2012-12-03</d:PropertyDate>\n" + - " </d:PropertyComp>\n" + - " </m:properties>\n" + - " </a:content>\n" + - " </a:entry>\n" + + String expected = "<?xml version='1.0' encoding='UTF-8'?>\n" + + "<a:feed xmlns:a=\"http://www.w3.org/2005/Atom\"\n" + + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" + + "xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\" \n" + + "m:context=\"$metadata#ESFourKeyAlias\"\n" + + "m:metadata-etag=\"metadataETag\">\n" + + "<a:id>http://host/svc/ESFourKeyAlias</a:id>\n" + + "<a:entry>\n" + + "<a:id>id</a:id>\n" + + "<a:title />\n" + + "<a:summary />\n" + + "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + + "<a:author>\n" + + "<a:name/>\n" + + "</a:author>\n" + + "<a:link rel=\"edit\" href=\"id\"/>\n" + + "<a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\" " + + "term=\"#olingo.odata.test1.ETFourKeyAlias\"/>\n" + + "<a:content type=\"application/xml\">\n" + + "<m:properties>\n" + + "<d:PropertyInt16 m:type=\"Int16\">1</d:PropertyInt16>\n" + + "<d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + + "<d:PropertyInt16 m:type=\"Int16\">11</d:PropertyInt16>\n" + + "<d:PropertyString>Num11</d:PropertyString>\n" + + "</d:PropertyComp>\n" + + "<d:PropertyCompComp m:type=\"#olingo.odata.test1.CTCompComp\">\n" + + "<d:PropertyComp m:type=\"#olingo.odata.test1.CTBase\">\n" + + "<d:PropertyInt16 m:type=\"Int16\">111</d:PropertyInt16>\n" + + "<d:PropertyString>Num111</d:PropertyString>\n" + + "<d:AdditionalPropString>Test123</d:AdditionalPropString>\n" + + "</d:PropertyComp>\n" + + "</d:PropertyCompComp>\n" + + "</m:properties>\n" + + "</a:content>\n" + + "</a:entry>\n" + "</a:feed>"; checkXMLEqual(expected, resultString); } @Test public void selectComplexTwice() throws Exception { - final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCompComp"); + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESFourKeyAlias"); final EdmEntityType entityType = edmEntitySet.getEntityType(); final EntityCollection entitySet = data.readAll(edmEntitySet); final SelectOption select = ExpandSelectMock.mockSelectOption(Arrays.asList( - ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp", "PropertyString"), - ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyComp"))); + ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyComp", "PropertyString"), + ExpandSelectMock.mockSelectItem(edmEntitySet, "PropertyCompComp", "PropertyComp"))); long currentTimeMillis = System.currentTimeMillis(); InputStream inputStream = serializer .entityCollection(metadata, entityType, entitySet, @@ -1306,62 +1271,45 @@ public class ODataXmlSerializerTest { .contextURL(ContextURL.with().entitySet(edmEntitySet) .selectList(helper.buildContextURLSelectList(entityType, null, select)) .build()) - .id("http://host/svc/ESCompComp") + .id("http://host/svc/ESFourKeyAlias") .select(select) .build()).getContent(); final String resultString = IOUtils.toString(inputStream); String expected = "<?xml version='1.0' encoding='UTF-8'?>\n" + "<a:feed xmlns:a=\"http://www.w3.org/2005/Atom\"\n" + - " xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" + - " xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\" \n" + - " m:context=\"$metadata#ESCompComp(PropertyComp/PropertyComp)\"\n" + - " m:metadata-etag=\"metadataETag\">\n" + - " <a:id>http://host/svc/ESCompComp</a:id>\n" + - " <a:entry>\n" + - " <a:id>ESCompComp(1)</a:id>\n" + - " <a:title />\n" + - " <a:summary />\n" + - " <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + - " <a:author>\n" + - " <a:name />\n" + - " </a:author>\n" + - " <a:link rel=\"edit\" href=\"ESCompComp(1)\"/>\n" + - " <a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"\n" + - " term=\"#olingo.odata.test1.ETCompComp\" />\n" + - " <a:content type=\"application/xml\">\n" + - " <m:properties>\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTCompComp\">\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + - " <d:PropertyInt16 m:type=\"Int16\">123</d:PropertyInt16>\n" + - " <d:PropertyString>String 1</d:PropertyString>\n" + - " </d:PropertyComp>\n" + - " </d:PropertyComp>\n" + - " </m:properties>\n" + - " </a:content>\n" + - " </a:entry>\n" + - " <a:entry>\n" + - " <a:id>ESCompComp(2)</a:id>\n" + - " <a:title />\n" + - " <a:summary />\n" + - " <a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + - " <a:author>\n" + - " <a:name />\n" + - " </a:author>\n" + - " <a:link rel=\"edit\" href=\"ESCompComp(2)\"/>\n" + - " <a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\"\n" + - " term=\"#olingo.odata.test1.ETCompComp\" />\n" + - " <a:content type=\"application/xml\">\n" + - " <m:properties>\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTCompCompExtended\">\n" + - " <d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + - " <d:PropertyInt16 m:type=\"Int16\">987</d:PropertyInt16>\n" + - " <d:PropertyString>String 2</d:PropertyString>\n" + - " </d:PropertyComp>\n" + - " </d:PropertyComp>\n" + - " </m:properties>\n" + - " </a:content>\n" + - " </a:entry>\n" + - "</a:feed>\n"; + "xmlns:m=\"http://docs.oasis-open.org/odata/ns/metadata\"\n" + + "xmlns:d=\"http://docs.oasis-open.org/odata/ns/data\" \n" + + "m:context=\"$metadata#ESFourKeyAlias" + + "(PropertyComp/PropertyString,PropertyCompComp/PropertyComp)\"\n" + + "m:metadata-etag=\"metadataETag\">\n" + + "<a:id>http://host/svc/ESFourKeyAlias</a:id>\n" + + "<a:entry>\n" + + "<a:id>id</a:id>\n" + + "<a:title />\n" + + "<a:summary />\n" + + "<a:updated>" + UPDATED_FORMAT.format(new Date(currentTimeMillis)) + "</a:updated>" + + "<a:author>\n" + + "<a:name/>\n" + + "</a:author>\n" + + "<a:link rel=\"edit\" href=\"id\"/>\n" + + "<a:category scheme=\"http://docs.oasis-open.org/odata/ns/scheme\" " + + "term=\"#olingo.odata.test1.ETFourKeyAlias\"/>\n" + + "<a:content type=\"application/xml\">\n" + + "<m:properties>\n" + + "<d:PropertyComp m:type=\"#olingo.odata.test1.CTTwoPrim\">\n" + + "<d:PropertyString>Num11</d:PropertyString>\n" + + "</d:PropertyComp>\n" + + "<d:PropertyCompComp m:type=\"#olingo.odata.test1.CTCompComp\">\n" + + "<d:PropertyComp m:type=\"#olingo.odata.test1.CTBase\">\n" + + "<d:PropertyInt16 m:type=\"Int16\">111</d:PropertyInt16>\n" + + "<d:PropertyString>Num111</d:PropertyString>\n" + + "<d:AdditionalPropString>Test123</d:AdditionalPropString>\n" + + "</d:PropertyComp>\n" + + "</d:PropertyCompComp>\n" + + "</m:properties>\n" + + "</a:content>\n" + + "</a:entry>\n" + + "</a:feed>"; checkXMLEqual(resultString, expected); }
