You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/03/24 10:42:00 UTC

[11/50] [abbrv] git commit: Consistently using package name to differentiate V3 and V4

Consistently using package name to differentiate V3 and V4


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

Branch: refs/heads/master
Commit: bab0362401a2b76724b483942c705c986f5570e6
Parents: be73bf6
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 20 14:37:37 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 20 14:37:37 2014 +0100

----------------------------------------------------------------------
 .../olingo/client/api/CommonConfiguration.java  | 184 +++++++++++++++
 .../olingo/client/api/CommonODataClient.java    |  76 +++++++
 .../apache/olingo/client/api/Configuration.java | 184 ---------------
 .../apache/olingo/client/api/ODataClient.java   |  76 -------
 .../apache/olingo/client/api/ODataV3Client.java |  58 -----
 .../apache/olingo/client/api/ODataV4Client.java |  58 -----
 .../client/api/UnsupportedInV3Exception.java    |  31 ---
 .../olingo/client/api/V3Configuration.java      |  44 ----
 .../olingo/client/api/V4Configuration.java      |  24 --
 .../request/batch/BatchRequestFactory.java      |  35 ---
 .../batch/CommonBatchRequestFactory.java        |  35 +++
 .../request/batch/V3BatchRequestFactory.java    |  22 --
 .../request/batch/V4BatchRequestFactory.java    |  22 --
 .../request/batch/v3/BatchRequestFactory.java   |  24 ++
 .../request/batch/v4/BatchRequestFactory.java   |  24 ++
 .../request/cud/CUDRequestFactory.java          | 145 ------------
 .../request/cud/CommonCUDRequestFactory.java    | 145 ++++++++++++
 .../request/cud/V3CUDRequestFactory.java        |  22 --
 .../request/cud/V4CUDRequestFactory.java        |  22 --
 .../request/cud/v3/CUDRequestFactory.java       |  24 ++
 .../request/cud/v4/CUDRequestFactory.java       |  24 ++
 .../invoke/CommonInvokeRequestFactory.java      |  58 +++++
 .../request/invoke/InvokeRequestFactory.java    |  58 -----
 .../request/invoke/V3InvokeRequestFactory.java  |  24 --
 .../request/invoke/V4InvokeRequestFactory.java  |  24 --
 .../request/invoke/v3/InvokeRequestFactory.java |  25 +++
 .../request/invoke/v4/InvokeRequestFactory.java |  25 +++
 .../retrieve/CommonRetrieveRequestFactory.java  | 105 +++++++++
 .../retrieve/ODataLinkCollectionRequest.java    |  28 ---
 .../retrieve/RetrieveRequestFactory.java        | 105 ---------
 .../retrieve/V3RetrieveRequestFactory.java      |  33 ---
 .../retrieve/V4RetrieveRequestFactory.java      |  22 --
 .../retrieve/v3/ODataLinkCollectionRequest.java |  29 +++
 .../retrieve/v3/RetrieveRequestFactory.java     |  34 +++
 .../retrieve/v4/RetrieveRequestFactory.java     |  24 ++
 .../streamed/CommonStreamedRequestFactory.java  |  62 +++++
 .../streamed/StreamedRequestFactory.java        |  62 -----
 .../streamed/V3StreamedRequestFactory.java      |  22 --
 .../streamed/V4StreamedRequestFactory.java      |  22 --
 .../streamed/v3/StreamedRequestFactory.java     |  24 ++
 .../streamed/v4/StreamedRequestFactory.java     |  24 ++
 .../olingo/client/api/data/LinkCollection.java  |  52 -----
 .../client/api/data/v3/LinkCollection.java      |  52 +++++
 .../api/domain/ODataEntitySetIterator.java      |   8 +-
 .../client/api/domain/ODataGeospatialValue.java |   6 +-
 .../client/api/domain/ODataLinkCollection.java  | 100 ---------
 .../client/api/domain/ODataPrimitiveValue.java  |  12 +-
 .../api/domain/v3/ODataLinkCollection.java      | 100 +++++++++
 .../olingo/client/api/op/CommonODataBinder.java | 132 +++++++++++
 .../client/api/op/CommonODataDeserializer.java  |  84 +++++++
 .../olingo/client/api/op/CommonODataReader.java | 104 +++++++++
 .../olingo/client/api/op/ODataBinder.java       | 142 ------------
 .../olingo/client/api/op/ODataDeserializer.java |  94 --------
 .../olingo/client/api/op/ODataReader.java       | 114 ----------
 .../client/api/op/ODataV3Deserializer.java      |  31 ---
 .../client/api/op/ODataV4Deserializer.java      |  30 ---
 .../olingo/client/api/op/v3/ODataBinder.java    |  35 +++
 .../client/api/op/v3/ODataDeserializer.java     |  37 +++
 .../olingo/client/api/op/v3/ODataReader.java    |  37 +++
 .../olingo/client/api/op/v4/ODataBinder.java    |  25 +++
 .../client/api/op/v4/ODataDeserializer.java     |  31 +++
 .../olingo/client/api/op/v4/ODataReader.java    |  25 +++
 .../client/api/uri/CommonFilterArgFactory.java  |  83 +++++++
 .../client/api/uri/CommonFilterFactory.java     |  61 +++++
 .../olingo/client/api/uri/CommonURIBuilder.java | 224 ++++++++++++++++++
 .../apache/olingo/client/api/uri/FilterArg.java |  30 +++
 .../olingo/client/api/uri/URIBuilder.java       | 225 -------------------
 .../apache/olingo/client/api/uri/URIFilter.java |  32 +++
 .../olingo/client/api/uri/V3URIBuilder.java     |  47 ----
 .../olingo/client/api/uri/V4URIBuilder.java     |  87 -------
 .../olingo/client/api/uri/filter/FilterArg.java |  30 ---
 .../client/api/uri/filter/FilterArgFactory.java |  83 -------
 .../client/api/uri/filter/FilterFactory.java    |  61 -----
 .../olingo/client/api/uri/filter/URIFilter.java |  32 ---
 .../api/uri/filter/V3FilterArgFactory.java      |  25 ---
 .../client/api/uri/filter/V3FilterFactory.java  |  26 ---
 .../api/uri/filter/V4FilterArgFactory.java      |  55 -----
 .../client/api/uri/filter/V4FilterFactory.java  |  32 ---
 .../client/api/uri/v3/FilterArgFactory.java     |  28 +++
 .../olingo/client/api/uri/v3/FilterFactory.java |  28 +++
 .../olingo/client/api/uri/v3/URIBuilder.java    |  49 ++++
 .../client/api/uri/v4/FilterArgFactory.java     |  59 +++++
 .../olingo/client/api/uri/v4/FilterFactory.java |  35 +++
 .../olingo/client/api/uri/v4/URIBuilder.java    |  89 ++++++++
 .../olingo/client/api/utils/URIUtils.java       |   4 +-
 .../olingo/client/api/v3/Configuration.java     |  46 ++++
 .../olingo/client/api/v3/ODataClient.java       |  67 ++++++
 .../client/api/v3/UnsupportedInV3Exception.java |  31 +++
 .../olingo/client/api/v4/Configuration.java     |  26 +++
 .../olingo/client/api/v4/ODataClient.java       |  67 ++++++
 .../client/core/AbstractConfiguration.java      |   4 +-
 .../olingo/client/core/AbstractODataClient.java |   4 +-
 .../olingo/client/core/ODataClientFactory.java  |  11 +-
 .../olingo/client/core/ODataV3ClientImpl.java   | 149 ------------
 .../olingo/client/core/ODataV4ClientImpl.java   | 148 ------------
 .../olingo/client/core/V3ConfigurationImpl.java |  57 -----
 .../olingo/client/core/V4ConfigurationImpl.java |  31 ---
 .../org/apache/olingo/client/core/Wrapper.java  |  41 ----
 .../request/AbstractODataBasicRequest.java      |   4 +-
 .../request/AbstractODataStreamManager.java     |   1 -
 .../communication/request/ODataRequestImpl.java |  10 +-
 .../core/communication/request/Wrapper.java     |  41 ++++
 .../batch/AbstractBatchRequestFactory.java      |  10 +-
 .../request/batch/ODataBatchRequestImpl.java    |   4 +-
 .../batch/V3BatchRequestFactoryImpl.java        |  32 ---
 .../batch/V4BatchRequestFactoryImpl.java        |  32 ---
 .../batch/v3/BatchRequestFactoryImpl.java       |  33 +++
 .../batch/v4/BatchRequestFactoryImpl.java       |  33 +++
 .../request/cud/AbstractCUDRequestFactory.java  |  10 +-
 .../request/cud/ODataDeleteRequestImpl.java     |   4 +-
 .../cud/ODataEntityCreateRequestImpl.java       |   4 +-
 .../cud/ODataEntityUpdateRequestImpl.java       |   4 +-
 .../request/cud/ODataLinkCreateRequestImpl.java |   4 +-
 .../request/cud/ODataLinkUpdateRequestImpl.java |   4 +-
 .../cud/ODataPropertyUpdateRequestImpl.java     |   4 +-
 .../cud/ODataValueUpdateRequestImpl.java        |   4 +-
 .../request/cud/V3CUDRequestFactoryImpl.java    |  32 ---
 .../request/cud/V4CUDRequestFactoryImpl.java    |  32 ---
 .../request/cud/v3/CUDRequestFactoryImpl.java   |  33 +++
 .../request/cud/v4/CUDRequestFactoryImpl.java   |  33 +++
 .../invoke/AbstractInvokeRequestFactory.java    |  11 +-
 .../request/invoke/ODataInvokeRequestImpl.java  |   6 +-
 .../invoke/V3InvokeRequestFactoryImpl.java      |  89 --------
 .../invoke/V4InvokeRequestFactoryImpl.java      |  43 ----
 .../invoke/v3/InvokeRequestFactoryImpl.java     |  91 ++++++++
 .../invoke/v4/InvokeRequestFactoryImpl.java     |  44 ++++
 .../retrieve/AbstractODataRetrieveRequest.java  |   9 +-
 .../AbstractRetrieveRequestFactory.java         |  10 +-
 .../retrieve/ODataEntityRequestImpl.java        |   4 +-
 .../ODataEntitySetIteratorRequestImpl.java      |   4 +-
 .../retrieve/ODataEntitySetRequestImpl.java     |   4 +-
 .../ODataLinkCollectionRequestImpl.java         |  98 --------
 .../request/retrieve/ODataMediaRequestImpl.java |   4 +-
 .../retrieve/ODataMetadataRequestImpl.java      |   4 +-
 .../retrieve/ODataPropertyRequestImpl.java      |   4 +-
 .../request/retrieve/ODataRawRequestImpl.java   |   4 +-
 .../ODataServiceDocumentRequestImpl.java        |   4 +-
 .../request/retrieve/ODataValueRequestImpl.java |   4 +-
 .../retrieve/V3RetrieveRequestFactoryImpl.java  |  39 ----
 .../retrieve/V4RetrieveRequestFactoryImpl.java  |  32 ---
 .../v3/ODataLinkCollectionRequestImpl.java      |  99 ++++++++
 .../retrieve/v3/RetrieveRequestFactoryImpl.java |  41 ++++
 .../retrieve/v4/RetrieveRequestFactoryImpl.java |  33 +++
 .../AbstractODataStreamedEntityRequest.java     |   4 +-
 .../streamed/AbstractODataStreamedRequest.java  |   6 +-
 .../AbstractStreamedRequestFactory.java         |  10 +-
 .../ODataMediaEntityCreateRequestImpl.java      |   4 +-
 .../ODataMediaEntityUpdateRequestImpl.java      |   4 +-
 .../streamed/ODataStreamUpdateRequestImpl.java  |   4 +-
 .../streamed/V3StreamedRequestFactoryImpl.java  |  32 ---
 .../streamed/V4StreamedRequestFactoryImpl.java  |  32 ---
 .../streamed/v3/StreamedRequestFactoryImpl.java |  33 +++
 .../streamed/v4/StreamedRequestFactoryImpl.java |  33 +++
 .../client/core/data/AtomDeserializer.java      |   1 +
 .../core/data/JSONLinkCollectionImpl.java       | 117 ----------
 .../core/data/ODataJacksonDeserializer.java     |   6 +-
 .../core/data/ODataJacksonSerializer.java       |   6 +-
 .../client/core/data/XMLLinkCollectionImpl.java |  70 ------
 .../core/data/v3/JSONLinkCollectionImpl.java    | 118 ++++++++++
 .../core/data/v3/XMLLinkCollectionImpl.java     |  70 ++++++
 .../olingo/client/core/edm/EdmClientImpl.java   |  12 +-
 .../client/core/edm/EdmEntityContainerImpl.java |   2 +-
 .../core/edm/v3/EdmServiceMetadataImpl.java     |   6 +-
 .../client/core/edm/v3/FunctionImportUtils.java |  36 +++
 .../core/edm/v3/V3FunctionImportUtils.java      |  36 ---
 .../core/op/impl/AbstractEdmDeserializer.java   |   6 +-
 .../core/op/impl/AbstractJacksonTool.java       |  12 +-
 .../core/op/impl/AbstractODataBinder.java       |  19 +-
 .../core/op/impl/AbstractODataDeserializer.java |  18 +-
 .../core/op/impl/AbstractODataReader.java       |  19 +-
 .../core/op/impl/AbstractODataSerializer.java   |   4 +-
 .../core/op/impl/ODataObjectFactoryImpl.java    |   6 +-
 .../client/core/op/impl/ODataV3BinderImpl.java  |  30 ---
 .../core/op/impl/ODataV3DeserializerImpl.java   |  56 -----
 .../client/core/op/impl/ODataV3ReaderImpl.java  |  47 ----
 .../core/op/impl/ODataV3SerializerImpl.java     |  31 ---
 .../client/core/op/impl/ODataV4BinderImpl.java  |  57 -----
 .../core/op/impl/ODataV4DeserializerImpl.java   |  57 -----
 .../client/core/op/impl/ODataV4ReaderImpl.java  |  47 ----
 .../core/op/impl/ODataV4SerializerImpl.java     |  31 ---
 .../client/core/op/impl/ODataWriterImpl.java    |   6 +-
 .../client/core/op/impl/v3/ODataBinderImpl.java |  42 ++++
 .../core/op/impl/v3/ODataDeserializerImpl.java  |  67 ++++++
 .../client/core/op/impl/v3/ODataReaderImpl.java |  66 ++++++
 .../core/op/impl/v3/ODataSerializerImpl.java    |  32 +++
 .../client/core/op/impl/v4/ODataBinderImpl.java |  59 +++++
 .../core/op/impl/v4/ODataDeserializerImpl.java  |  58 +++++
 .../client/core/op/impl/v4/ODataReaderImpl.java |  49 ++++
 .../core/op/impl/v4/ODataSerializerImpl.java    |  32 +++
 .../core/uri/AbstractComparingFilter.java       |  45 ++++
 .../core/uri/AbstractFilterArgFactory.java      | 178 +++++++++++++++
 .../client/core/uri/AbstractFilterFactory.java  | 108 +++++++++
 .../client/core/uri/AbstractURIBuilder.java     |   8 +-
 .../olingo/client/core/uri/AndFilter.java       |  42 ++++
 .../apache/olingo/client/core/uri/EqFilter.java |  33 +++
 .../olingo/client/core/uri/FilterConst.java     |  40 ++++
 .../olingo/client/core/uri/FilterFunction.java  |  48 ++++
 .../olingo/client/core/uri/FilterLambda.java    |  46 ++++
 .../olingo/client/core/uri/FilterLiteral.java   |  41 ++++
 .../apache/olingo/client/core/uri/FilterOp.java |  45 ++++
 .../olingo/client/core/uri/FilterProperty.java  |  40 ++++
 .../apache/olingo/client/core/uri/GeFilter.java |  33 +++
 .../apache/olingo/client/core/uri/GtFilter.java |  33 +++
 .../olingo/client/core/uri/HasFilter.java       |  34 +++
 .../apache/olingo/client/core/uri/LeFilter.java |  33 +++
 .../apache/olingo/client/core/uri/LtFilter.java |  33 +++
 .../olingo/client/core/uri/MatchFilter.java     |  36 +++
 .../apache/olingo/client/core/uri/NeFilter.java |  33 +++
 .../olingo/client/core/uri/NotFilter.java       |  35 +++
 .../apache/olingo/client/core/uri/OrFilter.java |  42 ++++
 .../client/core/uri/V3URIBuilderImpl.java       |  95 --------
 .../client/core/uri/V4URIBuilderImpl.java       | 101 ---------
 .../uri/filter/AbstractComparingFilter.java     |  45 ----
 .../uri/filter/AbstractFilterArgFactory.java    | 178 ---------------
 .../core/uri/filter/AbstractFilterFactory.java  | 108 ---------
 .../client/core/uri/filter/AndFilter.java       |  42 ----
 .../olingo/client/core/uri/filter/EqFilter.java |  33 ---
 .../client/core/uri/filter/FilterConst.java     |  40 ----
 .../client/core/uri/filter/FilterFunction.java  |  48 ----
 .../client/core/uri/filter/FilterLambda.java    |  46 ----
 .../client/core/uri/filter/FilterLiteral.java   |  41 ----
 .../olingo/client/core/uri/filter/FilterOp.java |  45 ----
 .../client/core/uri/filter/FilterProperty.java  |  40 ----
 .../olingo/client/core/uri/filter/GeFilter.java |  33 ---
 .../olingo/client/core/uri/filter/GtFilter.java |  33 ---
 .../client/core/uri/filter/HasFilter.java       |  34 ---
 .../olingo/client/core/uri/filter/LeFilter.java |  33 ---
 .../olingo/client/core/uri/filter/LtFilter.java |  33 ---
 .../client/core/uri/filter/MatchFilter.java     |  36 ---
 .../olingo/client/core/uri/filter/NeFilter.java |  33 ---
 .../client/core/uri/filter/NotFilter.java       |  35 ---
 .../olingo/client/core/uri/filter/OrFilter.java |  42 ----
 .../core/uri/filter/V3FilterArgFactoryImpl.java |  31 ---
 .../core/uri/filter/V3FilterFactoryImpl.java    |  33 ---
 .../core/uri/filter/V4FilterArgFactoryImpl.java | 107 ---------
 .../core/uri/filter/V4FilterFactoryImpl.java    |  46 ----
 .../core/uri/v3/FilterArgFactoryImpl.java       |  33 +++
 .../client/core/uri/v3/FilterFactoryImpl.java   |  34 +++
 .../client/core/uri/v3/URIBuilderImpl.java      |  96 ++++++++
 .../core/uri/v4/FilterArgFactoryImpl.java       | 110 +++++++++
 .../client/core/uri/v4/FilterFactoryImpl.java   |  49 ++++
 .../client/core/uri/v4/URIBuilderImpl.java      | 102 +++++++++
 .../client/core/v3/ConfigurationImpl.java       |  58 +++++
 .../olingo/client/core/v3/ODataClientImpl.java  | 150 +++++++++++++
 .../client/core/v4/ConfigurationImpl.java       |  32 +++
 .../olingo/client/core/v4/ODataClientImpl.java  | 149 ++++++++++++
 .../apache/olingo/client/core/AbstractTest.java |  10 +-
 .../olingo/client/core/ODataClientTest.java     |   4 +-
 .../core/it/AbstractMetadataTestITCase.java     |   4 +-
 .../client/core/it/AbstractTestITCase.java      |  11 +-
 .../client/core/it/v3/AbstractTestITCase.java   |  52 +++++
 .../client/core/it/v3/AbstractV3TestITCase.java |  53 -----
 .../core/it/v3/ActionOverloadingTestITCase.java |   2 +-
 .../client/core/it/v3/AsyncTestITCase.java      |   8 +-
 .../client/core/it/v3/BatchTestITCase.java      |   2 +-
 .../client/core/it/v3/CountTestITCase.java      |   8 +-
 .../core/it/v3/EntityCreateTestITCase.java      |  12 +-
 .../core/it/v3/EntityRetrieveTestITCase.java    |  16 +-
 .../client/core/it/v3/EntitySetTestITCase.java  |  10 +-
 .../core/it/v3/EntityUpdateTestITCase.java      |   2 +-
 .../client/core/it/v3/ErrorTestITCase.java      |  16 +-
 .../core/it/v3/FilterFactoryTestITCase.java     |  16 +-
 .../client/core/it/v3/FilterTestITCase.java     |   6 +-
 .../client/core/it/v3/InvokeTestITCase.java     |   2 +-
 .../core/it/v3/KeyAsSegmentTestITCase.java      |   6 +-
 .../client/core/it/v3/LinkTestITCase.java       |  16 +-
 .../core/it/v3/MediaEntityTestITCase.java       |  16 +-
 .../client/core/it/v3/MetadataTestITCase.java   |   4 +-
 .../it/v3/NavigationLinkCreateTestITCase.java   |  12 +-
 .../client/core/it/v3/OpenTypeTestITCase.java   |   6 +-
 .../core/it/v3/PrimitiveKeysTestITCase.java     |   2 +-
 .../core/it/v3/PropertyRetrieveTestITCase.java  |  12 +-
 .../client/core/it/v3/PropertyTestITCase.java   |  16 +-
 .../core/it/v3/PropertyValueTestITCase.java     |  24 +-
 .../core/it/v3/QueryOptionsTestITCase.java      |  18 +-
 .../v3/ServiceDocumentRetrieveTestITCase.java   |   2 +-
 .../core/it/v3/ServiceDocumentTestITCase.java   |   2 +-
 .../client/core/it/v4/AbstractTestITCase.java   |  52 +++++
 .../client/core/it/v4/AbstractV4TestITCase.java |  53 -----
 .../client/core/it/v4/MetadataTestITCase.java   |   4 +-
 .../apache/olingo/client/core/v3/AtomTest.java  |   4 +-
 .../olingo/client/core/v3/EntitySetTest.java    |   4 +-
 .../olingo/client/core/v3/EntityTest.java       |   4 +-
 .../apache/olingo/client/core/v3/ErrorTest.java |   4 +-
 .../client/core/v3/FilterFactoryTest.java       |  14 +-
 .../olingo/client/core/v3/MetadataTest.java     |   4 +-
 .../client/core/v3/PrimitiveValueTest.java      |   4 +-
 .../client/core/v3/ServiceDocumentTest.java     |   4 +-
 .../olingo/client/core/v3/URIBuilderTest.java   |  18 +-
 .../client/core/v4/FilterFactoryTest.java       |  14 +-
 .../olingo/client/core/v4/MetadataTest.java     |   4 +-
 .../client/core/v4/PrimitiveValueTest.java      |   4 +-
 .../client/core/v4/ServiceDocumentTest.java     |   4 +-
 .../olingo/client/core/v4/URIBuilderTest.java   |  22 +-
 294 files changed, 5983 insertions(+), 5783 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonConfiguration.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonConfiguration.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonConfiguration.java
