olingo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chr...@apache.org
Subject [04/10] olingo-odata4 git commit: [OLINGO-704] IEEE754Compatible support added to ODataJsonDeserializer. Tests for read scenario added
Date Wed, 17 Jun 2015 15:55:28 GMT
[OLINGO-704] IEEE754Compatible support added to ODataJsonDeserializer.
Tests for read scenario added


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/be55285c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/be55285c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/be55285c

Branch: refs/heads/IEE754Compatible
Commit: be55285ce3ca8e56ad8a29e7e8a636e5b3d33ff5
Parents: 0043bd9
Author: Christian Holzer <c.holzer@sap.com>
Authored: Thu Jun 11 14:25:41 2015 +0200
Committer: Christian Holzer <c.holzer@sap.com>
Committed: Wed Jun 17 17:48:14 2015 +0200

----------------------------------------------------------------------
 .../olingo/fit/tecsvc/client/BasicITCase.java   | 190 ++++++++++++++++++-
 .../olingo/fit/tecsvc/http/BasicHttpITCase.java |  54 +++++-
 .../server/core/requests/DataRequest.java       |   5 +-
 .../server/core/responses/PropertyResponse.java |   4 +-
 .../core/responses/ServiceDocumentResponse.java |   2 +-
 .../json/ODataJsonDeserializer.java             |  47 ++++-
 .../json/AbstractODataDeserializerTest.java     |   3 +
 .../json/ODataJsonDeserializerEntityTest.java   |  85 ++++++++-
 .../json/ODataJsonSerializerTest.java           |  21 +-
 .../serializer/json/ServiceDocumentTest.java    |   2 +-
 10 files changed, 384 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index 819aab7..936569e 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.math.BigDecimal;
 import java.net.URI;
 import java.util.Collections;
 import java.util.Iterator;
@@ -44,6 +45,7 @@ import org.apache.olingo.client.api.communication.request.cud.UpdateType;
 import org.apache.olingo.client.api.communication.request.retrieve.EdmMetadataRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataPropertyRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataServiceDocumentRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataValueRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.XMLMetadataRequest;
