Merge branch 'master' into ieee

Conflicts:
        fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
        fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
        fit/src/test/java/org/apache/olingo/fit/AbstractBaseTestITCase.java
        
fit/src/test/java/org/apache/olingo/fit/tecsvc/client/ActionImportITCase.java
        
lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
        
lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ClientEntitySetIterator.java
        
lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataReader.java
        
lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataWriter.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityCreateRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataPropertyUpdateRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractODataInvokeRequest.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntityRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntitySetRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataPropertyRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataServiceDocumentRequestImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ClientODataDeserializerImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonSerializer.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataBinderImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataReaderImpl.java
        
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ODataWriterImpl.java
        
lib/client-core/src/test/java/org/apache/olingo/client/core/v4/EntitySetTest.java
        
lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ErrorTest.java
        
lib/client-core/src/test/java/org/apache/olingo/client/core/v4/PropertyTest.java
        
lib/client-core/src/test/java/org/apache/olingo/client/core/v4/ServiceDocumentTest.java
        
lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalActionProcessor.java
        
lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalEntityProcessor.java
        
lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/processor/TechnicalPrimitiveComplexProcessor.java


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

Branch: refs/heads/olingo712
Commit: ef1fd77875a48f2594f01c22e8d2b0f5f3b4e4c5
Parents: 9d4cf6a a4288fc
Author: Christian Amend <[email protected]>
Authored: Tue Jun 23 16:33:00 2015 +0200
Committer: Christian Amend <[email protected]>
Committed: Tue Jun 23 16:33:00 2015 +0200

----------------------------------------------------------------------
 ext/karaf/karaf-features/pom.xml                |  81 ++
 .../src/main/resources/features.xml             |  59 ++
 ext/karaf/karaf-fit/pom.xml                     | 152 ++++
 .../apache/olingo/osgi/itests/BundlesTest.java  |  55 ++
 .../osgi/itests/OlingoOSGiTestSupport.java      | 134 +++
 .../osgi/itests/server/CarServiceTest.java      | 105 +++
 ext/karaf/pom.xml                               |  41 +
 ext/pom.xml                                     |   9 +
 fit/pom.xml                                     |  14 +-
 .../org/apache/olingo/fit/AbstractServices.java |  10 +-
 .../fit/serializer/FITAtomDeserializer.java     |   2 +-
 .../olingo/fit/utils/AbstractUtilities.java     |  14 +-
 .../org/apache/olingo/fit/utils/FSManager.java  |   6 +-
 .../olingo/fit/AbstractBaseTestITCase.java      |   2 +-
 .../fit/tecsvc/client/ActionImportITCase.java   | 197 +++--
 .../olingo/fit/tecsvc/client/BasicITCase.java   | 127 +--
 .../fit/tecsvc/client/BatchClientITCase.java    |  64 +-
 .../fit/tecsvc/client/ConditionalITCase.java    |  30 +
 .../tecsvc/client/PrimitiveComplexITCase.java   |  16 +
 .../tecsvc/client/SystemQueryOptionITCase.java  |  23 +-
 lib/client-api/pom.xml                          |   1 +
 .../apache/olingo/client/api/ODataClient.java   |   3 +-
 .../communication/header/ODataPreferences.java  |  33 +-
 .../api/domain/ClientEntitySetIterator.java     |   2 +-
 .../serialization/ClientODataDeserializer.java  |   2 -
 .../api/serialization/ODataDeserializer.java    |  65 ++
 .../ODataDeserializerException.java             |  38 +
 .../client/api/serialization/ODataReader.java   |   2 +-
 .../api/serialization/ODataSerializer.java      |  33 +
 .../serialization/ODataSerializerException.java |  38 +
 .../client/api/serialization/ODataWriter.java   |   1 -
 lib/client-core/pom.xml                         |   1 +
 .../olingo/client/core/ODataClientImpl.java     |   6 +-
 .../header/ODataErrorResponseChecker.java       |  29 +-
 .../cud/ODataEntityCreateRequestImpl.java       |   4 +-
 .../cud/ODataEntityUpdateRequestImpl.java       |   4 +-
 .../cud/ODataPropertyUpdateRequestImpl.java     |   4 +-
 .../cud/ODataReferenceAddingRequestImpl.java    |   2 +-
 .../invoke/AbstractODataInvokeRequest.java      |  12 +-
 .../request/retrieve/ODataDeltaRequestImpl.java |   2 +-
 .../retrieve/ODataEntityRequestImpl.java        |   2 +-
 .../retrieve/ODataEntitySetRequestImpl.java     |   2 +-
 .../retrieve/ODataPropertyRequestImpl.java      |   2 +-
 .../request/retrieve/ODataRawRequestImpl.java   |   2 +-
 .../ODataServiceDocumentRequestImpl.java        |   2 +-
 .../ODataMediaEntityCreateRequestImpl.java      |   2 +-
 .../ODataMediaEntityUpdateRequestImpl.java      |   2 +-
 .../data/JSONServiceDocumentDeserializer.java   |   4 +-
 .../data/XMLServiceDocumentDeserializer.java    |   4 +-
 .../core/serialization/AbstractAtomDealer.java  |  97 +++
 .../core/serialization/AtomDeserializer.java    | 873 +++++++++++++++++++
 .../serialization/AtomGeoValueDeserializer.java | 269 ++++++
 .../serialization/AtomGeoValueSerializer.java   | 223 +++++
 .../core/serialization/AtomSerializer.java      | 570 ++++++++++++
 .../ClientODataDeserializerImpl.java            |   8 +-
 .../core/serialization/ContextURLParser.java    | 118 +++
 .../serialization/JsonDeltaDeserializer.java    | 100 +++
 .../core/serialization/JsonDeserializer.java    | 421 +++++++++
 .../serialization/JsonEntityDeserializer.java   | 229 +++++
 .../serialization/JsonEntitySerializer.java     | 131 +++
 .../JsonEntitySetDeserializer.java              | 120 +++
 .../serialization/JsonEntitySetSerializer.java  |  93 ++
 .../serialization/JsonGeoValueDeserializer.java | 262 ++++++
 .../serialization/JsonGeoValueSerializer.java   | 184 ++++
 .../JsonODataErrorDeserializer.java             |  87 ++
 .../JsonODataErrorDetailDeserializer.java       |  58 ++
 .../serialization/JsonPropertyDeserializer.java | 114 +++
 .../serialization/JsonPropertySerializer.java   |  94 ++
 .../core/serialization/JsonSerializer.java      | 387 ++++++++
 .../core/serialization/ODataBinderImpl.java     |  41 +-
 .../core/serialization/ODataReaderImpl.java     |   2 +-
 .../core/serialization/ODataWriterImpl.java     |   2 +-
 .../serialization/AtomDeserializerTest.java     | 329 +++++++
 .../serialization/ContextURLParserTest.java     | 256 ++++++
 .../olingo/client/core/v4/EntitySetTest.java    |   2 +-
 .../apache/olingo/client/core/v4/ErrorTest.java |   2 +-
 .../olingo/client/core/v4/PropertyTest.java     |   4 +-
 .../client/core/v4/ServiceDocumentTest.java     |   2 +-
 lib/commons-api/pom.xml                         |   1 +
 .../commons/api/ODataPreferenceNames.java       |  46 +
 .../commons/api/edm/provider/CsdlNamed.java     |   3 +-
 .../olingo/commons/api/http/HttpHeader.java     |  15 +-
 .../api/serialization/ODataDeserializer.java    |  65 --
 .../ODataDeserializerException.java             |  38 -
 .../api/serialization/ODataSerializer.java      |  33 -
 .../serialization/ODataSerializerException.java |  38 -
 lib/commons-core/pom.xml                        |   1 +
 .../core/serialization/AbstractAtomDealer.java  |  97 ---
 .../core/serialization/AtomDeserializer.java    | 873 -------------------
 .../serialization/AtomGeoValueDeserializer.java | 269 ------
 .../serialization/AtomGeoValueSerializer.java   | 223 -----
 .../core/serialization/AtomSerializer.java      | 570 ------------
 .../core/serialization/ContextURLParser.java    | 118 ---
 .../serialization/JsonDeltaDeserializer.java    | 100 ---
 .../core/serialization/JsonDeserializer.java    | 421 ---------
 .../serialization/JsonEntityDeserializer.java   | 229 -----
 .../serialization/JsonEntitySerializer.java     | 131 ---
 .../JsonEntitySetDeserializer.java              | 120 ---
 .../serialization/JsonEntitySetSerializer.java  |  93 --
 .../serialization/JsonGeoValueDeserializer.java | 262 ------
 .../serialization/JsonGeoValueSerializer.java   | 184 ----
 .../JsonODataErrorDeserializer.java             |  87 --
 .../JsonODataErrorDetailDeserializer.java       |  58 --
 .../serialization/JsonPropertyDeserializer.java | 114 ---
 .../serialization/JsonPropertySerializer.java   |  94 --
 .../core/serialization/JsonSerializer.java      | 387 --------
 .../serialization/AtomDeserializerTest.java     | 328 -------
 .../serialization/ContextURLParserTest.java     | 255 ------
 lib/server-api/pom.xml                          |   1 +
 .../org/apache/olingo/server/api/OData.java     |   8 +
 .../deserializer/batch/ODataResponsePart.java   |  29 +-
 .../olingo/server/api/prefer/Preferences.java   | 110 +++
 .../server/api/prefer/PreferencesApplied.java   | 169 ++++
 .../apache/olingo/server/api/uri/UriInfo.java   |  19 +-
 .../olingo/server/api/uri/UriInfoEntityId.java  |  13 +-
 .../olingo/server/api/uri/UriInfoMetadata.java  |   4 +-
 .../olingo/server/api/uri/UriParameter.java     |  11 +-
 .../server/api/uri/UriResourceFunction.java     |   2 +-
 .../server/api/uri/UriResourceLambdaAll.java    |   5 +-
 .../server/api/uri/UriResourceLambdaAny.java    |   4 +-
 .../api/uri/UriResourceLambdaVariable.java      |   3 +-
 .../server/api/uri/UriResourceNavigation.java   |   2 +-
 .../api/prefer/PreferencesAppliedTest.java      |  67 ++
 lib/server-core/pom.xml                         |   1 +
 .../olingo/server/core/ODataDispatcher.java     |  59 +-
 .../apache/olingo/server/core/ODataImpl.java    |   8 +
 .../core/batchhandler/BatchPartHandler.java     |  14 +-
 .../core/etag/PreconditionsValidator.java       |  49 +-
 .../olingo/server/core/prefer/PreferParser.java | 150 ++++
 .../server/core/prefer/PreferencesImpl.java     | 108 +++
 .../server/core/uri/UriResourceActionImpl.java  |  13 +-
 .../core/uri/UriResourceLambdaAnyImpl.java      |   2 +-
 .../server/core/uri/UriResourceTypedImpl.java   |   8 +-
 .../core/uri/UriResourceWithKeysImpl.java       |  17 +-
 .../uri/queryoption/expression/MemberImpl.java  |   5 +
 .../server/core/prefer/PreferencesTest.java     | 168 ++++
 .../apache/olingo/server/tecsvc/Encoder.java    | 132 ---
 .../processor/TechnicalActionProcessor.java     | 170 ++--
 .../processor/TechnicalBatchProcessor.java      |  26 +-
 .../processor/TechnicalEntityProcessor.java     |  69 +-
 .../TechnicalPrimitiveComplexProcessor.java     |  27 +-
 .../options/ServerSidePagingHandler.java        | 119 ++-
 .../tecsvc/provider/EntityTypeProvider.java     |   2 +-
 .../tecsvc/provider/PropertyProvider.java       |   4 +-
 .../olingo/server/core/ODataHandlerTest.java    |  60 +-
 .../server/core/PreconditionsValidatorTest.java | 241 ++---
 .../server/core/uri/UriResourceImplTest.java    |   2 +-
 .../core/uri/antlr/TestFullResourcePath.java    |  12 +
 .../core/uri/antlr/TestUriParserImpl.java       |   2 +-
 .../queryoption/expression/ExpressionTest.java  |  20 +-
 .../core/uri/testutil/FilterTreeToText.java     |   2 +-
 .../core/uri/testutil/ResourceValidator.java    |   2 +-
 pom.xml                                         |   9 +
 samples/osgi/server/README.txt                  | 183 ++++
 samples/osgi/server/pom.xml                     | 112 +++
 samples/pom.xml                                 |  17 +-
 samples/tutorials/p1_read/pom.xml               |  79 ++
 .../mynamespace/service/DemoEdmProvider.java    | 153 ++++
 .../service/DemoEntityCollectionProcessor.java  | 129 +++
 .../myservice/mynamespace/web/DemoServlet.java  |  67 ++
 .../p1_read/src/main/webapp/WEB-INF/web.xml     |  40 +
 .../tutorials/p1_read/src/main/webapp/index.jsp |  26 +
 samples/tutorials/p2_readep/pom.xml             |  79 ++
 .../myservice/mynamespace/data/Storage.java     | 125 +++
 .../mynamespace/service/DemoEdmProvider.java    | 153 ++++
 .../service/DemoEntityCollectionProcessor.java  |  90 ++
 .../service/DemoEntityProcessor.java            | 126 +++
 .../service/DemoPrimitiveProcessor.java         | 147 ++++
 .../java/myservice/mynamespace/util/Util.java   | 105 +++
 .../myservice/mynamespace/web/DemoServlet.java  |  76 ++
 .../p2_readep/src/main/webapp/WEB-INF/web.xml   |  40 +
 .../p2_readep/src/main/webapp/index.jsp         |  26 +
 samples/tutorials/p3_write/pom.xml              |  79 ++
 .../myservice/mynamespace/data/Storage.java     | 263 ++++++
 .../mynamespace/service/DemoEdmProvider.java    | 157 ++++
 .../service/DemoEntityCollectionProcessor.java  |  93 ++
 .../service/DemoEntityProcessor.java            | 190 ++++
 .../service/DemoPrimitiveProcessor.java         | 146 ++++
 .../java/myservice/mynamespace/util/Util.java   | 121 +++
 .../myservice/mynamespace/web/DemoServlet.java  |  73 ++
 .../p3_write/src/main/webapp/WEB-INF/web.xml    |  40 +
 .../p3_write/src/main/webapp/index.jsp          |  26 +
 samples/tutorials/pom.xml                       |  54 ++
 183 files changed, 10614 insertions(+), 6125 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index 172e37a,73eae08..0d350d5
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@@ -48,14 -55,6 +55,7 @@@ import org.apache.olingo.commons.api.da
  import org.apache.olingo.commons.api.data.Property;
  import org.apache.olingo.commons.api.data.ResWrap;
  import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializer;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