new file mode 100644
index 0000000..48f2614
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonConfiguration.java
@@ -0,0 +1,184 @@
+/*
+ * 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.api;
+
+import org.apache.olingo.client.api.format.ODataFormat;
+import org.apache.olingo.client.api.format.ODataMediaFormat;
+import org.apache.olingo.client.api.format.ODataPubFormat;
+import org.apache.olingo.client.api.format.ODataValueFormat;
+import org.apache.olingo.client.api.http.HttpClientFactory;
+import org.apache.olingo.client.api.http.HttpUriRequestFactory;
+
+import java.io.Serializable;
+import java.util.concurrent.ExecutorService;
+
+/**
+ * Configuration wrapper.
+ */
+public interface CommonConfiguration extends Serializable {
+
+  /**
+   * Gets the configured OData format for AtomPub exchanges. If this configuration parameter doesn't exist the
+   * JSON_FULL_METADATA format will be used as default.
+   *
+   * @return configured OData format for AtomPub if specified; JSON_FULL_METADATA format otherwise.
+   * @see ODataPubFormat#JSON_FULL_METADATA
+   */
+  ODataPubFormat getDefaultPubFormat();
+
+  /**
+   * Sets the default OData format for AtomPub exchanges.
+   *
+   * @param format default format.
+   */
+  void setDefaultPubFormat(ODataPubFormat format);
+
+  /**
+   * Gets the configured OData format. This value depends on what is returned from <tt>getDefaultPubFormat()</tt>.
+   *
+   * @return configured OData format
+   * @see #getDefaultPubFormat()
+   */
+  ODataFormat getDefaultFormat();
+
+  /**
+   * Gets the configured OData value format. If this configuration parameter doesn't exist the TEXT format will be used
+   * as default.
+   *
+   * @return configured OData value format if specified; TEXT format otherwise.
+   * @see ODataValueFormat#TEXT
+   */
+  ODataValueFormat getDefaultValueFormat();
+
+  /**
+   * Sets the default OData value format.
+   *
+   * @param format default format.
+   */
+  void setDefaultValueFormat(ODataValueFormat format);
+
+  /**
+   * Gets the configured OData media format. If this configuration parameter doesn't exist the APPLICATION_OCTET_STREAM
+   * format will be used as default.
+   *
+   * @return configured OData media format if specified; APPLICATION_OCTET_STREAM format otherwise.
+   * @see ODataMediaFormat#WILDCARD
+   */
+  ODataMediaFormat getDefaultMediaFormat();
+
+  /**
+   * Sets the default OData media format.
+   *
+   * @param format default format.
+   */
+  void setDefaultMediaFormat(ODataMediaFormat format);
+
+  /**
+   * Gets the HttpClient factory to be used for executing requests.
+   *
+   * @return provided implementation (if configured via <tt>setHttpClientFactory</tt> or default.
+   * @see DefaultHttpClientFactory
+   */
+  HttpClientFactory getHttpClientFactory();
+
+  /**
+   * Sets the HttpClient factory to be used for executing requests.
+   *
+   * @param factory implementation of <tt>HttpClientFactory</tt>.
+   * @see HttpClientFactory
+   */
+  void setHttpClientFactory(HttpClientFactory factory);
+
+  /**
+   * Gets the HttpUriRequest factory for generating requests to be executed.
+   *
+   * @return provided implementation (if configured via <tt>setHttpUriRequestFactory</tt> or default.
+   * @see DefaultHttpUriRequestFactory
+   */
+  HttpUriRequestFactory getHttpUriRequestFactory();
+
+  /**
+   * Sets the HttpUriRequest factory generating requests to be executed.
+   *
+   * @param factory implementation of <tt>HttpUriRequestFactory</tt>.
+   * @see HttpUriRequestFactory
+   */
+  void setHttpUriRequestFactory(HttpUriRequestFactory factory);
+
+  /**
+   * Gets whether <tt>PUT</tt>, <tt>MERGE</tt>, <tt>PATCH</tt>, <tt>DELETE</tt> HTTP methods need to be translated to
+   * <tt>POST</tt> with additional <tt>X-HTTTP-Method</tt> header.
+   *
+   * @return whether <tt>X-HTTTP-Method</tt> header is to be used
+   */
+  boolean isUseXHTTPMethod();
+
+  /**
+   * Sets whether <tt>PUT</tt>, <tt>MERGE</tt>, <tt>PATCH</tt>, <tt>DELETE</tt> HTTP methods need to be translated to
+   * <tt>POST</tt> with additional <tt>X-HTTTP-Method</tt> header.
+   *
+   * @param value 'TRUE' to use tunneling.
+   */
+  void setUseXHTTPMethod(boolean value);
+
+  /**
+   * Checks whether Gzip compression (e.g. support for <tt>Accept-Encoding: gzip</tt> and
+   * <tt>Content-Encoding: gzip</tt> HTTP headers) is enabled.
+   *
+   * @return whether HTTP Gzip compression is enabled
+   */
+  boolean isGzipCompression();
+
+  /**
+   * Sets Gzip compression (e.g. support for <tt>Accept-Encoding: gzip</tt> and
+   * <tt>Content-Encoding: gzip</tt> HTTP headers) enabled or disabled.
+   *
+   * @param value whether to use Gzip compression.
+   */
+  void setGzipCompression(boolean value);
+
+  /**
+   * Checks whether chunk HTTP encoding is being used.
+   *
+   * @return whether chunk HTTP encoding is being used
+   */
+  boolean isUseChuncked();
+
+  /**
+   * Sets chunk HTTP encoding enabled or disabled.
+   *
+   * @param value whether to use chunk HTTP encoding.
+   */
+  void setUseChuncked(boolean value);
+
+  /**
+   * Retrieves request executor service.
+   *
+   * @return request executor service.
+   */
+  ExecutorService getExecutor();
+
+  /**
+   * Sets request executor service.
+   *
+   * @param executorService new executor services.
+   */
+  void setExecutor(ExecutorService executorService);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
new file mode 100644
index 0000000..d0aef17
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/CommonODataClient.java
@@ -0,0 +1,76 @@
+/*
+ * 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.api;
+
+import org.apache.olingo.client.api.communication.header.ODataHeaders;
+import org.apache.olingo.client.api.communication.request.batch.CommonBatchRequestFactory;
+import org.apache.olingo.client.api.communication.request.cud.CommonCUDRequestFactory;
+import org.apache.olingo.client.api.communication.request.invoke.CommonInvokeRequestFactory;
+import org.apache.olingo.client.api.communication.request.retrieve.CommonRetrieveRequestFactory;
+import org.apache.olingo.client.api.communication.request.streamed.CommonStreamedRequestFactory;
+import org.apache.olingo.client.api.domain.ODataGeospatialValue;
+import org.apache.olingo.client.api.domain.ODataObjectFactory;
+import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
+import org.apache.olingo.client.api.op.CommonODataBinder;
+import org.apache.olingo.client.api.op.CommonODataDeserializer;
+import org.apache.olingo.client.api.op.CommonODataReader;
+import org.apache.olingo.client.api.op.ODataSerializer;
+import org.apache.olingo.client.api.op.ODataWriter;
+import org.apache.olingo.client.api.uri.CommonURIBuilder;
+import org.apache.olingo.client.api.uri.CommonFilterFactory;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+public interface CommonODataClient {
+
+  ODataServiceVersion getServiceVersion();
+
+  ODataHeaders getVersionHeaders();
+
+  CommonConfiguration getConfiguration();
+
+  CommonURIBuilder<?> getURIBuilder(String serviceRoot);
+
+  CommonFilterFactory getFilterFactory();
+
+  ODataPrimitiveValue.Builder getPrimitiveValueBuilder();
+
+  ODataGeospatialValue.Builder getGeospatialValueBuilder();
+
+  ODataSerializer getSerializer();
+
+  CommonODataDeserializer getDeserializer();
+
+  CommonODataReader getReader();
+
+  ODataWriter getWriter();
+
+  CommonODataBinder getBinder();
+
+  ODataObjectFactory getObjectFactory();
+
+  CommonRetrieveRequestFactory getRetrieveRequestFactory();
+
+  CommonCUDRequestFactory getCUDRequestFactory();
+
+  CommonStreamedRequestFactory getStreamedRequestFactory();
+
+  CommonInvokeRequestFactory<?> getInvokeRequestFactory();
+
+  CommonBatchRequestFactory getBatchRequestFactory();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/Configuration.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/Configuration.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/Configuration.java
deleted file mode 100644
index 20d1fa6..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/Configuration.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.api;
-
-import org.apache.olingo.client.api.format.ODataFormat;
-import org.apache.olingo.client.api.format.ODataMediaFormat;
-import org.apache.olingo.client.api.format.ODataPubFormat;
-import org.apache.olingo.client.api.format.ODataValueFormat;
-import org.apache.olingo.client.api.http.HttpClientFactory;
-import org.apache.olingo.client.api.http.HttpUriRequestFactory;
-
-import java.io.Serializable;
-import java.util.concurrent.ExecutorService;
-
-/**
- * Configuration wrapper.
- */
-public interface Configuration extends Serializable {
-
-  /**
-   * Gets the configured OData format for AtomPub exchanges. If this configuration parameter doesn't exist the
-   * JSON_FULL_METADATA format will be used as default.
-   *
-   * @return configured OData format for AtomPub if specified; JSON_FULL_METADATA format otherwise.
-   * @see ODataPubFormat#JSON_FULL_METADATA
-   */
-  ODataPubFormat getDefaultPubFormat();
-
-  /**
-   * Sets the default OData format for AtomPub exchanges.
-   *
-   * @param format default format.
-   */
-  void setDefaultPubFormat(ODataPubFormat format);
-
-  /**
-   * Gets the configured OData format. This value depends on what is returned from <tt>getDefaultPubFormat()</tt>.
-   *
-   * @return configured OData format
-   * @see #getDefaultPubFormat()
-   */
-  ODataFormat getDefaultFormat();
-
-  /**
-   * Gets the configured OData value format. If this configuration parameter doesn't exist the TEXT format will be used
-   * as default.
-   *
-   * @return configured OData value format if specified; TEXT format otherwise.
-   * @see ODataValueFormat#TEXT
-   */
-  ODataValueFormat getDefaultValueFormat();
-
-  /**
-   * Sets the default OData value format.
-   *
-   * @param format default format.
-   */
-  void setDefaultValueFormat(ODataValueFormat format);
-
-  /**
-   * Gets the configured OData media format. If this configuration parameter doesn't exist the APPLICATION_OCTET_STREAM
-   * format will be used as default.
-   *
-   * @return configured OData media format if specified; APPLICATION_OCTET_STREAM format otherwise.
-   * @see ODataMediaFormat#WILDCARD
-   */
-  ODataMediaFormat getDefaultMediaFormat();
-
-  /**
-   * Sets the default OData media format.
-   *
-   * @param format default format.
-   */
-  void setDefaultMediaFormat(ODataMediaFormat format);
-
-  /**
-   * Gets the HttpClient factory to be used for executing requests.
-   *
-   * @return provided implementation (if configured via <tt>setHttpClientFactory</tt> or default.
-   * @see DefaultHttpClientFactory
-   */
-  HttpClientFactory getHttpClientFactory();
-
-  /**
-   * Sets the HttpClient factory to be used for executing requests.
-   *
-   * @param factory implementation of <tt>HttpClientFactory</tt>.
-   * @see HttpClientFactory
-   */
-  void setHttpClientFactory(HttpClientFactory factory);
-
-  /**
-   * Gets the HttpUriRequest factory for generating requests to be executed.
-   *
-   * @return provided implementation (if configured via <tt>setHttpUriRequestFactory</tt> or default.
-   * @see DefaultHttpUriRequestFactory
-   */
-  HttpUriRequestFactory getHttpUriRequestFactory();
-
-  /**
-   * Sets the HttpUriRequest factory generating requests to be executed.
-   *
-   * @param factory implementation of <tt>HttpUriRequestFactory</tt>.
-   * @see HttpUriRequestFactory
-   */
-  void setHttpUriRequestFactory(HttpUriRequestFactory factory);
-
-  /**
-   * Gets whether <tt>PUT</tt>, <tt>MERGE</tt>, <tt>PATCH</tt>, <tt>DELETE</tt> HTTP methods need to be translated to
-   * <tt>POST</tt> with additional <tt>X-HTTTP-Method</tt> header.
-   *
-   * @return whether <tt>X-HTTTP-Method</tt> header is to be used
-   */
-  boolean isUseXHTTPMethod();
-
-  /**
-   * Sets whether <tt>PUT</tt>, <tt>MERGE</tt>, <tt>PATCH</tt>, <tt>DELETE</tt> HTTP methods need to be translated to
-   * <tt>POST</tt> with additional <tt>X-HTTTP-Method</tt> header.
-   *
-   * @param value 'TRUE' to use tunneling.
-   */
-  void setUseXHTTPMethod(boolean value);
-
-  /**
-   * Checks whether Gzip compression (e.g. support for <tt>Accept-Encoding: gzip</tt> and
-   * <tt>Content-Encoding: gzip</tt> HTTP headers) is enabled.
-   *
-   * @return whether HTTP Gzip compression is enabled
-   */
-  boolean isGzipCompression();
-
-  /**
-   * Sets Gzip compression (e.g. support for <tt>Accept-Encoding: gzip</tt> and
-   * <tt>Content-Encoding: gzip</tt> HTTP headers) enabled or disabled.
-   *
-   * @param value whether to use Gzip compression.
-   */
-  void setGzipCompression(boolean value);
-
-  /**
-   * Checks whether chunk HTTP encoding is being used.
-   *
-   * @return whether chunk HTTP encoding is being used
-   */
-  boolean isUseChuncked();
-
-  /**
-   * Sets chunk HTTP encoding enabled or disabled.
-   *
-   * @param value whether to use chunk HTTP encoding.
-   */
-  void setUseChuncked(boolean value);
-
-  /**
-   * Retrieves request executor service.
-   *
-   * @return request executor service.
-   */
-  ExecutorService getExecutor();
-
-  /**
-   * Sets request executor service.
-   *
-   * @param executorService new executor services.
-   */
-  void setExecutor(ExecutorService executorService);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
----------------------------------------------------------------------
diff --git 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
deleted file mode 100644
index 459ee10..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataClient.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.api;
-
-import org.apache.olingo.client.api.communication.header.ODataHeaders;
-import org.apache.olingo.client.api.communication.request.batch.BatchRequestFactory;
-import org.apache.olingo.client.api.communication.request.cud.CUDRequestFactory;
-import org.apache.olingo.client.api.communication.request.invoke.InvokeRequestFactory;
-import org.apache.olingo.client.api.communication.request.retrieve.RetrieveRequestFactory;
-import org.apache.olingo.client.api.communication.request.streamed.StreamedRequestFactory;
-import org.apache.olingo.client.api.domain.ODataGeospatialValue;
-import org.apache.olingo.client.api.domain.ODataObjectFactory;
-import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
-import org.apache.olingo.client.api.op.ODataBinder;
-import org.apache.olingo.client.api.op.ODataDeserializer;
-import org.apache.olingo.client.api.op.ODataReader;
-import org.apache.olingo.client.api.op.ODataSerializer;
-import org.apache.olingo.client.api.op.ODataWriter;
-import org.apache.olingo.client.api.uri.URIBuilder;
-import org.apache.olingo.client.api.uri.filter.FilterFactory;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-
-public interface ODataClient {
-
-  ODataServiceVersion getServiceVersion();
-
-  ODataHeaders getVersionHeaders();
-
-  Configuration getConfiguration();
-
-  URIBuilder<?> getURIBuilder(String serviceRoot);
-
-  FilterFactory getFilterFactory();
-
-  ODataPrimitiveValue.Builder getPrimitiveValueBuilder();
-
-  ODataGeospatialValue.Builder getGeospatialValueBuilder();
-
-  ODataSerializer getSerializer();
-
-  ODataDeserializer getDeserializer();
-
-  ODataReader getReader();
-
-  ODataWriter getWriter();
-
-  ODataBinder getBinder();
-
-  ODataObjectFactory getObjectFactory();
-
-  RetrieveRequestFactory getRetrieveRequestFactory();
-
-  CUDRequestFactory getCUDRequestFactory();
-
-  StreamedRequestFactory getStreamedRequestFactory();
-
-  InvokeRequestFactory<?> getInvokeRequestFactory();
-
-  BatchRequestFactory getBatchRequestFactory();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV3Client.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV3Client.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV3Client.java
deleted file mode 100644
index b63617d..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV3Client.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.api;
-
-import org.apache.olingo.client.api.communication.request.batch.V3BatchRequestFactory;
-import org.apache.olingo.client.api.communication.request.cud.V3CUDRequestFactory;
-import org.apache.olingo.client.api.communication.request.invoke.V3InvokeRequestFactory;
-import org.apache.olingo.client.api.communication.request.retrieve.V3RetrieveRequestFactory;
-import org.apache.olingo.client.api.communication.request.streamed.V3StreamedRequestFactory;
-import org.apache.olingo.client.api.op.ODataV3Deserializer;
-import org.apache.olingo.client.api.uri.V3URIBuilder;
-import org.apache.olingo.client.api.uri.filter.V3FilterFactory;
-
-public interface ODataV3Client extends ODataClient {
-
-  @Override
-  V3Configuration getConfiguration();
-
-  @Override
-  V3URIBuilder getURIBuilder(String serviceRoot);
-
-  @Override
-  V3FilterFactory getFilterFactory();
-
-  @Override
-  ODataV3Deserializer getDeserializer();
-
-  @Override
-  V3RetrieveRequestFactory getRetrieveRequestFactory();
-
-  @Override
-  V3CUDRequestFactory getCUDRequestFactory();
-
-  @Override
-  V3StreamedRequestFactory getStreamedRequestFactory();
-
-  @Override
-  V3InvokeRequestFactory getInvokeRequestFactory();
-
-  @Override
-  V3BatchRequestFactory getBatchRequestFactory();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV4Client.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV4Client.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV4Client.java
deleted file mode 100644
index fac0f00..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/ODataV4Client.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.api;
-
-import org.apache.olingo.client.api.communication.request.batch.V4BatchRequestFactory;
-import org.apache.olingo.client.api.communication.request.cud.V4CUDRequestFactory;
-import org.apache.olingo.client.api.communication.request.invoke.V4InvokeRequestFactory;
-import org.apache.olingo.client.api.communication.request.retrieve.V4RetrieveRequestFactory;
-import org.apache.olingo.client.api.communication.request.streamed.V4StreamedRequestFactory;
-import org.apache.olingo.client.api.op.ODataV4Deserializer;
-import org.apache.olingo.client.api.uri.V4URIBuilder;
-import org.apache.olingo.client.api.uri.filter.V4FilterFactory;
-
-public interface ODataV4Client extends ODataClient {
-
-  @Override
-  V4Configuration getConfiguration();
-
-  @Override
-  V4URIBuilder getURIBuilder(String serviceRoot);
-
-  @Override
-  V4FilterFactory getFilterFactory();
-
-  @Override
-  ODataV4Deserializer getDeserializer();
-
-  @Override
-  V4RetrieveRequestFactory getRetrieveRequestFactory();
-
-  @Override
-  V4CUDRequestFactory getCUDRequestFactory();
-
-  @Override
-  V4StreamedRequestFactory getStreamedRequestFactory();
-
-  @Override
-  V4InvokeRequestFactory getInvokeRequestFactory();
-
-  @Override
-  V4BatchRequestFactory getBatchRequestFactory();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/UnsupportedInV3Exception.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/UnsupportedInV3Exception.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/UnsupportedInV3Exception.java
deleted file mode 100644
index 8c29c2d..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/UnsupportedInV3Exception.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.api;
-
-import org.apache.olingo.commons.api.edm.EdmException;
-
-public class UnsupportedInV3Exception extends EdmException {
-
-  private static final long serialVersionUID = 4773734640262424651L;
-
-  public UnsupportedInV3Exception() {
-    super("Not supported in OData 3.0");
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/V3Configuration.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/V3Configuration.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/V3Configuration.java
deleted file mode 100644
index b7f1065..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/V3Configuration.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.api;
-
-public interface V3Configuration extends Configuration {
-
-  /**
-   * Checks whether URIs contain entity key between parentheses (standard) or instead as additional segment.
-   * <br/>
-   * Example: http://services.odata.org/V4/OData/OData.svc/Products(0) or
-   * http://services.odata.org/V4/OData/OData.svc/Products/0
-   *
-   * @return whether URIs shall be built with entity key between parentheses (standard) or instead as additional
-   * segment.
-   */
-  boolean isKeyAsSegment();
-
-  /**
-   * Sets whether URIs shall be built with entity key between parentheses (standard) or instead as additional segment.
-   * <br/>
-   * Example: http://services.odata.org/V4/OData/OData.svc/Products(0) or
-   * http://services.odata.org/V4/OData/OData.svc/Products/0
-   *
-   * @param value 'TRUE' to use this feature.
-   */
-  void setKeyAsSegment(boolean value);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/V4Configuration.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/V4Configuration.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/V4Configuration.java
deleted file mode 100644
index ef6d4ab..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/V4Configuration.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.api;
-
-public interface V4Configuration extends Configuration {
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/BatchRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/BatchRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/BatchRequestFactory.java
deleted file mode 100644
index 065f3c8..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/BatchRequestFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.api.communication.request.batch;
-
-import java.io.Serializable;
-
-/**
- * OData batch request factory class.
- */
-public interface BatchRequestFactory extends Serializable {
-
-  /**
-   * Gets a batch request object instance.
-   *
-   * @param serviceRoot service root.
-   * @return new ODataBatchRequest instance.
-   */
-  ODataBatchRequest getBatchRequest(String serviceRoot);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/CommonBatchRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/CommonBatchRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/CommonBatchRequestFactory.java
new file mode 100644
index 0000000..4519264
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/CommonBatchRequestFactory.java
@@ -0,0 +1,35 @@
+/*
+ * 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.api.communication.request.batch;
+
+import java.io.Serializable;
+
+/**
+ * OData batch request factory class.
+ */
+public interface CommonBatchRequestFactory extends Serializable {
+
+  /**
+   * Gets a batch request object instance.
+   *
+   * @param serviceRoot service root.
+   * @return new ODataBatchRequest instance.
+   */
+  ODataBatchRequest getBatchRequest(String serviceRoot);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V3BatchRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V3BatchRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V3BatchRequestFactory.java
deleted file mode 100644
index a55e4fa..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V3BatchRequestFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.api.communication.request.batch;
-
-public interface V3BatchRequestFactory extends BatchRequestFactory {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V4BatchRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V4BatchRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V4BatchRequestFactory.java
deleted file mode 100644
index 8ec13cf..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/V4BatchRequestFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.api.communication.request.batch;
-
-public interface V4BatchRequestFactory extends BatchRequestFactory {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v3/BatchRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v3/BatchRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v3/BatchRequestFactory.java
new file mode 100644
index 0000000..f5b5dd5
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v3/BatchRequestFactory.java
@@ -0,0 +1,24 @@
+/*
+ * 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.api.communication.request.batch.v3;
+
+import org.apache.olingo.client.api.communication.request.batch.CommonBatchRequestFactory;
+
+public interface BatchRequestFactory extends CommonBatchRequestFactory {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v4/BatchRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v4/BatchRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v4/BatchRequestFactory.java
new file mode 100644
index 0000000..1ba0b06
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/batch/v4/BatchRequestFactory.java
@@ -0,0 +1,24 @@
+/*
+ * 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.api.communication.request.batch.v4;
+
+import org.apache.olingo.client.api.communication.request.batch.CommonBatchRequestFactory;
+
+public interface BatchRequestFactory extends CommonBatchRequestFactory {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CUDRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CUDRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CUDRequestFactory.java
deleted file mode 100644
index c7d6bc6..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CUDRequestFactory.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * 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.api.communication.request.cud;
-
-import java.io.Serializable;
-import java.net.URI;
-import org.apache.olingo.client.api.communication.request.UpdateType;
-import org.apache.olingo.client.api.domain.ODataEntity;
-import org.apache.olingo.client.api.domain.ODataLink;
-import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
-import org.apache.olingo.client.api.domain.ODataProperty;
-
-/**
- * OData request factory class.
- */
-public interface CUDRequestFactory extends Serializable {
-
-  /**
-   * Gets a create request object instance.
-   * <br/>
-   * Use this kind of request to create a new entity.
-   *
-   * @param targetURI entity set URI.
-   * @param entity entity to be created.
-   * @return new ODataEntityCreateRequest instance.
-   */
-  ODataEntityCreateRequest getEntityCreateRequest(URI targetURI, ODataEntity entity);
-
-  /**
-   * Gets an update request object instance.
-   *
-   * @param targetURI edit link of the object to be updated.
-   * @param type type of update to be performed.
-   * @param changes changes to be applied.
-   * @return new ODataEntityUpdateRequest instance.
-   */
-  ODataEntityUpdateRequest getEntityUpdateRequest(URI targetURI, UpdateType type, ODataEntity changes);
-
-  /**
-   * Gets an update request object instance; uses entity's edit link as endpoint.
-   *
-   * @param type type of update to be performed.
-   * @param entity changes to be applied.
-   * @return new ODataEntityUpdateRequest instance.
-   */
-  ODataEntityUpdateRequest getEntityUpdateRequest(UpdateType type, ODataEntity entity);
-
-  /**
-   * Gets a create request object instance.
-   * <br/>
-   * Use this kind of request to create a new value (e.g. http://Northwind.svc/Customer(1)/Picture/$value).
-   *
-   * @param targetURI entity set or entity or entity property URI.
-   * @param type type of update to be performed.
-   * @param value value to be created.
-   * @return new ODataValueUpdateRequest instance.
-   */
-  ODataValueUpdateRequest getValueUpdateRequest(URI targetURI, UpdateType type, ODataPrimitiveValue value);
-
-  /**
-   * Gets an update request object instance.
-   * <br/>
-   * Use this kind of request to update a primitive property value.
-   *
-   * @param targetURI entity set or entity or entity property URI.
-   * @param property value to be update.
-   * @return new ODataPropertyUpdateRequest instance.
-   */
-  ODataPropertyUpdateRequest getPropertyPrimitiveValueUpdateRequest(URI targetURI, ODataProperty property);
-
-  /**
-   * Gets an update request object instance.
-   * <br/>
-   * Use this kind of request to update a complex property value.
-   *
-   * @param targetURI entity set or entity or entity property URI.
-   * @param type type of update to be performed.
-   * @param property value to be update.
-   * @return new ODataPropertyUpdateRequest instance.
-   */
-  ODataPropertyUpdateRequest getPropertyComplexValueUpdateRequest(
-          URI targetURI, UpdateType type, ODataProperty property);
-
-  /**
-   * Gets an update request object instance.
-   * <br/>
-   * Use this kind of request to update a collection property value.
-   *
-   * @param targetURI entity set or entity or entity property URI.
-   * @param property value to be update.
-   * @return new ODataPropertyUpdateRequest instance.
-   */
-  ODataPropertyUpdateRequest getPropertyCollectionValueUpdateRequest(URI targetURI, ODataProperty property);
-
-  /**
-   * Gets an add link request object instance.
-   * <br/>
-   * Use this kind of request to create a navigation link between existing entities.
-   *
-   * @param targetURI navigation property's link collection.
-   * @param link navigation link to be added.
-   * @return new ODataLinkCreateRequest instance.
-   */
-  ODataLinkCreateRequest getLinkCreateRequest(URI targetURI, ODataLink link);
-
-  /**
-   * Gets a link update request object instance.
-   * <br/>
-   * Use this kind of request to update a navigation link between existing entities.
-   * <br/>
-   * In case of the old navigation link doesn't exist the new one will be added as well.
-   *
-   * @param targetURI navigation property's link collection.
-   * @param type type of update to be performed.
-   * @param link URL that identifies the entity to be linked.
-   * @return new ODataLinkUpdateRequest instance.
-   */
-  ODataLinkUpdateRequest getLinkUpdateRequest(URI targetURI, UpdateType type, ODataLink link);
-
-  /**
-   * Gets a delete request object instance.
-   * <br/>
-   * Use this kind of request to delete an entity and media entity as well.
-   *
-   * @param targetURI edit link of the object to be removed.
-   * @return new ODataDeleteRequest instance.
-   */
-  ODataDeleteRequest getDeleteRequest(URI targetURI);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CommonCUDRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CommonCUDRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CommonCUDRequestFactory.java
new file mode 100644
index 0000000..c0f5b2e
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/CommonCUDRequestFactory.java
@@ -0,0 +1,145 @@
+/*
+ * 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.api.communication.request.cud;
+
+import java.io.Serializable;
+import java.net.URI;
+import org.apache.olingo.client.api.communication.request.UpdateType;
+import org.apache.olingo.client.api.domain.ODataEntity;
+import org.apache.olingo.client.api.domain.ODataLink;
+import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
+import org.apache.olingo.client.api.domain.ODataProperty;
+
+/**
+ * OData request factory class.
+ */
+public interface CommonCUDRequestFactory extends Serializable {
+
+  /**
+   * Gets a create request object instance.
+   * <br/>
+   * Use this kind of request to create a new entity.
+   *
+   * @param targetURI entity set URI.
+   * @param entity entity to be created.
+   * @return new ODataEntityCreateRequest instance.
+   */
+  ODataEntityCreateRequest getEntityCreateRequest(URI targetURI, ODataEntity entity);
+
+  /**
+   * Gets an update request object instance.
+   *
+   * @param targetURI edit link of the object to be updated.
+   * @param type type of update to be performed.
+   * @param changes changes to be applied.
+   * @return new ODataEntityUpdateRequest instance.
+   */
+  ODataEntityUpdateRequest getEntityUpdateRequest(URI targetURI, UpdateType type, ODataEntity changes);
+
+  /**
+   * Gets an update request object instance; uses entity's edit link as endpoint.
+   *
+   * @param type type of update to be performed.
+   * @param entity changes to be applied.
+   * @return new ODataEntityUpdateRequest instance.
+   */
+  ODataEntityUpdateRequest getEntityUpdateRequest(UpdateType type, ODataEntity entity);
+
+  /**
+   * Gets a create request object instance.
+   * <br/>
+   * Use this kind of request to create a new value (e.g. http://Northwind.svc/Customer(1)/Picture/$value).
+   *
+   * @param targetURI entity set or entity or entity property URI.
+   * @param type type of update to be performed.
+   * @param value value to be created.
+   * @return new ODataValueUpdateRequest instance.
+   */
+  ODataValueUpdateRequest getValueUpdateRequest(URI targetURI, UpdateType type, ODataPrimitiveValue value);
+
+  /**
+   * Gets an update request object instance.
+   * <br/>
+   * Use this kind of request to update a primitive property value.
+   *
+   * @param targetURI entity set or entity or entity property URI.
+   * @param property value to be update.
+   * @return new ODataPropertyUpdateRequest instance.
+   */
+  ODataPropertyUpdateRequest getPropertyPrimitiveValueUpdateRequest(URI targetURI, ODataProperty property);
+
+  /**
+   * Gets an update request object instance.
+   * <br/>
+   * Use this kind of request to update a complex property value.
+   *
+   * @param targetURI entity set or entity or entity property URI.
+   * @param type type of update to be performed.
+   * @param property value to be update.
+   * @return new ODataPropertyUpdateRequest instance.
+   */
+  ODataPropertyUpdateRequest getPropertyComplexValueUpdateRequest(
+          URI targetURI, UpdateType type, ODataProperty property);
+
+  /**
+   * Gets an update request object instance.
+   * <br/>
+   * Use this kind of request to update a collection property value.
+   *
+   * @param targetURI entity set or entity or entity property URI.
+   * @param property value to be update.
+   * @return new ODataPropertyUpdateRequest instance.
+   */
+  ODataPropertyUpdateRequest getPropertyCollectionValueUpdateRequest(URI targetURI, ODataProperty property);
+
+  /**
+   * Gets an add link request object instance.
+   * <br/>
+   * Use this kind of request to create a navigation link between existing entities.
+   *
+   * @param targetURI navigation property's link collection.
+   * @param link navigation link to be added.
+   * @return new ODataLinkCreateRequest instance.
+   */
+  ODataLinkCreateRequest getLinkCreateRequest(URI targetURI, ODataLink link);
+
+  /**
+   * Gets a link update request object instance.
+   * <br/>
+   * Use this kind of request to update a navigation link between existing entities.
+   * <br/>
+   * In case of the old navigation link doesn't exist the new one will be added as well.
+   *
+   * @param targetURI navigation property's link collection.
+   * @param type type of update to be performed.
+   * @param link URL that identifies the entity to be linked.
+   * @return new ODataLinkUpdateRequest instance.
+   */
+  ODataLinkUpdateRequest getLinkUpdateRequest(URI targetURI, UpdateType type, ODataLink link);
+
+  /**
+   * Gets a delete request object instance.
+   * <br/>
+   * Use this kind of request to delete an entity and media entity as well.
+   *
+   * @param targetURI edit link of the object to be removed.
+   * @return new ODataDeleteRequest instance.
+   */
+  ODataDeleteRequest getDeleteRequest(URI targetURI);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V3CUDRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V3CUDRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V3CUDRequestFactory.java
deleted file mode 100644
index 85e5dbf..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V3CUDRequestFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.api.communication.request.cud;
-
-public interface V3CUDRequestFactory extends CUDRequestFactory {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V4CUDRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V4CUDRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V4CUDRequestFactory.java
deleted file mode 100644
index 5896c59..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/V4CUDRequestFactory.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.api.communication.request.cud;
-
-public interface V4CUDRequestFactory extends CUDRequestFactory {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v3/CUDRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v3/CUDRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v3/CUDRequestFactory.java
new file mode 100644
index 0000000..4250728
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v3/CUDRequestFactory.java
@@ -0,0 +1,24 @@
+/*
+ * 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.api.communication.request.cud.v3;
+
+import org.apache.olingo.client.api.communication.request.cud.CommonCUDRequestFactory;
+
+public interface CUDRequestFactory extends CommonCUDRequestFactory {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v4/CUDRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v4/CUDRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v4/CUDRequestFactory.java
new file mode 100644
index 0000000..5d68983
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/cud/v4/CUDRequestFactory.java
@@ -0,0 +1,24 @@
+/*
+ * 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.api.communication.request.cud.v4;
+
+import org.apache.olingo.client.api.communication.request.cud.CommonCUDRequestFactory;
+
+public interface CUDRequestFactory extends CommonCUDRequestFactory {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
new file mode 100644
index 0000000..8449798
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
@@ -0,0 +1,58 @@
+/*
+ * 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.api.communication.request.invoke;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.Map;
+import org.apache.olingo.client.api.domain.ODataInvokeResult;
+import org.apache.olingo.client.api.domain.ODataValue;
+import org.apache.olingo.client.api.edm.xml.CommonFunctionImport;
+import org.apache.olingo.client.api.edm.xml.XMLMetadata;
+
+/**
+ * OData request factory class.
+ */
+public interface CommonInvokeRequestFactory<FI extends CommonFunctionImport> extends Serializable {
+
+  /**
+   * Gets an invoke request instance.
+   *
+   * @param <RES> OData domain object result, derived from return type defined in the function import
+   * @param uri URI that identifies the function import
+   * @param metadata Edm metadata
+   * @param functionImport function import to be invoked
+   * @return new ODataInvokeRequest instance.
+   */
+  <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
+          URI uri, XMLMetadata metadata, FI functionImport);
+
+  /**
+   * Gets an invoke request instance.
+   *
+   * @param <RES> OData domain object result, derived from return type defined in the function import
+   * @param uri URI that identifies the function import
+   * @param metadata Edm metadata
+   * @param functionImport function import to be invoked
+   * @param parameters parameters to pass to function import invocation
+   * @return new ODataInvokeRequest instance.
+   */
+  <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
+          URI uri, XMLMetadata metadata, FI functionImport, Map<String, ODataValue> parameters);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/InvokeRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/InvokeRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/InvokeRequestFactory.java
deleted file mode 100644
index f786602..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/InvokeRequestFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.api.communication.request.invoke;
-
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Map;
-import org.apache.olingo.client.api.domain.ODataInvokeResult;
-import org.apache.olingo.client.api.domain.ODataValue;
-import org.apache.olingo.client.api.edm.xml.CommonFunctionImport;
-import org.apache.olingo.client.api.edm.xml.XMLMetadata;
-
-/**
- * OData request factory class.
- */
-public interface InvokeRequestFactory<FI extends CommonFunctionImport> extends Serializable {
-
-  /**
-   * Gets an invoke request instance.
-   *
-   * @param <RES> OData domain object result, derived from return type defined in the function import
-   * @param uri URI that identifies the function import
-   * @param metadata Edm metadata
-   * @param functionImport function import to be invoked
-   * @return new ODataInvokeRequest instance.
-   */
-  <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
-          URI uri, XMLMetadata metadata, FI functionImport);
-
-  /**
-   * Gets an invoke request instance.
-   *
-   * @param <RES> OData domain object result, derived from return type defined in the function import
-   * @param uri URI that identifies the function import
-   * @param metadata Edm metadata
-   * @param functionImport function import to be invoked
-   * @param parameters parameters to pass to function import invocation
-   * @return new ODataInvokeRequest instance.
-   */
-  <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
-          URI uri, XMLMetadata metadata, FI functionImport, Map<String, ODataValue> parameters);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V3InvokeRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V3InvokeRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V3InvokeRequestFactory.java
deleted file mode 100644
index cfa8aca..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V3InvokeRequestFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.api.communication.request.invoke;
-
-import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
-
-public interface V3InvokeRequestFactory extends InvokeRequestFactory<FunctionImport> {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bab03624/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V4InvokeRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V4InvokeRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V4InvokeRequestFactory.java
deleted file mode 100644
index 3740a1e..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/V4InvokeRequestFactory.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.api.communication.request.invoke;
-
-import org.apache.olingo.client.api.edm.xml.v4.FunctionImport;
-
-public interface V4InvokeRequestFactory extends InvokeRequestFactory<FunctionImport> {
-}