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));
++ }
+ }