- import org.apache.olingo.commons.api.serialization.ODataSerializer;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
- import org.apache.olingo.commons.core.serialization.AtomSerializer;
- import org.apache.olingo.commons.core.serialization.JsonDeserializer;
- import org.apache.olingo.commons.core.serialization.JsonSerializer;
  import org.apache.olingo.fit.UnsupportedMediaTypeException;
  import org.apache.olingo.fit.metadata.Metadata;
  import org.apache.olingo.fit.metadata.NavigationProperty;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
index 0d0e491,0dad1e6..4e4785d
--- a/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
@@@ -41,10 -44,6 +44,7 @@@ import org.apache.olingo.client.core.se
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.ResWrap;
  import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
- import org.apache.olingo.commons.core.serialization.AtomSerializer;
- import org.apache.olingo.commons.core.serialization.JsonSerializer;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/AbstractBaseTestITCase.java
----------------------------------------------------------------------
diff --cc fit/src/test/java/org/apache/olingo/fit/AbstractBaseTestITCase.java
index a838390,58dd2a3..f7d49a1
--- a/fit/src/test/java/org/apache/olingo/fit/AbstractBaseTestITCase.java
+++ b/fit/src/test/java/org/apache/olingo/fit/AbstractBaseTestITCase.java
@@@ -33,10 -33,10 +33,10 @@@ import org.apache.olingo.client.api.ODa
  import org.apache.olingo.client.api.domain.ClientEntity;
  import org.apache.olingo.client.api.domain.ClientProperty;
  import org.apache.olingo.client.api.domain.ClientValue;