@@ -75,11 +77,27 @@ import org.apache.olingo.commons.api.http.HttpHeader;
 import org.apache.olingo.commons.api.http.HttpStatusCode;
 import org.apache.olingo.fit.AbstractBaseTestITCase;
 import org.apache.olingo.fit.tecsvc.TecSvcConst;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class BasicITCase extends AbstractBaseTestITCase {
-
+  
+  private static final String CONTENT_TYPE_JSON_IEEE754_COMPATIBLE = "application/json;odata.metadata=minimal;"

+                                                                   + "IEEE754Compatible=true";
+  private static final String SERVICE_NAMESPACE = "olingo.odata.test1";
+  private static final String ET_ALL_PRIM_NAME = "ETAllPrim";
+  private static final FullQualifiedName ET_ALL_PRIM = new FullQualifiedName(SERVICE_NAMESPACE,
ET_ALL_PRIM_NAME);
+  
+  private static final String PROPERTY_INT16 = "PropertyInt16";
+  private static final String PROPERTY_INT64 = "PropertyInt64";
+  private static final String PROPERTY_DECIMAL = "PropertyDecimal";
+  private static final String PROPERTY_COMP_ALL_PRIM = "PropertyCompAllPrim";
+  private static final String NAV_PROPERTY_ET_TWO_PRIM_ONE = "NavPropertyETTwoPrimOne";
+  
   private static final String SERVICE_URI = TecSvcConst.BASE_URI;
+  private static final String ES_ALL_PRIM = "ESAllPrim";
+  private static final String ES_TWO_PRIM = "ESTwoPrim";
+  private static final String ES_KEY_NAV = "ESKeyNav";
 
   @Test
   public void readServiceDocument() {
@@ -376,7 +394,7 @@ public class BasicITCase extends AbstractBaseTestITCase {
     ClientEntity newEntity = factory.newEntity(new FullQualifiedName("olingo.odata.test1",
"ETAllPrim"));
     newEntity.getProperties().add(factory.newPrimitiveProperty("PropertyInt64",
         factory.newPrimitiveValueBuilder().buildInt32(42)));
-    newEntity.addLink(factory.newEntityNavigationLink("NavPropertyETTwoPrimOne",
+    newEntity.addLink(factory.newEntityNavigationLink(NAV_PROPERTY_ET_TWO_PRIM_ONE,
         client.newURIBuilder(SERVICE_URI)
         .appendEntitySetSegment("ESTwoPrim")
         .appendKeySegment(32766)
@@ -916,7 +934,173 @@ public class BasicITCase extends AbstractBaseTestITCase {
         .get("PropertyInt16")
         .hasNullValue());
   }
-
+  
+  @Test
+  public void createEntityWithIEEE754CompatibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    client.getConfiguration().setDefaultPubFormat(ODataFormat.JSON);
+    final ClientObjectFactory of = client.getObjectFactory();
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_ALL_PRIM).build();
+    final URI linkURI = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_TWO_PRIM)
+                                                         .appendKeySegment(32767).build();
+    
+    final ClientEntity newEntity = of.newEntity(ET_ALL_PRIM);
+    newEntity.getProperties().add(of.newPrimitiveProperty(PROPERTY_INT64, 
+        of.newPrimitiveValueBuilder().buildString("" + Long.MAX_VALUE)));
+    newEntity.getProperties().add(of.newPrimitiveProperty(PROPERTY_DECIMAL, 
+        of.newPrimitiveValueBuilder().buildString("" + 34L)));
+    newEntity.addLink(of.newEntityNavigationLink(NAV_PROPERTY_ET_TWO_PRIM_ONE, linkURI));
+    
+    final ODataEntityCreateRequest<ClientEntity> request = client.getCUDRequestFactory()
+                                                                 .getEntityCreateRequest(uri,
newEntity);
+    request.setContentType(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    request.setAccept(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    final ODataEntityCreateResponse<ClientEntity> response = request.execute();
+    
+    assertEquals(Long.MAX_VALUE, response.getBody().getProperty(PROPERTY_INT64).getPrimitiveValue().toValue());
+    assertEquals(BigDecimal.valueOf(34), response.getBody().getProperty(PROPERTY_DECIMAL)
+                                                           .getPrimitiveValue().toValue());
+  }
+  
+  @Test
+  public void createEntityInt64AndDecimalAsStringWithoutIEEE754ComaptibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    client.getConfiguration().setDefaultPubFormat(ODataFormat.JSON);
+    final ClientObjectFactory of = client.getObjectFactory();
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_ALL_PRIM).build();
+    final URI linkURI = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_TWO_PRIM)
+                                                         .appendKeySegment(32767).build();
+    
+    final ClientEntity newEntity = of.newEntity(ET_ALL_PRIM);
+    newEntity.getProperties().add(of.newPrimitiveProperty(PROPERTY_INT64, 
+        of.newPrimitiveValueBuilder().buildString("" + Long.MAX_VALUE)));
+    newEntity.getProperties().add(of.newPrimitiveProperty(PROPERTY_DECIMAL, 
+        of.newPrimitiveValueBuilder().buildString("" + 34L)));
+    newEntity.addLink(of.newEntityNavigationLink(NAV_PROPERTY_ET_TWO_PRIM_ONE, linkURI));
+    
+    final ODataEntityCreateRequest<ClientEntity> request = client.getCUDRequestFactory()
+                                                                 .getEntityCreateRequest(uri,
newEntity);
+    try {
+      request.execute();
+      fail();
+    } catch(ODataClientErrorException e) {
+      assertEquals(HttpStatusCode.BAD_REQUEST.getStatusCode(), e.getStatusLine().getStatusCode());
+    }
+  }
+  
+  @Test
+  public void readESAllPrimCollectionWithIEEE754CompatibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_ALL_PRIM)
+                                                     .orderBy(PROPERTY_INT16)
+                                                     .build();
+    
+    final ODataEntitySetRequest<ClientEntitySet> request = client.getRetrieveRequestFactory().getEntitySetRequest(uri);
+    request.setAccept(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    final ODataRetrieveResponse<ClientEntitySet> response = request.execute();
+    
+    assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+    final List<ClientEntity> entities = response.getBody().getEntities();
+    assertEquals(3, entities.size());
+    
+    ClientEntity entity = entities.get(0);
+    assertEquals(-32768, entity.getProperty(PROPERTY_INT16).getPrimitiveValue().toValue());
+    assertEquals(Long.MIN_VALUE, entity.getProperty(PROPERTY_INT64).getPrimitiveValue().toValue());
+    assertEquals(BigDecimal.valueOf(-34), entity.getProperty(PROPERTY_DECIMAL).getPrimitiveValue().toValue());
+    
+    entity = entities.get(1);
+    assertEquals(0, entity.getProperty(PROPERTY_INT16).getPrimitiveValue().toValue());
+    assertEquals(0L, entity.getProperty(PROPERTY_INT64).getPrimitiveValue().toValue());
+    assertEquals(BigDecimal.valueOf(0), entity.getProperty(PROPERTY_DECIMAL).getPrimitiveValue().toValue());
+    
+    entity = entities.get(2);
+    assertEquals(32767, entity.getProperty(PROPERTY_INT16).getPrimitiveValue().toValue());
+    assertEquals(Long.MAX_VALUE, entity.getProperty(PROPERTY_INT64).getPrimitiveValue().toValue());
+    assertEquals(BigDecimal.valueOf(34), entity.getProperty(PROPERTY_DECIMAL).getPrimitiveValue().toValue());
+  }
+  
+  @Test
+  public void readESKeyNavCheckComplexPropertyWithIEEE754CompatibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_KEY_NAV).appendKeySegment(1).build();
+    
+    final ODataEntityRequest<ClientEntity> request = client.getRetrieveRequestFactory().getEntityRequest(uri);
+    request.setAccept(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    final ODataRetrieveResponse<ClientEntity> response = request.execute();
+    
+    assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+    assertEquals(1, response.getBody().getProperty(PROPERTY_INT16).getPrimitiveValue().toValue());
+    
+    assertEquals(BigDecimal.valueOf(34), response.getBody().getProperty(PROPERTY_COMP_ALL_PRIM)
+                                                           .getComplexValue()
+                                                           .get(PROPERTY_DECIMAL)
+                                                           .getPrimitiveValue()
+                                                           .toValue());
+    
+    assertEquals(Long.MAX_VALUE, response.getBody().getProperty(PROPERTY_COMP_ALL_PRIM)
+                                                   .getComplexValue()
+                                                   .get(PROPERTY_INT64)
+                                                   .getPrimitiveValue()
+                                                   .toValue());
+  }
+  
+  @Test
+  public void readESKEyNavComplexPropertyWithIEEE754CompatibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_KEY_NAV)
+                                                     .appendKeySegment(1)
+                                                     .appendNavigationSegment(PROPERTY_COMP_ALL_PRIM)
+                                                     .build();
+    ODataPropertyRequest<ClientProperty> request = client.getRetrieveRequestFactory().getPropertyRequest(uri);
+    request.setAccept(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    final ODataRetrieveResponse<ClientProperty> response = request.execute();
+    assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+    
+    assertEquals(BigDecimal.valueOf(34), response.getBody().getComplexValue()
+                                                           .get(PROPERTY_DECIMAL)
+                                                           .getPrimitiveValue()
+                                                           .toValue());
+
+    assertEquals(Long.MAX_VALUE, response.getBody().getComplexValue()
+                                                   .get(PROPERTY_INT64)
+                                                   .getPrimitiveValue()
+                                                   .toValue());
+  }
+  
+  @Test
+  @Ignore
+  public void readEdmInt64PropertyWithIEEE754ComaptibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_KEY_NAV)
+                                                     .appendKeySegment(1)
+                                                     .appendPropertySegment(PROPERTY_COMP_ALL_PRIM)
+                                                     .appendPropertySegment(PROPERTY_INT64)
+                                                     .build();
+    ODataPropertyRequest<ClientProperty> request = client.getRetrieveRequestFactory().getPropertyRequest(uri);
+    request.setAccept(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    final ODataRetrieveResponse<ClientProperty> response = request.execute();
+    assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+    
+    assertEquals(Long.MAX_VALUE, response.getBody().getPrimitiveValue().toValue());
+  }
+  
+  @Test
+  @Ignore
+  public void readEdmDecimalPropertyWithIEEE754ComaptibleParameter() {
+    final ODataClient client = ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
+    final URI uri = client.newURIBuilder(SERVICE_URI).appendEntitySetSegment(ES_KEY_NAV)
+                                                     .appendKeySegment(1)
+                                                     .appendPropertySegment(PROPERTY_COMP_ALL_PRIM)
+                                                     .appendPropertySegment(PROPERTY_DECIMAL)
+                                                     .build();
+    ODataPropertyRequest<ClientProperty> request = client.getRetrieveRequestFactory().getPropertyRequest(uri);
+    request.setAccept(CONTENT_TYPE_JSON_IEEE754_COMPATIBLE);
+    final ODataRetrieveResponse<ClientProperty> response = request.execute();
+    assertEquals(HttpStatusCode.OK.getStatusCode(), response.getStatusCode());
+    
+    assertEquals(BigDecimal.valueOf(34), response.getBody().getPrimitiveValue().toValue());
+  }
+  
   @Override
   protected ODataClient getClient() {
     ODataClient odata = ODataClientFactory.getClient();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicHttpITCase.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicHttpITCase.java b/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicHttpITCase.java
index 1a66f11..dc32808 100644
--- a/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicHttpITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/tecsvc/http/BasicHttpITCase.java
@@ -19,15 +19,20 @@
 package org.apache.olingo.fit.tecsvc.http;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
 
 import org.apache.olingo.client.api.ODataClient;
 import org.apache.olingo.commons.api.format.ContentType;
 import org.apache.olingo.commons.api.http.HttpHeader;
+import org.apache.olingo.commons.api.http.HttpStatusCode;
 import org.apache.olingo.fit.AbstractBaseTestITCase;
 import org.apache.olingo.fit.tecsvc.TecSvcConst;
+import org.apache.olingo.server.core.deserializer.batch.BufferedReaderIncludingLineEndings;
 import org.junit.Test;
 
 public class BasicHttpITCase extends AbstractBaseTestITCase {
@@ -116,7 +121,54 @@ public class BasicHttpITCase extends AbstractBaseTestITCase {
     String v = connection.getHeaderField(HttpHeader.ODATA_VERSION);
     assertEquals("4.0", v);
   }
-
+  
+  @Test
+  public void testIEEE754ParameterContentNegotiation() throws Exception {
+    final URL url = new URL(SERVICE_URI + "/ESAllPrim(32767)?$format=application/json;IEEE754Compatible=true");
+    final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+    connection.setRequestMethod("GET");
+    connection.setRequestProperty(HttpHeader.ACCEPT, "application/json;IEEE754Compatible=false");
+    connection.connect();
+    
+    assertEquals(HttpStatusCode.OK.getStatusCode(), connection.getResponseCode());
+    assertEquals(ContentType.create("application/json;IEEE754Compatible=true;odata.metadata=minimal"),

+                 ContentType.create(connection.getContentType()));
+    final String content = inputStreamToString(connection.getInputStream());
+    
+    assertTrue(content.contains("\"PropertyDecimal\":\"34\""));
+    assertTrue(content.contains("\"PropertyInt64\":\"9223372036854775807\""));
+  }
+  
+  @Test
+  public void testIEEE754ParameterViaAcceptHeader() throws Exception {
+    final URL url = new URL(SERVICE_URI + "/ESAllPrim(32767)");
+    final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+    connection.setRequestMethod("GET");
+    connection.setRequestProperty(HttpHeader.ACCEPT, "application/json;IEEE754Compatible=true");
+    connection.connect();
+    
+    assertEquals(HttpStatusCode.OK.getStatusCode(), connection.getResponseCode());
+    assertEquals(ContentType.create("application/json;IEEE754Compatible=true;odata.metadata=minimal"),

+                 ContentType.create(connection.getContentType()));
+    final String content = inputStreamToString(connection.getInputStream());
+    
+    assertTrue(content.contains("\"PropertyDecimal\":\"34\""));
+    assertTrue(content.contains("\"PropertyInt64\":\"9223372036854775807\""));
+  }
+  
+  private String inputStreamToString(final InputStream in) throws Exception {
+    final BufferedReaderIncludingLineEndings reader = new BufferedReaderIncludingLineEndings(new
InputStreamReader(in));
+    final StringBuffer buffer = new StringBuffer();
+    String current;
+    
+    while((current = reader.readLine()) != null) {
+      buffer.append(current);
+    }
+    
+    reader.close();
+    return buffer.toString();
+  }
+  
   @Override
   protected ODataClient getClient() {
     return null;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
index e1dddb8..7f2273c 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/requests/DataRequest.java
@@ -41,14 +41,13 @@ import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.EdmProperty;
 import org.apache.olingo.commons.api.format.ContentType;
-import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.commons.api.http.HttpHeader;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmStream;
 import org.apache.olingo.server.api.OData;
 import org.apache.olingo.server.api.ODataApplicationException;
-import org.apache.olingo.server.api.ODataResponse;
 import org.apache.olingo.server.api.ODataLibraryException;
+import org.apache.olingo.server.api.ODataResponse;
 import org.apache.olingo.server.api.ServiceMetadata;
 import org.apache.olingo.server.api.deserializer.DeserializerException;
 import org.apache.olingo.server.api.deserializer.DeserializerException.MessageKeys;
@@ -440,7 +439,7 @@ public class DataRequest extends ServiceRequest {
             handler.deleteReference(DataRequest.this, new URI(id), getETag(), new NoContentResponse(
                 getServiceMetaData(), response));
           } catch (URISyntaxException e) {
-            throw new DeserializerException("failed to read $id", e, MessageKeys.UNKOWN_CONTENT);
+            throw new DeserializerException("failed to read $id", e, MessageKeys.UNKNOWN_CONTENT);
           }
         }
       } else if (isPUT()) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
index 42a275d..0cf4ff2 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java
@@ -121,10 +121,10 @@ public class PropertyResponse extends ServiceResponse {
       throws SerializerException {
     if(this.collection) {
       this.response.setContent(
-          this.serializer.primitiveCollection(type, property, this.primitiveOptions).getContent());
+          this.serializer.primitiveCollection(metadata, type, property, this.primitiveOptions).getContent());
     } else {
       this.response.setContent(
-          this.serializer.primitive(type, property, this.primitiveOptions).getContent());
+          this.serializer.primitive(metadata, type, property, this.primitiveOptions).getContent());
     }
     writeOK(this.responseContentType.toContentTypeString());
     close();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java
b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java
index ebb1575..407510d 100644
--- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java
+++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java
@@ -51,7 +51,7 @@ public class ServiceDocumentResponse extends ServiceResponse {
   public void writeServiceDocument(String serviceRoot)
       throws ODataLibraryException {
     assert (!isClosed());
-    this.response.setContent(this.serializer.serviceDocument(metadata.getEdm(), serviceRoot).getContent());
+    this.response.setContent(this.serializer.serviceDocument(metadata, serviceRoot).getContent());
     writeOK(this.responseContentType.toContentTypeString());
     close();
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
index 67c8875..9c3c763 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
@@ -51,12 +51,15 @@ import org.apache.olingo.commons.api.edm.EdmProperty;
 import org.apache.olingo.commons.api.edm.EdmType;
 import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
 import org.apache.olingo.commons.api.format.ContentType;
+import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
 import org.apache.olingo.server.api.deserializer.DeserializerException;
+import org.apache.olingo.server.api.deserializer.DeserializerException.MessageKeys;
 import org.apache.olingo.server.api.deserializer.DeserializerResult;
 import org.apache.olingo.server.api.deserializer.ODataDeserializer;
 import org.apache.olingo.server.core.deserializer.DeserializerResultImpl;
 import org.apache.olingo.server.core.deserializer.helper.ExpandTreeBuilder;
 import org.apache.olingo.server.core.deserializer.helper.ExpandTreeBuilderImpl;
+
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonParser;
@@ -72,8 +75,12 @@ public class ODataJsonDeserializer implements ODataDeserializer {
 
   private static final String ODATA_ANNOTATION_MARKER = "@";
   private static final String ODATA_CONTROL_INFORMATION_PREFIX = "@odata.";
-
+  private static final EdmPrimitiveType EDM_INT64 = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int64);
+  private static final EdmPrimitiveType EDM_DECIMAL = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Decimal);
+  private final boolean isIEEE754Compatible;
+  
   public ODataJsonDeserializer(final ContentType contentType) {
+    isIEEE754Compatible = isODataIEEE754Compatible(contentType);
   }
   
   @Override
@@ -666,8 +673,17 @@ public class ODataJsonDeserializer implements ODataDeserializer {
       EdmPrimitiveType edmPrimitiveType = (EdmPrimitiveType) type;
       checkJsonTypeBasedOnPrimitiveType(name, edmPrimitiveType.getName(), jsonNode);
       Class<?> javaClass = getJavaClassForPrimitiveType(mapping, edmPrimitiveType);
-      return edmPrimitiveType.valueOfString(jsonNode.asText(),
-          isNullable, maxLength, precision, scale, isUnicode, javaClass);
+      String jsonNodeAsText = jsonNode.asText();
+      
+      if (isIEEE754Compatible && (edmPrimitiveType.equals(EDM_INT64) || edmPrimitiveType.equals(EDM_DECIMAL)))
{
+        if(jsonNodeAsText.length() == 0) {
+          throw new DeserializerException("IEEE754Compatible values must not be of length
0", 
+              MessageKeys.INVALID_NULL_PROPERTY, name);
+        }
+      }
+      
+      return edmPrimitiveType.valueOfString(jsonNodeAsText, isNullable, maxLength, precision,
scale, isUnicode, 
+          javaClass);
     } catch (EdmPrimitiveTypeException e) {
       throw new DeserializerException(
           "Invalid value: " + jsonNode.asText() + " for property: " + name, e,
@@ -734,20 +750,33 @@ public class ODataJsonDeserializer implements ODataDeserializer {
             + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY,
propertyName);
       }
       break;
-    // Numbers
+    // Numbers (must be numbers)
     case Int16:
     case Int32:
-    case Int64:
     case Byte:
     case SByte:
     case Single:
     case Double:
-    case Decimal:
       if (!jsonNode.isNumber()) {
         throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() +
" for edm " + primKind
             + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY,
propertyName);
       }
       break;
+    case Int64:
+    case Decimal:
+      // Numbers (eighter numers or string)
+      if(isIEEE754Compatible) {
+        if (!jsonNode.isTextual()) {
+          throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType()
+ " for edm " + primKind
+            + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY,
propertyName);
+        }
+      } else {
+        if (!jsonNode.isNumber()) {
+          throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType()
+ " for edm " + primKind
+            + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY,
propertyName);
+        }
+      }
+      break;
     // Strings
     case String:
     case Binary:
@@ -851,4 +880,10 @@ public class ODataJsonDeserializer implements ODataDeserializer {
           DeserializerException.MessageKeys.UNKNOWN_CONTENT);
     }
   }
+  
+  private boolean isODataIEEE754Compatible(final ContentType contentType) {
+    return contentType.getParameters().containsKey("ieee754compatible") 
+        && Boolean.TRUE.toString().toLowerCase().equals(
+            contentType.getParameters().get("ieee754compatible").toLowerCase());
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/AbstractODataDeserializerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/AbstractODataDeserializerTest.java
b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/AbstractODataDeserializerTest.java
index e03b32c..7030b13 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/AbstractODataDeserializerTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/AbstractODataDeserializerTest.java
@@ -31,6 +31,9 @@ import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
 
 public class AbstractODataDeserializerTest {
   protected static final ContentType CONTENT_TYPE_JSON = ODataFormat.JSON.getContentType();
+  protected static final ContentType CONTENT_TYPE_JSON_IEEE754Compatible = 
+      ContentType.parse("application/json;odata.format=minimal;IEEE754Compatible=true");
+  
   protected static final Edm edm = OData.newInstance().createServiceMetadata(
       new EdmTechProvider(), Collections.<EdmxReference> emptyList()).getEdm();
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/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 01ec4b5..4684461 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
@@ -52,7 +52,6 @@ import org.apache.olingo.server.api.deserializer.DeserializerException;
 import org.apache.olingo.server.api.deserializer.ODataDeserializer;
 import org.apache.olingo.server.api.edmx.EdmxReference;
 import org.apache.olingo.server.tecsvc.provider.EdmTechProvider;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class ODataJsonDeserializerEntityTest extends AbstractODataDeserializerTest {
@@ -1414,9 +1413,8 @@ public class ODataJsonDeserializerEntityTest extends AbstractODataDeserializerTe
   }
   
   @Test
-  @Ignore
   public void ieee754Compatible() throws Exception {
-    ODataDeserializer deserializer = OData.newInstance().createDeserializer(CONTENT_TYPE_JSON);
+    ODataDeserializer deserializer = OData.newInstance().createDeserializer(CONTENT_TYPE_JSON_IEEE754Compatible);
     String entityString =
         "{\"PropertyInt16\":32767," +
             "\"PropertyString\":\"First Resource - positive values\"," +
@@ -1440,7 +1438,86 @@ public class ODataJsonDeserializerEntityTest extends AbstractODataDeserializerTe
         .entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))).getEntity();
     
     assertEquals(9223372036854775807L, entity.getProperty("PropertyInt64").asPrimitive());
