http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2a841552/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 15dd99b..0b398f4 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 @@ -71,8 +71,9 @@ public class ODataJsonSerializerTest { private static final EdmEntityContainer entityContainer = metadata.getEdm().getEntityContainer(); private final DataProvider data = new DataProvider(); private final ODataSerializer serializer = new ODataJsonSerializer(ContentType.JSON); - private final ODataSerializer serializerIEEECompatible = - new ODataJsonSerializer(ContentType.parse("application/json;odata.metadata=minimal;IEEE754Compatible=true")); + private final ODataSerializer serializerNoMetadata = new ODataJsonSerializer(ContentType.JSON_NO_METADATA); + private final ODataSerializer serializerIEEECompatible = + new ODataJsonSerializer(ContentType.create(ContentType.JSON, ContentType.PARAMETER_IEEE754_COMPATIBLE, "true")); private final UriHelper helper = new UriHelperImpl(); @Test @@ -306,9 +307,8 @@ public class ODataJsonSerializerTest { public void entityTwoPrimNoMetadata() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim"); final Entity entity = data.readAll(edmEntitySet).getEntities().get(0); - InputStream result = new ODataJsonSerializer(ContentType.JSON_NO_METADATA) - .entity(metadata, edmEntitySet.getEntityType(), entity, null).getContent(); - final String resultString = IOUtils.toString(result); + final String resultString = IOUtils.toString(serializerNoMetadata + .entity(metadata, edmEntitySet.getEntityType(), entity, null).getContent()); final String expectedResult = "{\"PropertyInt16\":32766,\"PropertyString\":\"Test String1\"}"; Assert.assertEquals(expectedResult, resultString); } @@ -317,12 +317,11 @@ public class ODataJsonSerializerTest { public void entitySetTwoPrimNoMetadata() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESTwoPrim"); final EntityCollection entitySet = data.readAll(edmEntitySet); - InputStream result = new ODataJsonSerializer(ContentType.JSON_NO_METADATA) - .entityCollection(metadata, edmEntitySet.getEntityType(), entitySet, - EntityCollectionSerializerOptions.with() - .contextURL(ContextURL.with().entitySet(edmEntitySet).build()).build()).getContent(); - - final String resultString = IOUtils.toString(result); + final String resultString = IOUtils.toString(serializerNoMetadata + .entityCollection(metadata, edmEntitySet.getEntityType(), entitySet, + EntityCollectionSerializerOptions.with() + .contextURL(ContextURL.with().entitySet(edmEntitySet).build()) + .build()).getContent()); final String expectedResult = "{\"value\":[" + "{\"PropertyInt16\":32766,\"PropertyString\":\"Test String1\"}," + "{\"PropertyInt16\":-365,\"PropertyString\":\"Test String2\"}," @@ -664,6 +663,16 @@ public class ODataJsonSerializerTest { resultString); } + @Test + public void primitivePropertyNoMetadata() throws Exception { + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); + final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyString"); + final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName()); + final String resultString = IOUtils.toString(serializerNoMetadata + .primitive(metadata, (EdmPrimitiveType) edmProperty.getType(), property, null).getContent()); + Assert.assertEquals("{\"value\":\"First Resource - positive values\"}", resultString); + } + @Test(expected = SerializerException.class) public void primitivePropertyNull() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); @@ -698,6 +707,18 @@ public class ODataJsonSerializerTest { } @Test + public void primitiveCollectionNoMetadata() throws Exception { + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCollAllPrim"); + final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("CollPropertyString"); + final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName()); + final String resultString = IOUtils.toString(serializerNoMetadata + .primitiveCollection(metadata, (EdmPrimitiveType) edmProperty.getType(), property, null).getContent()); + Assert.assertEquals("{\"value\":[\"[email protected]\"," + + "\"[email protected]\",\"[email protected]\"]}", + resultString); + } + + @Test public void complexProperty() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp"); final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyComp"); @@ -716,7 +737,17 @@ public class ODataJsonSerializerTest { + "\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}", resultString); } - + + @Test + public void complexPropertyNoMetadata() throws Exception { + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp"); + final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyComp"); + final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty("PropertyComp"); + final String resultString = IOUtils.toString(serializerNoMetadata + .complex(metadata, (EdmComplexType) edmProperty.getType(), property, null).getContent()); + Assert.assertEquals("{\"PropertyInt16\":111,\"PropertyString\":\"TEST A\"}", resultString); + } + @Test public void complexCollectionProperty() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp"); @@ -740,6 +771,19 @@ public class ODataJsonSerializerTest { } @Test + public void complexCollectionPropertyNoMetadata() throws Exception { + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESMixPrimCollComp"); + final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("CollPropertyComp"); + final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName()); + final String resultString = IOUtils.toString(serializerNoMetadata + .complexCollection(metadata, (EdmComplexType) edmProperty.getType(), property, null).getContent()); + Assert.assertEquals("{\"value\":[{\"PropertyInt16\":123,\"PropertyString\":\"TEST 1\"}," + + "{\"PropertyInt16\":456,\"PropertyString\":\"TEST 2\"}," + + "{\"PropertyInt16\":789,\"PropertyString\":\"TEST 3\"}]}", + resultString); + } + + @Test public void entityReference() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); final Entity entity = data.readAll(edmEntitySet).getEntities().get(0); @@ -755,17 +799,26 @@ public class ODataJsonSerializerTest { } @Test + public void entityReferenceNoMetadata() throws Exception { + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); + final Entity entity = data.readAll(edmEntitySet).getEntities().get(0); + final String resultString = IOUtils.toString( + serializerNoMetadata.reference(metadata, edmEntitySet, entity, null).getContent()); + Assert.assertEquals("{\"@odata.id\":\"ESAllPrim(32767)\"}", resultString); + } + + @Test public void entityCollectionReference() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); final EntityCollection entityCollection = data.readAll(edmEntitySet); - final SerializerResult serializerResult = serializer.referenceCollection(metadata, - edmEntitySet, - entityCollection, - ReferenceCollectionSerializerOptions.with() - .contextURL(ContextURL.with().asCollection().suffix(Suffix.REFERENCE).build()) - .build()); - + final SerializerResult serializerResult = serializer.referenceCollection(metadata, + edmEntitySet, + entityCollection, + ReferenceCollectionSerializerOptions.with() + .contextURL(ContextURL.with().asCollection().suffix(Suffix.REFERENCE).build()) + .build()); + final String resultString = IOUtils.toString(serializerResult.getContent()); Assert.assertEquals("{\"@odata.context\":\"$metadata#Collection($ref)\"," @@ -781,27 +834,36 @@ public class ODataJsonSerializerTest { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); final EntityCollection entityCollection = new EntityCollection(); - final SerializerResult serializerResult = serializer.referenceCollection(metadata, - edmEntitySet, entityCollection, - ReferenceCollectionSerializerOptions.with() - .contextURL(ContextURL.with().asCollection().suffix(Suffix.REFERENCE).build()) - .build()); - + final SerializerResult serializerResult = serializer.referenceCollection(metadata, + edmEntitySet, entityCollection, + ReferenceCollectionSerializerOptions.with() + .contextURL(ContextURL.with().asCollection().suffix(Suffix.REFERENCE).build()) + .build()); + final String resultString = IOUtils.toString(serializerResult.getContent()); Assert.assertEquals("{\"@odata.context\":\"$metadata#Collection($ref)\"," + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," + "\"value\":[]}", resultString); } - + + @Test + public void entityCollectionReferenceEmptyNoMetadata() throws Exception { + final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); + final EntityCollection entityCollection = new EntityCollection(); + final String resultString = IOUtils.toString(serializerNoMetadata + .referenceCollection(metadata, edmEntitySet, entityCollection, null).getContent()); + Assert.assertEquals("{\"value\":[]}", resultString); + } + @Test public void entityIEE754Compatible() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); final Entity entity = data.readAll(edmEntitySet).getEntities().get(0); InputStream result = serializerIEEECompatible.entity(metadata, edmEntitySet.getEntityType(), entity, EntitySerializerOptions.with() - .contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build()) - .build()).getContent(); + .contextURL(ContextURL.with().entitySet(edmEntitySet).suffix(Suffix.ENTITY).build()) + .build()).getContent(); final String resultString = IOUtils.toString(result); final String expectedResult = "{" + "\"@odata.context\":\"$metadata#ESAllPrim/$entity\"," @@ -825,15 +887,15 @@ public class ODataJsonSerializerTest { + "}"; Assert.assertEquals(expectedResult, resultString); } - + @Test public void entityCollAllPrimIEEE754Compatible() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCollAllPrim"); final Entity entity = data.readAll(edmEntitySet).getEntities().get(0); InputStream result = serializerIEEECompatible.entity(metadata, edmEntitySet.getEntityType(), entity, EntitySerializerOptions.with() - .contextURL(ContextURL.with().serviceRoot(URI.create("http://host/service/")) - .entitySet(edmEntitySet).suffix(Suffix.ENTITY).build()) + .contextURL(ContextURL.with().serviceRoot(URI.create("http://host/service/")) + .entitySet(edmEntitySet).suffix(Suffix.ENTITY).build()) .build()).getContent(); final String resultString = IOUtils.toString(result); final String expectedResult = "{" @@ -862,7 +924,7 @@ public class ODataJsonSerializerTest { + "}"; Assert.assertEquals(expectedResult, resultString); } - + @Test public void primitiveCollectionPropertyIEEE754CompatibleInt64() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCollAllPrim"); @@ -872,8 +934,8 @@ public class ODataJsonSerializerTest { final String resultString = IOUtils.toString(serializerIEEECompatible .primitiveCollection(metadata, (EdmPrimitiveType) edmProperty.getType(), property, PrimitiveSerializerOptions.with() - .contextURL(ContextURL.with() - .entitySet(edmEntitySet).keyPath("1").navOrPropertyPath(edmProperty.getName()).build()) + .contextURL(ContextURL.with() + .entitySet(edmEntitySet).keyPath("1").navOrPropertyPath(edmProperty.getName()).build()) .build()).getContent()); Assert.assertEquals("{" + "\"@odata.context\":\"$metadata#ESCollAllPrim(1)/CollPropertyInt64\"," @@ -881,7 +943,7 @@ public class ODataJsonSerializerTest { + "\"value\":[\"929292929292\",\"333333333333\",\"444444444444\"]}", resultString); } - + @Test public void primitiveCollectionPropertyIEEE754CompatibleDecimal() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESCollAllPrim"); @@ -891,8 +953,8 @@ public class ODataJsonSerializerTest { final String resultString = IOUtils.toString(serializerIEEECompatible .primitiveCollection(metadata, (EdmPrimitiveType) edmProperty.getType(), property, PrimitiveSerializerOptions.with() - .contextURL(ContextURL.with() - .entitySet(edmEntitySet).keyPath("1").navOrPropertyPath(edmProperty.getName()).build()) + .contextURL(ContextURL.with() + .entitySet(edmEntitySet).keyPath("1").navOrPropertyPath(edmProperty.getName()).build()) .build()).getContent()); Assert.assertEquals("{" + "\"@odata.context\":\"$metadata#ESCollAllPrim(1)/CollPropertyDecimal\"," @@ -900,7 +962,7 @@ public class ODataJsonSerializerTest { + "\"value\":[\"12\",\"-2\",\"1234\"]}", resultString); } - + @Test public void primitivePropertyIEEE754CompatibleInt64() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); @@ -909,8 +971,8 @@ public class ODataJsonSerializerTest { final String resultString = IOUtils.toString(serializerIEEECompatible .primitive(metadata, (EdmPrimitiveType) edmProperty.getType(), property, PrimitiveSerializerOptions.with() - .contextURL(ContextURL.with() - .entitySet(edmEntitySet).keyPath("32767").navOrPropertyPath(edmProperty.getName()).build()) + .contextURL(ContextURL.with() + .entitySet(edmEntitySet).keyPath("32767").navOrPropertyPath(edmProperty.getName()).build()) .build()).getContent()); Assert.assertEquals("{" + "\"@odata.context\":\"$metadata#ESAllPrim(32767)/PropertyInt64\"," @@ -918,7 +980,7 @@ public class ODataJsonSerializerTest { + "\"value\":\"" + Long.MAX_VALUE + "\"}", resultString); } - + @Test public void primitivePropertyIEEE754CompatibleDecimal() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); @@ -927,8 +989,8 @@ public class ODataJsonSerializerTest { final String resultString = IOUtils.toString(serializerIEEECompatible .primitive(metadata, (EdmPrimitiveType) edmProperty.getType(), property, PrimitiveSerializerOptions.with() - .contextURL(ContextURL.with() - .entitySet(edmEntitySet).keyPath("32767").navOrPropertyPath(edmProperty.getName()).build()) + .contextURL(ContextURL.with() + .entitySet(edmEntitySet).keyPath("32767").navOrPropertyPath(edmProperty.getName()).build()) .build()).getContent()); Assert.assertEquals("{" + "\"@odata.context\":\"$metadata#ESAllPrim(32767)/PropertyDecimal\"," @@ -936,7 +998,7 @@ public class ODataJsonSerializerTest { + "\"value\":\"34\"}", resultString); } - + @Test public void entitySetAllPrimIEEE754CompatibleCount() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); @@ -966,7 +1028,7 @@ public class ODataJsonSerializerTest { } Assert.assertEquals(3, count); } - + @Test public void entitySetAllPrimReferenceIEEE754CompatibleCount() throws Exception { final EdmEntitySet edmEntitySet = entityContainer.getEntitySet("ESAllPrim"); @@ -981,14 +1043,14 @@ public class ODataJsonSerializerTest { .count(countOption) .build()).getContent(); final String resultString = IOUtils.toString(result); - + Assert.assertThat(resultString, CoreMatchers.startsWith("{" + "\"@odata.context\":\"$metadata#Collection($ref)\"," + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\"," + "\"@odata.count\":\"3\",\"value\":[")); Assert.assertThat(resultString, CoreMatchers.endsWith("]," + "\"@odata.nextLink\":\"/next\"}")); - + int count = 0; int index = -1; while ((index = resultString.indexOf("ESAllPrim(", ++index)) > 0) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/2a841552/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java index bd4a551..066103c 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ServiceDocumentTest.java @@ -72,4 +72,15 @@ public class ServiceDocumentTest { assertTrue(jsonString.contains("SIMedia")); assertTrue(jsonString.contains("Singleton")); } + + @Test + public void serviceDocumentNoMetadata() throws Exception { + final String serviceRoot = "http://localhost:8080/odata.svc"; + final String result = IOUtils.toString( + OData.newInstance().createSerializer(ContentType.JSON_NO_METADATA) + .serviceDocument(metadata, serviceRoot).getContent()); + assertFalse(result.contains("odata.context")); + assertFalse(result.contains("odata.metadata")); + assertTrue(result.contains("ESAllPrim")); + } }