+ import org.apache.olingo.client.api.serialization.ODataSerializerException;
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.EntityCollection;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  import org.apache.olingo.fit.server.TomcatTestServer;
  import org.apache.olingo.server.tecsvc.TechnicalServlet;
  import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/ActionImportITCase.java
----------------------------------------------------------------------
diff --cc 
fit/src/test/java/org/apache/olingo/fit/tecsvc/client/ActionImportITCase.java
index 8661af4,f29fbe3..316f0ce
--- 
a/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/ActionImportITCase.java
+++ 
b/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/ActionImportITCase.java
@@@ -41,7 -44,8 +44,8 @@@ import org.apache.olingo.client.api.dom
  import org.apache.olingo.client.api.domain.ClientValue;
  import org.apache.olingo.client.core.ODataClientFactory;
  import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.commons.api.http.HttpStatusCode;
  import org.apache.olingo.fit.AbstractBaseTestITCase;
  import org.apache.olingo.fit.tecsvc.TecSvcConst;
  import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
----------------------------------------------------------------------
diff --cc fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BasicITCase.java
index 2073df4,6406241..3466d46
--- 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
@@@ -420,9 -402,27 +421,27 @@@ public class BasicITCase extends Abstra
    }
  
    @Test
+   public void createEntityMinimalResponse() throws Exception {
+     final ODataClient client = getClient();
+     final ClientObjectFactory factory = client.getObjectFactory();
+     ClientEntity newEntity = factory.newEntity(new 
FullQualifiedName("olingo.odata.test1", "ETTwoPrim"));
+     
newEntity.getProperties().add(factory.newPrimitiveProperty("PropertyString",
+         factory.newPrimitiveValueBuilder().buildString("new")));
+     ODataEntityCreateRequest<ClientEntity> request = 
client.getCUDRequestFactory().getEntityCreateRequest(
+         
client.newURIBuilder(SERVICE_URI).appendEntitySetSegment("ESTwoPrim").build(),
+         newEntity);
+     request.setPrefer(getClient().newPreferences().returnMinimal());
+ 
+     final ODataEntityCreateResponse<ClientEntity> response = 
request.execute();
+     assertEquals(HttpStatusCode.NO_CONTENT.getStatusCode(), 
response.getStatusCode());
+     assertEquals("return=minimal", 
response.getHeader(HeaderName.preferenceApplied).iterator().next());
+     assertEquals(SERVICE_URI + "/ESTwoPrim(1)", 
response.getHeader(HttpHeader.LOCATION).iterator().next());
+   }
+ 
+   @Test
    public void readEntityWithExpandedNavigationProperty() {
      final ODataClient client = 
ODataClientFactory.getEdmEnabledClient(SERVICE_URI);
 -    client.getConfiguration().setDefaultPubFormat(ODataFormat.JSON);
 +    client.getConfiguration().setDefaultPubFormat(ContentType.JSON);
  
      final URI uri = client.newURIBuilder(SERVICE_URI)
          .appendEntitySetSegment("ESKeyNav")

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/BatchClientITCase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/ConditionalITCase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/PrimitiveComplexITCase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/fit/src/test/java/org/apache/olingo/fit/tecsvc/client/SystemQueryOptionITCase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
----------------------------------------------------------------------
diff --cc 
lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
index b3ac39c,b8d5830..842dcf6
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
@@@ -33,9 -33,9 +34,9 @@@ import org.apache.olingo.client.api.ser
  import org.apache.olingo.client.api.uri.FilterFactory;
  import org.apache.olingo.client.api.uri.SearchFactory;
  import org.apache.olingo.client.api.uri.URIBuilder;
 -import org.apache.olingo.client.api.domain.ClientObjectFactory;
  import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataSerializer;
++
  
  public interface ODataClient {
  

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ClientEntitySetIterator.java
----------------------------------------------------------------------
diff --cc 
lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ClientEntitySetIterator.java
index 30a1caf,801ef1a..added7a
--- 
a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ClientEntitySetIterator.java
+++ 
b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ClientEntitySetIterator.java
@@@ -33,8 -34,7 +34,7 @@@ import org.apache.olingo.client.api.ser
  import org.apache.olingo.commons.api.Constants;
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataReader.java
----------------------------------------------------------------------
diff --cc 
lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataReader.java
index 746d697,4360cd8..07342eb
--- 
a/lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataReader.java
+++ 
b/lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataReader.java
@@@ -21,16 -21,15 +21,16 @@@ package org.apache.olingo.client.api.se
  import java.io.InputStream;
  import java.util.Map;
  
 -import org.apache.olingo.commons.api.data.ResWrap;
  import org.apache.olingo.client.api.domain.ClientEntity;
  import org.apache.olingo.client.api.domain.ClientEntitySet;
 -import org.apache.olingo.commons.api.ODataError;
  import org.apache.olingo.client.api.domain.ClientProperty;
  import org.apache.olingo.client.api.domain.ClientServiceDocument;
 +import org.apache.olingo.commons.api.ODataError;
 +import org.apache.olingo.commons.api.data.ResWrap;
  import org.apache.olingo.commons.api.edm.Edm;
  import org.apache.olingo.commons.api.edm.provider.CsdlSchema;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
++
  
  /**
   * OData reader.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataWriter.java
----------------------------------------------------------------------
diff --cc 
lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataWriter.java
index 4515cdf,7b5dc5b..1a6d65a
--- 
a/lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataWriter.java
+++ 
b/lib/client-api/src/main/java/org/apache/olingo/client/api/serialization/ODataWriter.java
@@@ -22,12 -22,11 +22,11 @@@ import java.io.InputStream
  import java.net.URI;
  import java.util.Collection;
  
 -import org.apache.olingo.commons.api.data.ResWrap;
  import org.apache.olingo.client.api.domain.ClientEntity;
 -import org.apache.olingo.client.api.domain.ClientProperty;
  import org.apache.olingo.client.api.domain.ClientLink;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.client.api.domain.ClientProperty;
 +import org.apache.olingo.commons.api.data.ResWrap;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  
  /**
   * OData writer.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
index dd9f68e,c490dae..b00d3a8
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/ODataClientImpl.java
@@@ -42,18 -42,18 +43,17 @@@ import org.apache.olingo.client.core.co
  import 
org.apache.olingo.client.core.communication.request.cud.CUDRequestFactoryImpl;
  import 
org.apache.olingo.client.core.communication.request.invoke.InvokeRequestFactoryImpl;
  import 
org.apache.olingo.client.core.communication.request.retrieve.RetrieveRequestFactoryImpl;
 +import org.apache.olingo.client.core.domain.ClientObjectFactoryImpl;
+ import org.apache.olingo.client.core.serialization.AtomSerializer;
  import 
org.apache.olingo.client.core.serialization.ClientODataDeserializerImpl;
+ import org.apache.olingo.client.core.serialization.JsonSerializer;
  import org.apache.olingo.client.core.serialization.ODataBinderImpl;
  import org.apache.olingo.client.core.serialization.ODataReaderImpl;
  import org.apache.olingo.client.core.serialization.ODataWriterImpl;
  import org.apache.olingo.client.core.uri.FilterFactoryImpl;
  import org.apache.olingo.client.core.uri.URIBuilderImpl;
 -import org.apache.olingo.client.api.domain.ClientObjectFactory;
  import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 -import org.apache.olingo.client.core.domain.ClientObjectFactoryImpl;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataSerializer;
- import org.apache.olingo.commons.core.serialization.AtomSerializer;
- import org.apache.olingo.commons.core.serialization.JsonSerializer;
  
  public class ODataClientImpl implements ODataClient {
  

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
index 802e67e,e359e29..53f35d5
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java
@@@ -1,18 -1,18 +1,18 @@@
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
-- * or more contributor license agreements.  See the NOTICE file
++ * or more contributor license agreements. See the NOTICE file
   * distributed with this work for additional information
-- * regarding copyright ownership.  The ASF licenses this file
++ * regarding copyright ownership. The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
-- * with the License.  You may obtain a copy of the License at
-- *
-- *   http://www.apache.org/licenses/LICENSE-2.0
-- *
++ * with the License. You may obtain a copy of the License at
++ * 
++ * http://www.apache.org/licenses/LICENSE-2.0
++ * 
   * Unless required by applicable law or agreed to in writing,
   * software distributed under the License is distributed on an
   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- * KIND, either express or implied.  See the License for the
++ * KIND, either express or implied. See the License for the
   * specific language governing permissions and limitations
   * under the License.
   */
@@@ -24,10 -24,10 +24,11 @@@ import org.apache.http.StatusLine
  import org.apache.olingo.client.api.ODataClient;
  import org.apache.olingo.client.api.communication.ODataClientErrorException;
  import org.apache.olingo.client.api.communication.ODataServerErrorException;
 -import org.apache.olingo.client.api.serialization.ODataDeserializerException;
 -import org.apache.olingo.commons.api.ODataRuntimeException;
  import org.apache.olingo.commons.api.ODataError;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.ODataRuntimeException;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
++import org.apache.olingo.client.api.serialization.ODataDeserializerException;
++
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
@@@ -43,8 -43,8 +44,8 @@@ public final class ODataErrorResponseCh
    }
  
    public static ODataRuntimeException checkResponse(
--          final ODataClient odataClient, final StatusLine statusLine, final 
InputStream entity,
--          final String accept) {
++      final ODataClient odataClient, final StatusLine statusLine, final 
InputStream entity,
++      final String accept) {
  
      ODataRuntimeException result = null;
  
@@@ -59,13 -59,13 +60,13 @@@
        } catch (final RuntimeException e) {
          LOG.warn("Error deserializing error response", e);
          error = getGenericError(
--                statusLine.getStatusCode(),
--                statusLine.getReasonPhrase());
++            statusLine.getStatusCode(),
++            statusLine.getReasonPhrase());
        } catch (final ODataDeserializerException e) {
          LOG.warn("Error deserializing error response", e);
          error = getGenericError(
--                statusLine.getStatusCode(),
--                statusLine.getReasonPhrase());
++            statusLine.getStatusCode(),
++            statusLine.getReasonPhrase());
        }
  
        if (statusLine.getStatusCode() >= 500) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityCreateRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityCreateRequestImpl.java