-    assertEquals(34, entity.getProperty("PropertyDecimal").asPrimitive());
+    assertEquals(BigDecimal.valueOf(34), entity.getProperty("PropertyDecimal").asPrimitive());
+  }
+  
+  @Test
+  public void ieee754CompatibleNull() throws Exception {
+    ODataDeserializer deserializer = OData.newInstance().createDeserializer(CONTENT_TYPE_JSON_IEEE754Compatible);
+    String entityString =
+        "{\"PropertyInt16\":32767," +
+            "\"PropertyString\":\"First Resource - positive values\"," +
+            "\"PropertyBoolean\":null," +
+            "\"PropertyByte\":255," +
+            "\"PropertySByte\":127," +
+            "\"PropertyInt32\":2147483647," +
+            "\"PropertyInt64\":null," +
+            "\"PropertySingle\":1.79E20," +
+            "\"PropertyDouble\":-1.79E19," +
+            "\"PropertyDecimal\":null," +
+            "\"PropertyBinary\":\"ASNFZ4mrze8=\"," +
+            "\"PropertyDate\":null," +
+            "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," +
+            "\"PropertyDuration\":\"PT6S\"," +
+            "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," +
+            "\"PropertyTimeOfDay\":\"03:26:05\"}";
+    
+    final InputStream stream = new ByteArrayInputStream(entityString.getBytes());
+    final Entity entity = deserializer
+        .entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias", "ETAllPrim"))).getEntity();
+    
+    assertTrue(entity.getProperty("PropertyInt64").isNull());
+    assertTrue(entity.getProperty("PropertyDecimal").isNull());
+  }
+  
+  @Test(expected=DeserializerException.class)
+  public void ieee754CompatibleEmptyString() throws Exception {
+    ODataDeserializer deserializer = OData.newInstance().createDeserializer(CONTENT_TYPE_JSON_IEEE754Compatible);
+    String entityString =
+        "{\"PropertyInt16\":32767," +
+            "\"PropertyString\":\"First Resource - positive values\"," +
+            "\"PropertyBoolean\":null," +
+            "\"PropertyByte\":255," +
+            "\"PropertySByte\":127," +
+            "\"PropertyInt32\":2147483647," +
+            "\"PropertyInt64\":\"\"," +
+            "\"PropertySingle\":1.79E20," +
+            "\"PropertyDouble\":-1.79E19," +
+            "\"PropertyDecimal\":\" \"," +
+            "\"PropertyBinary\":\"ASNFZ4mrze8=\"," +
+            "\"PropertyDate\":null," +
+            "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," +
+            "\"PropertyDuration\":\"PT6S\"," +
+            "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," +
+            "\"PropertyTimeOfDay\":\"03:26:05\"}";
+    
+    final InputStream stream = new ByteArrayInputStream(entityString.getBytes());
+    deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias",
"ETAllPrim"))).getEntity();
+  }
+  
+  @Test(expected=DeserializerException.class)
+  public void ieee754CompatibleNullAsString() throws Exception {
+    ODataDeserializer deserializer = OData.newInstance().createDeserializer(CONTENT_TYPE_JSON_IEEE754Compatible);
+    String entityString =
+        "{\"PropertyInt16\":32767," +
+            "\"PropertyString\":\"First Resource - positive values\"," +
+            "\"PropertyBoolean\":null," +
+            "\"PropertyByte\":255," +
+            "\"PropertySByte\":127," +
+            "\"PropertyInt32\":2147483647," +
+            "\"PropertyInt64\":\"null\"," +
+            "\"PropertySingle\":1.79E20," +
+            "\"PropertyDouble\":-1.79E19," +
+            "\"PropertyDecimal\":\"null\"," +
+            "\"PropertyBinary\":\"ASNFZ4mrze8=\"," +
+            "\"PropertyDate\":null," +
+            "\"PropertyDateTimeOffset\":\"2012-12-03T07:16:23Z\"," +
+            "\"PropertyDuration\":\"PT6S\"," +
+            "\"PropertyGuid\":\"01234567-89ab-cdef-0123-456789abcdef\"," +
+            "\"PropertyTimeOfDay\":\"03:26:05\"}";
+    
+    final InputStream stream = new ByteArrayInputStream(entityString.getBytes());
+    deserializer.entity(stream, edm.getEntityType(new FullQualifiedName("Namespace1_Alias",
"ETAllPrim"))).getEntity();
   }
   
   private void checkPropertyJsonType(final String entityString) throws DeserializerException
{

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/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 a2a1b37..c7d1782 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
@@ -36,11 +36,7 @@ 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.EdmProperty;
-<<<<<<< HEAD
-=======
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.format.ContentType;
->>>>>>> [OLINGO-690] ODataSerializer and ODataDeserializer are created
by contentType instead of ODataFormat
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.server.api.ServiceMetadata;
 import org.apache.olingo.server.api.edmx.EdmxReference;
@@ -326,6 +322,7 @@ public class ODataJsonSerializerTest {
     .entityCollection(metadata, edmEntitySet.getEntityType(), entitySet,
         EntityCollectionSerializerOptions.with()
         .contextURL(ContextURL.with().entitySet(edmEntitySet).build()).build()).getContent();
+
     final String resultString = IOUtils.toString(result);
     final String expectedResult = "{\"value\":["
         + "{\"PropertyInt16\":32766,\"PropertyString\":\"Test String1\"},"
@@ -809,6 +806,7 @@ public class ODataJsonSerializerTest {
     final String resultString = IOUtils.toString(result);
     final String expectedResult = "{"
         + "\"@odata.context\":\"$metadata#ESAllPrim/$entity\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"PropertyInt16\":32767,"
         + "\"PropertyString\":\"First Resource - positive values\","
         + "\"PropertyBoolean\":true,"
@@ -841,6 +839,7 @@ public class ODataJsonSerializerTest {
     final String resultString = IOUtils.toString(result);
     final String expectedResult = "{"
         + "\"@odata.context\":\"http://host/service/$metadata#ESCollAllPrim/$entity\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"PropertyInt16\":1,"
         + "\"CollPropertyString\":"
         + "[\"Employee1@company.example\",\"Employee2@company.example\",\"Employee3@company.example\"],"
@@ -872,13 +871,14 @@ public class ODataJsonSerializerTest {
     final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName());
 
     final String resultString = IOUtils.toString(serializerIEEECompatible
-        .primitiveCollection((EdmPrimitiveType) edmProperty.getType(), property,
+        .primitiveCollection(metadata, (EdmPrimitiveType) edmProperty.getType(), property,
             PrimitiveSerializerOptions.with()
             .contextURL(ContextURL.with()
                 .entitySet(edmEntitySet).keyPath("1").navOrPropertyPath(edmProperty.getName()).build())
                 .build()).getContent());
     Assert.assertEquals("{"
         + "\"@odata.context\":\"$metadata#ESCollAllPrim(1)/CollPropertyInt64\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"value\":[\"929292929292\",\"333333333333\",\"444444444444\"]}",
         resultString);
   }
@@ -890,13 +890,14 @@ public class ODataJsonSerializerTest {
     final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName());
 
     final String resultString = IOUtils.toString(serializerIEEECompatible
-        .primitiveCollection((EdmPrimitiveType) edmProperty.getType(), property,
+        .primitiveCollection(metadata, (EdmPrimitiveType) edmProperty.getType(), property,
             PrimitiveSerializerOptions.with()
             .contextURL(ContextURL.with()
                 .entitySet(edmEntitySet).keyPath("1").navOrPropertyPath(edmProperty.getName()).build())
                 .build()).getContent());
     Assert.assertEquals("{"
         + "\"@odata.context\":\"$metadata#ESCollAllPrim(1)/CollPropertyDecimal\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"value\":[\"12\",\"-2\",\"1234\"]}",
         resultString);
   }
@@ -907,13 +908,14 @@ public class ODataJsonSerializerTest {
     final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyInt64");
     final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName());
     final String resultString = IOUtils.toString(serializerIEEECompatible
-        .primitive((EdmPrimitiveType) edmProperty.getType(), property,
+        .primitive(metadata, (EdmPrimitiveType) edmProperty.getType(), property,
             PrimitiveSerializerOptions.with()
             .contextURL(ContextURL.with()
                 .entitySet(edmEntitySet).keyPath("32767").navOrPropertyPath(edmProperty.getName()).build())
                 .build()).getContent());
     Assert.assertEquals("{"
         + "\"@odata.context\":\"$metadata#ESAllPrim(32767)/PropertyInt64\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"value\":\"" + Long.MAX_VALUE + "\"}",
         resultString);
   }
@@ -924,13 +926,14 @@ public class ODataJsonSerializerTest {
     final EdmProperty edmProperty = (EdmProperty) edmEntitySet.getEntityType().getProperty("PropertyDecimal");
     final Property property = data.readAll(edmEntitySet).getEntities().get(0).getProperty(edmProperty.getName());
     final String resultString = IOUtils.toString(serializerIEEECompatible
-        .primitive((EdmPrimitiveType) edmProperty.getType(), property,
+        .primitive(metadata, (EdmPrimitiveType) edmProperty.getType(), property,
             PrimitiveSerializerOptions.with()
             .contextURL(ContextURL.with()
                 .entitySet(edmEntitySet).keyPath("32767").navOrPropertyPath(edmProperty.getName()).build())
                 .build()).getContent());
     Assert.assertEquals("{"
         + "\"@odata.context\":\"$metadata#ESAllPrim(32767)/PropertyDecimal\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"value\":\"34\"}",
         resultString);
   }
@@ -952,6 +955,7 @@ public class ODataJsonSerializerTest {
 
     Assert.assertThat(resultString, CoreMatchers.startsWith("{"
         + "\"@odata.context\":\"$metadata#ESAllPrim\","
+        + "\"@odata.metadataEtag\":\"W/\\\"metadataETag\\\"\","
         + "\"@odata.count\":\"3\",\"value\":["));
     Assert.assertThat(resultString, CoreMatchers.endsWith("],"
         + "\"@odata.nextLink\":\"/next\"}"));
@@ -981,6 +985,7 @@ public class ODataJsonSerializerTest {
     
     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\"}"));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be55285c/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 44607d8..8451976 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
@@ -50,7 +50,7 @@ public class ServiceDocumentTest {
     ODataSerializer serializer = server.createSerializer(ODataFormat.JSON.getContentType());
     assertNotNull(serializer);
 
-    InputStream result = serializer.serviceDocument(metadata.getEdm(), serviceRoot).getContent();
+    InputStream result = serializer.serviceDocument(metadata, serviceRoot).getContent();
     assertNotNull(result);
     final String jsonString = IOUtils.toString(result);
 


Mime
View raw message