index 2d85032,424ff8f..0ae8377
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityCreateRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityCreateRequestImpl.java
@@@ -34,10 -33,11 +34,10 @@@ import org.apache.olingo.client.core.co
  import org.apache.olingo.client.core.uri.URIUtils;
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientEntity;
 +import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataSerializerException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
  import org.apache.olingo.commons.api.http.HttpMethod;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  
  /**
   * This class implements an OData create request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
index e0b5d2c,44ff471..8a40e33
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataEntityUpdateRequestImpl.java
@@@ -35,10 -34,11 +35,10 @@@ import org.apache.olingo.client.core.co
  import org.apache.olingo.client.core.uri.URIUtils;
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientEntity;
 +import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataSerializerException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
  import org.apache.olingo.commons.api.http.HttpMethod;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  
  /**
   * This class implements an OData update request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataPropertyUpdateRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataPropertyUpdateRequestImpl.java
index 9166a12,33ec73a..038feeb
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataPropertyUpdateRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataPropertyUpdateRequestImpl.java
@@@ -34,10 -33,11 +34,10 @@@ import org.apache.olingo.client.core.co
  import org.apache.olingo.client.core.uri.URIUtils;
  import org.apache.olingo.commons.api.data.Property;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientProperty;
 +import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataSerializerException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
  import org.apache.olingo.commons.api.http.HttpMethod;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  
  /**
   * This class implements an OData update entity property request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataReferenceAddingRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataReferenceAddingRequestImpl.java
index 592509e,933f223..640b5cf
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataReferenceAddingRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/cud/ODataReferenceAddingRequestImpl.java
@@@ -33,9 -34,8 +34,8 @@@ import org.apache.olingo.client.core.co
  import 
org.apache.olingo.client.core.communication.response.AbstractODataResponse;
  import org.apache.olingo.client.core.uri.URIUtils;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
  import org.apache.olingo.commons.api.http.HttpMethod;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  
  /**
   * See {@link ODataReferenceAddingRequest}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractODataInvokeRequest.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractODataInvokeRequest.java
index c721ed8,29ad66e..f28130d
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractODataInvokeRequest.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractODataInvokeRequest.java
@@@ -31,22 -31,22 +31,22 @@@ import org.apache.http.client.methods.H
  import org.apache.http.client.methods.HttpRequestBase;
  import org.apache.olingo.client.api.ODataClient;
  import 
org.apache.olingo.client.api.communication.request.ODataBatchableRequest;
 -import 
org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
  import 
org.apache.olingo.client.api.communication.request.invoke.ClientNoContent;
 +import 
org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
  import 
org.apache.olingo.client.api.communication.response.ODataInvokeResponse;
+ import org.apache.olingo.client.api.http.HttpClientException;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataSerializerException;
+ import 
org.apache.olingo.client.core.communication.request.AbstractODataBasicRequest;
+ import 
org.apache.olingo.client.core.communication.response.AbstractODataResponse;
+ import org.apache.olingo.client.core.uri.URIUtils;
  import org.apache.olingo.client.api.domain.ClientEntity;
  import org.apache.olingo.client.api.domain.ClientEntitySet;
  import org.apache.olingo.client.api.domain.ClientInvokeResult;
  import org.apache.olingo.client.api.domain.ClientProperty;
  import org.apache.olingo.client.api.domain.ClientValue;
- import org.apache.olingo.client.api.http.HttpClientException;
- import 
org.apache.olingo.client.core.communication.request.AbstractODataBasicRequest;
- import 
org.apache.olingo.client.core.communication.response.AbstractODataResponse;
- import org.apache.olingo.client.core.uri.URIUtils;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
  import org.apache.olingo.commons.api.http.HttpMethod;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
- import org.apache.olingo.commons.api.serialization.ODataSerializerException;
  
  /**
   * This class implements an OData invoke operation request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
index 1680940,5eb4d84..1cd6970
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataDeltaRequestImpl.java
@@@ -26,12 -26,12 +26,12 @@@ import org.apache.http.client.HttpClien
  import org.apache.olingo.client.api.ODataClient;
  import 
org.apache.olingo.client.api.communication.request.retrieve.ODataDeltaRequest;
  import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 +import org.apache.olingo.client.api.domain.ClientDelta;
  import org.apache.olingo.client.api.http.HttpClientException;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
  import org.apache.olingo.commons.api.data.Delta;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientDelta;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
  
  public class ODataDeltaRequestImpl extends 
AbstractODataRetrieveRequest<ClientDelta>
      implements ODataDeltaRequest {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntityRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntityRequestImpl.java
index 7e35189,d5a224f..dec56b0
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntityRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntityRequestImpl.java
@@@ -25,11 -25,11 +25,11 @@@ import org.apache.http.client.HttpClien
  import org.apache.olingo.client.api.ODataClient;
  import 
org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
  import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 +import org.apache.olingo.client.api.domain.ClientEntity;
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientEntity;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
  
  /**
   * This class implements an OData retrieve query request returning a single 
entity.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntitySetRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntitySetRequestImpl.java
index 6779f52,7e0164b..a49dd32
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntitySetRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataEntitySetRequestImpl.java
@@@ -25,11 -25,11 +25,11 @@@ import org.apache.http.client.HttpClien
  import org.apache.olingo.client.api.ODataClient;
  import 
org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest;
  import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 +import org.apache.olingo.client.api.domain.ClientEntitySet;
  import org.apache.olingo.commons.api.data.EntityCollection;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientEntitySet;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
  
  /**
   * This class implements an OData EntitySet query request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataPropertyRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataPropertyRequestImpl.java
index b48fb85,b5a3d10..5c9dfed
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataPropertyRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataPropertyRequestImpl.java
@@@ -26,12 -26,12 +26,12 @@@ import org.apache.http.client.HttpClien
  import org.apache.olingo.client.api.ODataClient;
  import 
org.apache.olingo.client.api.communication.request.retrieve.ODataPropertyRequest;
  import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 +import org.apache.olingo.client.api.domain.ClientProperty;
  import org.apache.olingo.client.api.http.HttpClientException;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
  import org.apache.olingo.commons.api.data.Property;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.client.api.domain.ClientProperty;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
  
  /**
   * This class implements an OData entity property query request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
index 4ea6c61,c29e7ee..79c3e14
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataRawRequestImpl.java
@@@ -31,9 -32,8 +32,8 @@@ import org.apache.olingo.client.api.ser
  import 
org.apache.olingo.client.core.communication.request.AbstractODataRequest;
  import 
org.apache.olingo.client.core.communication.response.AbstractODataResponse;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 +import org.apache.olingo.commons.api.format.ContentType;
  import org.apache.olingo.commons.api.http.HttpMethod;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
  
  /**
   * This class implements a generic OData request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataServiceDocumentRequestImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataServiceDocumentRequestImpl.java
index e8fc2aa,b4888f4..d0b6b1f
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataServiceDocumentRequestImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/ODataServiceDocumentRequestImpl.java
@@@ -26,10 -26,10 +26,10 @@@ import org.apache.olingo.client.api.ODa
  import 
org.apache.olingo.client.api.communication.request.retrieve.ODataServiceDocumentRequest;
  import 
org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
  import org.apache.olingo.client.api.data.ServiceDocument;
 -import org.apache.olingo.commons.api.data.ResWrap;
  import org.apache.olingo.client.api.domain.ClientServiceDocument;
 +import org.apache.olingo.commons.api.data.ResWrap;
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
  
  /**
   * This class implements an OData service document request.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ClientODataDeserializerImpl.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ClientODataDeserializerImpl.java
index 9bd4c6c,89dea37..b6c233f
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ClientODataDeserializerImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/ClientODataDeserializerImpl.java
@@@ -26,24 -26,21 +26,20 @@@ import javax.xml.stream.XMLStreamExcept
  import org.apache.olingo.client.api.data.ServiceDocument;
  import org.apache.olingo.client.api.edm.xml.XMLMetadata;
  import org.apache.olingo.client.api.serialization.ClientODataDeserializer;
+ import org.apache.olingo.client.api.serialization.ODataDeserializer;
+ import org.apache.olingo.client.api.serialization.ODataDeserializerException;
  import org.apache.olingo.client.core.data.JSONServiceDocumentDeserializer;
  import org.apache.olingo.client.core.data.XMLServiceDocumentDeserializer;
 -import org.apache.olingo.client.core.edm.xml.ClientCsdlEdmx;
  import org.apache.olingo.client.core.edm.ClientCsdlXMLMetadata;
 +import org.apache.olingo.client.core.edm.xml.ClientCsdlEdmx;
 +import org.apache.olingo.commons.api.ODataError;
  import org.apache.olingo.commons.api.data.Delta;
  import org.apache.olingo.commons.api.data.Entity;
  import org.apache.olingo.commons.api.data.EntityCollection;
  import org.apache.olingo.commons.api.data.Property;
  import org.apache.olingo.commons.api.data.ResWrap;
 -import org.apache.olingo.commons.api.ODataError;
  import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
 -
 +import org.apache.olingo.commons.api.format.ContentType;
- import org.apache.olingo.commons.api.serialization.ODataDeserializer;
- import org.apache.olingo.commons.api.serialization.ODataDeserializerException;
- import org.apache.olingo.commons.core.serialization.AtomDeserializer;
- import org.apache.olingo.commons.core.serialization.JsonDeltaDeserializer;
- import org.apache.olingo.commons.core.serialization.JsonDeserializer;
- 
  import com.fasterxml.aalto.stax.InputFactoryImpl;
  import com.fasterxml.aalto.stax.OutputFactoryImpl;
  import com.fasterxml.jackson.core.JsonParser;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySerializer.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySerializer.java
index 0000000,9f2056d..75c7feb
mode 000000,100644..100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySerializer.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySerializer.java
@@@ -1,0 -1,135 +1,131 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements. See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership. The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License. You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing,
+  * software distributed under the License is distributed on an
+  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  * KIND, either express or implied. See the License for the
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package org.apache.olingo.client.core.serialization;
+ 
+ import java.io.IOException;
+ 
+ import org.apache.commons.lang3.StringUtils;
+ import org.apache.olingo.commons.api.Constants;
+ import org.apache.olingo.commons.api.data.Annotation;
+ import org.apache.olingo.commons.api.data.Entity;
+ import org.apache.olingo.commons.api.data.Link;
+ import org.apache.olingo.commons.api.data.Operation;
+ import org.apache.olingo.commons.api.data.Property;
+ import org.apache.olingo.commons.api.data.ResWrap;
+ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 -import org.apache.olingo.commons.api.format.ODataFormat;
++import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+ 
+ import com.fasterxml.jackson.core.JsonGenerator;
+ 
+ /**
+  * Writes out JSON string from an entity.
+  */
+ public class JsonEntitySerializer extends JsonSerializer {
+ 
 -  public JsonEntitySerializer(final boolean serverMode) {
 -    super(serverMode);
 -  }
 -
 -  public JsonEntitySerializer(final boolean serverMode, final ODataFormat 
format) {
 -    super(serverMode, format);
++  public JsonEntitySerializer(final boolean serverMode, final ContentType 
contentType) {
++    super(serverMode, contentType);
+   }
+ 
+   protected void doSerialize(final Entity entity, final JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     doContainerSerialize(new ResWrap<Entity>(null, null, entity), jgen);
+   }
+ 
+   protected void doContainerSerialize(final ResWrap<Entity> container, final 
JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     final Entity entity = container.getPayload();
+ 
+     jgen.writeStartObject();
+ 
+     if (serverMode) {
+       if (container.getContextURL() != null) {
+         jgen.writeStringField(Constants.JSON_CONTEXT, 
container.getContextURL().toASCIIString());
+       }
+       if (StringUtils.isNotBlank(container.getMetadataETag())) {
+         jgen.writeStringField(Constants.JSON_METADATA_ETAG, 
container.getMetadataETag());
+       }
+ 
+       if (StringUtils.isNotBlank(entity.getETag())) {
+         jgen.writeStringField(Constants.JSON_ETAG, entity.getETag());
+       }
+     }
+ 
 -    if (StringUtils.isNotBlank(entity.getType()) && format != 
ODataFormat.JSON_NO_METADATA) {
++    if (StringUtils.isNotBlank(entity.getType()) && 
!isODataMetadataNone(contentType)) {
+       jgen.writeStringField(Constants.JSON_TYPE,
+           new 
EdmTypeInfo.Builder().setTypeExpression(entity.getType()).build().external());
+     }
+ 
 -    if (entity.getId() != null && format != ODataFormat.JSON_NO_METADATA) {
++    if (entity.getId() != null && !isODataMetadataNone(contentType)) {
+       jgen.writeStringField(Constants.JSON_ID, 
entity.getId().toASCIIString());
+     }
+ 
+     for (Annotation annotation : entity.getAnnotations()) {
+       valuable(jgen, annotation, "@" + annotation.getTerm());
+     }
+ 
+     for (Property property : entity.getProperties()) {
+       valuable(jgen, property, property.getName());
+     }
+ 
+     if (serverMode && entity.getEditLink() != null && 
StringUtils.isNotBlank(entity.getEditLink().getHref())) {
+       jgen.writeStringField(Constants.JSON_EDIT_LINK,
+           entity.getEditLink().getHref());
+ 
+       if (entity.isMediaEntity()) {
+         jgen.writeStringField(Constants.JSON_MEDIA_READ_LINK,
+             entity.getEditLink().getHref() + "/$value");
+       }
+     }
+ 
 -    if (format != ODataFormat.JSON_NO_METADATA) {
++    if (!isODataMetadataNone(contentType)) {
+       links(entity, jgen);
+     }
+ 
+     for (Link link : entity.getMediaEditLinks()) {
+       if (link.getTitle() == null) {
+         jgen.writeStringField(Constants.JSON_MEDIA_EDIT_LINK, link.getHref());
+       }
+ 
+       if (link.getInlineEntity() != null) {
+         jgen.writeObjectField(link.getTitle(), link.getInlineEntity());
+       }
+       if (link.getInlineEntitySet() != null) {
+         jgen.writeArrayFieldStart(link.getTitle());
+         for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
+           jgen.writeObject(subEntry);
+         }
+         jgen.writeEndArray();
+       }
+     }
+ 
+     if (serverMode) {
+       for (Operation operation : entity.getOperations()) {
+         jgen.writeObjectFieldStart("#" + 
StringUtils.substringAfterLast(operation.getMetadataAnchor(), "#"));
+         jgen.writeStringField(Constants.ATTR_TITLE, operation.getTitle());
+         jgen.writeStringField(Constants.ATTR_TARGET, 
operation.getTarget().toASCIIString());
+         jgen.writeEndObject();
+       }
+     }
+ 
+     jgen.writeEndObject();
+   }
+ }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySetSerializer.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySetSerializer.java
index 0000000,6bcf822..edb92d2
mode 000000,100644..100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySetSerializer.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonEntitySetSerializer.java
@@@ -1,0 -1,92 +1,93 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements. See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership. The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License. You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing,
+  * software distributed under the License is distributed on an
+  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  * KIND, either express or implied. See the License for the
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package org.apache.olingo.client.core.serialization;
+ 
+ import java.io.IOException;
+ 
+ import org.apache.commons.lang3.StringUtils;
+ import org.apache.olingo.commons.api.Constants;
+ import org.apache.olingo.commons.api.data.Annotation;
+ import org.apache.olingo.commons.api.data.Entity;
+ import org.apache.olingo.commons.api.data.EntityCollection;
+ import org.apache.olingo.commons.api.data.ResWrap;
+ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
++import org.apache.olingo.commons.api.format.ContentType;
+ 
+ import com.fasterxml.jackson.core.JsonGenerator;
+ 
+ public class JsonEntitySetSerializer extends JsonSerializer {
+ 
 -  public JsonEntitySetSerializer(final boolean serverMode) {
 -    super(serverMode);
++  public JsonEntitySetSerializer(final boolean serverMode, final ContentType 
contentType) {
++    super(serverMode, contentType);
+   }
+ 
+   protected void doSerialize(final EntityCollection entitySet, final 
JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+     doContainerSerialize(new ResWrap<EntityCollection>(null, null, 
entitySet), jgen);
+   }
+ 
+   protected void doContainerSerialize(final ResWrap<EntityCollection> 
container, final JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     final EntityCollection entitySet = container.getPayload();
+ 
+     jgen.writeStartObject();
+ 
+     if (serverMode) {
+       if (container.getContextURL() != null) {
+         jgen.writeStringField(Constants.JSON_CONTEXT, 
container.getContextURL().toASCIIString());
+       }
+ 
+       if (StringUtils.isNotBlank(container.getMetadataETag())) {
+         jgen.writeStringField(
+             Constants.JSON_METADATA_ETAG,
+             container.getMetadataETag());
+       }
+     }
+ 
+     if (entitySet.getId() != null) {
+       jgen.writeStringField(Constants.JSON_ID, 
entitySet.getId().toASCIIString());
+     }
+     jgen.writeNumberField(Constants.JSON_COUNT,
+         entitySet.getCount() == null ? entitySet.getEntities().size() : 
entitySet.getCount());
+     if (serverMode) {
+       if (entitySet.getNext() != null) {
+         jgen.writeStringField(Constants.JSON_NEXT_LINK,
+             entitySet.getNext().toASCIIString());
+       }
+       if (entitySet.getDeltaLink() != null) {
+         jgen.writeStringField(Constants.JSON_DELTA_LINK,
+             entitySet.getDeltaLink().toASCIIString());
+       }
+     }
+ 
+     for (Annotation annotation : entitySet.getAnnotations()) {
+       valuable(jgen, annotation, "@" + annotation.getTerm());
+     }
+ 
+     jgen.writeArrayFieldStart(Constants.VALUE);
 -    final JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode);
++    final JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode, contentType);
+     for (Entity entity : entitySet.getEntities()) {
+       entitySerializer.doSerialize(entity, jgen);
+     }
+     jgen.writeEndArray();
+ 
+     jgen.writeEndObject();
+   }
+ }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonPropertySerializer.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonPropertySerializer.java
index 0000000,11c6821..9911d49
mode 000000,100644..100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonPropertySerializer.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonPropertySerializer.java
@@@ -1,0 -1,93 +1,94 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements. See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership. The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License. You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing,
+  * software distributed under the License is distributed on an
+  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  * KIND, either express or implied. See the License for the
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package org.apache.olingo.client.core.serialization;
+ 
+ import java.io.IOException;
+ import java.net.URI;
+ 
+ import org.apache.commons.lang3.StringUtils;
+ import org.apache.olingo.commons.api.Constants;
+ import org.apache.olingo.commons.api.data.Annotation;
+ import org.apache.olingo.commons.api.data.Property;
+ import org.apache.olingo.commons.api.data.ResWrap;
+ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
++import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+ 
+ import com.fasterxml.jackson.core.JsonGenerator;
+ 
+ /**
+  * Writes out JSON string from <tt>PropertyImpl</tt>.
+  */
+ public class JsonPropertySerializer extends JsonSerializer {
+ 
 -  public JsonPropertySerializer(final boolean serverMode) {
 -    super(serverMode);
++  public JsonPropertySerializer(final boolean serverMode, final ContentType 
contentType) {
++    super(serverMode, contentType);
+   }
+ 
+   protected void doSerialize(final Property property, final JsonGenerator 
jgen)
+       throws IOException, EdmPrimitiveTypeException {
+     doContainerSerialize(new ResWrap<Property>((URI) null, null, property), 
jgen);
+   }
+ 
+   protected void doContainerSerialize(final ResWrap<Property> container, 
final JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     final Property property = container.getPayload();
+ 
+     jgen.writeStartObject();
+ 
+     if (serverMode && container.getContextURL() != null) {
+       jgen.writeStringField(Constants.JSON_CONTEXT, 
container.getContextURL().toASCIIString());
+     }
+ 
+     if (StringUtils.isNotBlank(property.getType())) {
+       jgen.writeStringField(Constants.JSON_TYPE,
+           new 
EdmTypeInfo.Builder().setTypeExpression(property.getType()).build().external());
+     }
+ 
+     for (Annotation annotation : property.getAnnotations()) {
+       valuable(jgen, annotation, "@" + annotation.getTerm());
+     }
+ 
+     if (property.isNull()) {
+       jgen.writeBooleanField(Constants.JSON_NULL, true);
+     } else if (property.isGeospatial() || property.isCollection()) {
+       valuable(jgen, property, Constants.VALUE);
+     } else if (property.isPrimitive()) {
+       final EdmTypeInfo typeInfo = property.getType() == null
+           ? null
+               : new 
EdmTypeInfo.Builder().setTypeExpression(property.getType()).build();
+ 
+       jgen.writeFieldName(Constants.VALUE);
+       primitiveValue(jgen, typeInfo, property.asPrimitive());
+     } else if (property.isEnum()) {
+       jgen.writeStringField(Constants.VALUE, property.asEnum().toString());
+     } else if (property.isComplex()) {
+       for (Property cproperty : property.asComplex().getValue()) {
+         valuable(jgen, cproperty, cproperty.getName());
+       }
+     } else if (property.isComplex()) {
+       for (Property cproperty : property.asComplex().getValue()) {
+         valuable(jgen, cproperty, cproperty.getName());
+       }
+     }
+ 
+     jgen.writeEndObject();
+   }
+ }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ef1fd778/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonSerializer.java
----------------------------------------------------------------------
diff --cc 
lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonSerializer.java
index 0000000,484bbfa..d095793
mode 000000,100644..100755
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonSerializer.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonSerializer.java
@@@ -1,0 -1,376 +1,387 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements. See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership. The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License. You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing,
+  * software distributed under the License is distributed on an
+  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  * KIND, either express or implied. See the License for the
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package org.apache.olingo.client.core.serialization;
+ 
+ import java.io.IOException;
+ import java.io.Writer;
+ import java.net.URI;
+ import java.util.ArrayList;
+ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+ 
+ import org.apache.commons.lang3.ArrayUtils;
+ import org.apache.commons.lang3.StringUtils;
+ import org.apache.olingo.client.api.serialization.ODataSerializer;
+ import org.apache.olingo.client.api.serialization.ODataSerializerException;
+ import org.apache.olingo.commons.api.Constants;
+ import org.apache.olingo.commons.api.data.Annotatable;
+ import org.apache.olingo.commons.api.data.Annotation;
+ import org.apache.olingo.commons.api.data.ComplexValue;
+ import org.apache.olingo.commons.api.data.Entity;
+ import org.apache.olingo.commons.api.data.EntityCollection;
+ import org.apache.olingo.commons.api.data.Link;
+ import org.apache.olingo.commons.api.data.Linked;
+ import org.apache.olingo.commons.api.data.Property;
+ import org.apache.olingo.commons.api.data.ResWrap;
+ import org.apache.olingo.commons.api.data.Valuable;
+ import org.apache.olingo.commons.api.data.ValueType;
+ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
+ import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+ import org.apache.olingo.commons.api.edm.geo.Geospatial;
 -import org.apache.olingo.commons.api.format.ODataFormat;
++import org.apache.olingo.commons.api.format.ContentType;
+ import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+ import 
org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
+ 
+ import com.fasterxml.jackson.core.JsonFactory;
+ import com.fasterxml.jackson.core.JsonGenerator;
+ 
+ public class JsonSerializer implements ODataSerializer {
+ 
+   private static final EdmPrimitiveTypeKind[] NUMBER_TYPES = {
+     EdmPrimitiveTypeKind.Byte, EdmPrimitiveTypeKind.SByte,
+     EdmPrimitiveTypeKind.Single, EdmPrimitiveTypeKind.Double,
+     EdmPrimitiveTypeKind.Int16, EdmPrimitiveTypeKind.Int32, 
EdmPrimitiveTypeKind.Int64,
+     EdmPrimitiveTypeKind.Decimal
+   };
+ 
+   private final JsonGeoValueSerializer geoSerializer = new 
JsonGeoValueSerializer();
+ 
+   protected boolean serverMode;
++  protected final boolean isIEEE754Compatible;
++  protected ContentType contentType;
+ 
 -  protected ODataFormat format;
 -
 -  public JsonSerializer(final boolean serverMode) {
 -    this(serverMode, ODataFormat.JSON_FULL_METADATA);
 -  }
 -
 -  public JsonSerializer(final boolean serverMode, final ODataFormat format) {
++  public JsonSerializer(final boolean serverMode, final ContentType 
contentType) {
+     this.serverMode = serverMode;
 -    this.format = format;
++    this.contentType = contentType;
++    this.isIEEE754Compatible = isIEEE754Compatible();
+   }
+ 
+   @Override
+   public <T> void write(final Writer writer, final T obj) throws 
ODataSerializerException {
+     try {
+       final JsonGenerator json = new JsonFactory().createGenerator(writer);
+       if (obj instanceof EntityCollection) {
 -        new 
JsonEntitySetSerializer(serverMode).doSerialize((EntityCollection) obj, json);
++        new JsonEntitySetSerializer(serverMode, 
contentType).doSerialize((EntityCollection) obj, json);
+       } else if (obj instanceof Entity) {
 -        new JsonEntitySerializer(serverMode, format).doSerialize((Entity) 
obj, json);
++        new JsonEntitySerializer(serverMode, 
contentType).doSerialize((Entity) obj, json);
+       } else if (obj instanceof Property) {
 -        new JsonPropertySerializer(serverMode).doSerialize((Property) obj, 
json);
++        new JsonPropertySerializer(serverMode, 
contentType).doSerialize((Property) obj, json);
+       } else if (obj instanceof Link) {
+         link((Link) obj, json);
+       }
+       json.flush();
+     } catch (final IOException e) {
+       throw new ODataSerializerException(e);
+     } catch (final EdmPrimitiveTypeException e) {
+       throw new ODataSerializerException(e);
+     }
+   }
+ 
+   private void reference(final ResWrap<URI> container, final JsonGenerator 
json) throws IOException {
+     json.writeStartObject();
+ 
+     json.writeStringField(Constants.JSON_CONTEXT, 
container.getContextURL().toASCIIString());
+     json.writeStringField(Constants.JSON_ID, 
container.getPayload().toASCIIString());
+ 
+     json.writeEndObject();
+   }
+ 
+   @SuppressWarnings("unchecked")
+   @Override
+   public <T> void write(final Writer writer, final ResWrap<T> container) 
throws ODataSerializerException {
+     final T obj = container == null ? null : container.getPayload();
+     try {
+       final JsonGenerator json = new JsonFactory().createGenerator(writer);
+       if (obj instanceof EntityCollection) {
 -        new 
JsonEntitySetSerializer(serverMode).doContainerSerialize((ResWrap<EntityCollection>)
 container, json);
++        new JsonEntitySetSerializer(serverMode, 
contentType).doContainerSerialize(
++            (ResWrap<EntityCollection>) container, json);
+       } else if (obj instanceof Entity) {
 -        new 
JsonEntitySerializer(serverMode).doContainerSerialize((ResWrap<Entity>) 
container, json);
++        new JsonEntitySerializer(serverMode, 
contentType).doContainerSerialize((ResWrap<Entity>) container, json);
+       } else if (obj instanceof Property) {
 -        new 
JsonPropertySerializer(serverMode).doContainerSerialize((ResWrap<Property>) 
container, json);
++        new JsonPropertySerializer(serverMode, 
contentType).doContainerSerialize((ResWrap<Property>) container, json);
+       } else if (obj instanceof Link) {
+         link((Link) obj, json);
+       } else if (obj instanceof URI) {
+         reference((ResWrap<URI>) container, json);
+       }
+       json.flush();
+     } catch (final IOException e) {
+       throw new ODataSerializerException(e);
+     } catch (final EdmPrimitiveTypeException e) {
+       throw new ODataSerializerException(e);
+     }
+   }
+ 
+   protected void link(final Link link, final JsonGenerator jgen) throws 
IOException {
+     jgen.writeStartObject();
+     jgen.writeStringField(Constants.JSON_URL, link.getHref());
+     jgen.writeEndObject();
+   }
+ 
+   protected void links(final Linked linked, final JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     if (serverMode) {
+       serverLinks(linked, jgen);
+     } else {
+       clientLinks(linked, jgen);
+     }
+   }
+ 
+   protected void clientLinks(final Linked linked, final JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     final Map<String, List<String>> entitySetLinks = new HashMap<String, 
List<String>>();
+     for (Link link : linked.getNavigationLinks()) {
+       for (Annotation annotation : link.getAnnotations()) {
+         valuable(jgen, annotation, link.getTitle() + "@" + 
annotation.getTerm());
+       }
+ 
+       if (isEntitySetNavigation(link)) {
+         final List<String> uris;
+         if (entitySetLinks.containsKey(link.getTitle())) {
+           uris = entitySetLinks.get(link.getTitle());
+         } else {
+           uris = new ArrayList<String>();
+           entitySetLinks.put(link.getTitle(), uris);
+         }
+         if (StringUtils.isNotBlank(link.getHref())) {
+           uris.add(link.getHref());
+         }
+       } else {
+         if (StringUtils.isNotBlank(link.getHref())) {
+           jgen.writeStringField(link.getTitle() + 
Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
+         }
+       }
+ 
+       if (link.getInlineEntity() != null) {
+         jgen.writeFieldName(link.getTitle());
 -        new 
JsonEntitySerializer(serverMode).doSerialize(link.getInlineEntity(), jgen);
++        new JsonEntitySerializer(serverMode, 
contentType).doSerialize(link.getInlineEntity(), jgen);
+       } else if (link.getInlineEntitySet() != null) {
+         jgen.writeArrayFieldStart(link.getTitle());
 -        final JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode);
++        final JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode, contentType);
+         for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
+           entitySerializer.doSerialize(subEntry, jgen);
+         }
+         jgen.writeEndArray();
+       }
+     }
+     for (Map.Entry<String, List<String>> entitySetLink : 
entitySetLinks.entrySet()) {
+       if (!entitySetLink.getValue().isEmpty()) {
+         jgen.writeArrayFieldStart(entitySetLink.getKey() + 
Constants.JSON_BIND_LINK_SUFFIX);
+         for (String uri : entitySetLink.getValue()) {
+           jgen.writeString(uri);
+         }
+         jgen.writeEndArray();
+       }
+     }
+   }
+ 
+   private boolean isEntitySetNavigation(final Link link) {
+     return Constants.ENTITY_SET_NAVIGATION_LINK_TYPE.equals(link.getType());
+   }
+ 
+   protected void serverLinks(final Linked linked, final JsonGenerator jgen)
+       throws IOException, EdmPrimitiveTypeException {
+     if (linked instanceof Entity) {
+       for (Link link : ((Entity) linked).getMediaEditLinks()) {
+         if (StringUtils.isNotBlank(link.getHref())) {
+           jgen.writeStringField(
+               link.getTitle() + 
StringUtils.prependIfMissing(Constants.JSON_MEDIA_EDIT_LINK, "@"),
+               link.getHref());
+         }
+       }
+     }
+ 
+     for (Link link : linked.getAssociationLinks()) {
+       if (StringUtils.isNotBlank(link.getHref())) {
+         jgen.writeStringField(
+             link.getTitle() + Constants.JSON_ASSOCIATION_LINK,
+             link.getHref());
+       }
+     }
+ 
+     for (Link link : linked.getNavigationLinks()) {
+       for (Annotation annotation : link.getAnnotations()) {
+         valuable(jgen, annotation, link.getTitle() + "@" + 
annotation.getTerm());
+       }
+ 
+       if (StringUtils.isNotBlank(link.getHref())) {
+         jgen.writeStringField(
+             link.getTitle() + Constants.JSON_NAVIGATION_LINK,
+             link.getHref());
+       }
+ 
+       if (link.getInlineEntity() != null) {
+         jgen.writeFieldName(link.getTitle());
 -        new 
JsonEntitySerializer(serverMode).doSerialize(link.getInlineEntity(), jgen);
++        new JsonEntitySerializer(serverMode, 
contentType).doSerialize(link.getInlineEntity(), jgen);
+       } else if (link.getInlineEntitySet() != null) {
+         jgen.writeArrayFieldStart(link.getTitle());
 -        JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode);
++        JsonEntitySerializer entitySerializer = new 
JsonEntitySerializer(serverMode, contentType);
+         for (Entity subEntry : link.getInlineEntitySet().getEntities()) {
+           entitySerializer.doSerialize(subEntry, jgen);
+         }
+         jgen.writeEndArray();
+       }
+     }
+   }
+ 
+   private void collection(final JsonGenerator jgen, final EdmTypeInfo 
typeInfo,
+       final ValueType valueType, final List<?> value)
+           throws IOException, EdmPrimitiveTypeException {
+ 
+     jgen.writeStartArray();
+ 
+     for (Object item : value) {
+       final EdmTypeInfo itemTypeInfo = typeInfo == null
+           ? null
+               : new 
EdmTypeInfo.Builder().setTypeExpression(typeInfo.getFullQualifiedName().toString()).build();
+       switch (valueType) {
+       case COLLECTION_PRIMITIVE:
+         primitiveValue(jgen, itemTypeInfo, item);
+         break;
+ 
+       case COLLECTION_GEOSPATIAL:
+         jgen.writeStartObject();
+         geoSerializer.serialize(jgen, (Geospatial) item);
+         jgen.writeEndObject();
+         break;
+ 
+       case COLLECTION_ENUM:
+         jgen.writeString(item.toString());
+         break;
+ 
+       case COLLECTION_COMPLEX:
+         final ComplexValue complexItem2 = (ComplexValue) item;
+         complexValue(jgen, itemTypeInfo, complexItem2.getValue(), 
complexItem2);
+         break;
+ 
+       default:
+       }
+     }
+ 
+     jgen.writeEndArray();
+   }
+ 
+   protected void primitiveValue(final JsonGenerator jgen, final EdmTypeInfo 
typeInfo, final Object value)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     final EdmPrimitiveTypeKind kind = typeInfo == null ? null : 
typeInfo.getPrimitiveTypeKind();
+     final boolean isNumber = kind == null ? value instanceof Number : 
ArrayUtils.contains(NUMBER_TYPES, kind);
+     final boolean isBoolean = kind == null ? value instanceof Boolean : kind 
== EdmPrimitiveTypeKind.Boolean;
+ 
+     if (value == null) {
+       jgen.writeNull();
+     } else if (isBoolean) {
+       jgen.writeBoolean((Boolean) value);
+     } else {
 -      final String serialized = kind == null
++        String serialized = kind == null
+           ? value.toString()
+               // TODO: add facets
+               : EdmPrimitiveTypeFactory.getInstance(kind).
+               valueToString(value, null, null, Constants.DEFAULT_PRECISION, 
Constants.DEFAULT_SCALE, null);
 -          if (isNumber) {
++          
++          if(isIEEE754Compatible && (kind == EdmPrimitiveTypeKind.Int64 || 
kind == EdmPrimitiveTypeKind.Decimal)) {
++            jgen.writeString(serialized);
++          } else if(isNumber) {
+             jgen.writeNumber(serialized);
+           } else {
+             jgen.writeString(serialized);
+           }
+     }
+   }
+ 
+   private void complexValue(final JsonGenerator jgen, final EdmTypeInfo 
typeInfo,
+       final List<Property> value, final Linked linked)
+           throws IOException, EdmPrimitiveTypeException {
+     jgen.writeStartObject();
+ 
 -    if (typeInfo != null && format != ODataFormat.JSON_NO_METADATA) {
++    if (typeInfo != null && !isODataMetadataNone(contentType)) {
+       jgen.writeStringField(Constants.JSON_TYPE, typeInfo.external());
+     }
+ 
+     for (Property property : value) {
+       valuable(jgen, property, property.getName());
+     }
+     if (linked != null) {
+       links(linked, jgen);
+     }
+ 
+     jgen.writeEndObject();
+   }
+ 
+   private void value(final JsonGenerator jgen, final String type, final 
Valuable value)
+       throws IOException, EdmPrimitiveTypeException {
+     final EdmTypeInfo typeInfo = type == null ? null : new 
EdmTypeInfo.Builder().setTypeExpression(type).build();
+ 
+     if (value.isNull()) {
+       jgen.writeNull();
+     } else if (value.isCollection()) {
+       collection(jgen, typeInfo, value.getValueType(), value.asCollection());
+     } else if (value.isPrimitive()) {
+       primitiveValue(jgen, typeInfo, value.asPrimitive());
+     } else if (value.isEnum()) {
+       jgen.writeString(value.asEnum().toString());
+     } else if (value.isGeospatial()) {
+       jgen.writeStartObject();
+       geoSerializer.serialize(jgen, value.asGeospatial());
+       jgen.writeEndObject();
+     } else if (value.isComplex()) {
+       complexValue(jgen, typeInfo, value.asComplex().getValue(), 
value.asComplex());
+     }
+   }
+ 
+   protected void valuable(final JsonGenerator jgen, final Valuable valuable, 
final String name)
+       throws IOException, EdmPrimitiveTypeException {
+ 
+     if (!Constants.VALUE.equals(name) && !(valuable instanceof Annotation)
+         && !(valuable.isComplex() && !valuable.isCollection())) {
+ 
+       String type = valuable.getType();
+       if ((!valuable.isCollection() &&
+           StringUtils.isBlank(type) &&
+           valuable.isPrimitive()) || valuable.isNull()) {
+         type = EdmPrimitiveTypeKind.String.getFullQualifiedName().toString();
+       }
 -      if (StringUtils.isNotBlank(type) && format != 
ODataFormat.JSON_NO_METADATA) {
++      if (StringUtils.isNotBlank(type) && !isODataMetadataNone(contentType)) {
+         jgen.writeFieldName(
+             name + StringUtils.prependIfMissing(Constants.JSON_TYPE, "@"));
+         jgen.writeString(new 
EdmTypeInfo.Builder().setTypeExpression(type).build().external());
+       }
+     }
+ 
+     for (Annotation annotation : ((Annotatable) valuable).getAnnotations()) {
+       valuable(jgen, annotation, name + "@" + annotation.getTerm());
+     }
+ 
+     jgen.writeFieldName(name);
+     value(jgen, valuable.getType(), valuable);
+   }
++  
++  private boolean isIEEE754Compatible() {
++    final String parameter = 
contentType.getParameters().get(ContentType.PARAMETER_IEEE754_COMPATIBLE);
++    return parameter == null ? false : "true".equals(parameter.toLowerCase());
++  }
++  
++  protected boolean isODataMetadataNone(final ContentType contentType) {
++    return contentType.isCompatible(ContentType.APPLICATION_JSON) 
++       && 
ContentType.VALUE_ODATA_METADATA_NONE.equals(contentType.getParameter(ContentType.PARAMETER_ODATA_METADATA));
++  }
+ }

Reply via email to