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/07 10:08:58 UTC

[09/57] [abbrv] git commit: [OLINGO-169] First huge import from ODataJClient: for the moment, it just build (no tests yet) and dummy Edm interfaces are used instead of the ones from commons-api

[OLINGO-169] First huge import from ODataJClient: for the moment, it just build (no tests yet) and dummy Edm interfaces are used instead of the ones from commons-api


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/4f927e76
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/4f927e76
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/4f927e76

Branch: refs/heads/master
Commit: 4f927e7640812df94c460b624c0eeaff25c9cd9b
Parents: f094e10
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Feb 21 17:25:07 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Feb 21 17:25:07 2014 +0100

----------------------------------------------------------------------
 .../odatajclient/engine/v4/metadata.xml         | 212 +++++++-
 odata4-lib/odata4-client-api/pom.xml            |   5 +
 .../olingo/odata4/client/api/Configuration.java | 201 ++++++++
 .../olingo/odata4/client/api/Constants.java     | 217 +++++++++
 .../olingo/odata4/client/api/ODataClient.java   |  52 +-
 .../olingo/odata4/client/api/ODataError.java    |  67 +++
 .../client/api/data/ODataDeserializer.java      |  90 ++++
 .../odata4/client/api/data/ODataReader.java     | 102 ++++
 .../odata4/client/api/data/ODataSerializer.java | 120 +++++
 .../odata4/client/api/edm/ComplexType.java      |  32 ++
 .../odata4/client/api/edm/EdmMetadata.java      |  59 +++
 .../olingo/odata4/client/api/edm/Edmx.java      |  23 +
 .../odata4/client/api/edm/EntityContainer.java  |  24 +
 .../olingo/odata4/client/api/edm/EntityKey.java |  23 +
 .../olingo/odata4/client/api/edm/EntitySet.java |  23 +
 .../odata4/client/api/edm/EntityType.java       |  23 +
 .../olingo/odata4/client/api/edm/EnumType.java  |  42 ++
 .../odata4/client/api/edm/FunctionImport.java   |  23 +
 .../olingo/odata4/client/api/edm/Member.java    |  26 +
 .../client/api/edm/NavigationProperty.java      |  23 +
 .../api/edm/NavigationPropertyBinding.java      |  23 +
 .../olingo/odata4/client/api/edm/OnDelete.java  |  23 +
 .../olingo/odata4/client/api/edm/Parameter.java |  23 +
 .../olingo/odata4/client/api/edm/Property.java  |  24 +
 .../odata4/client/api/edm/PropertyRef.java      |  23 +
 .../olingo/odata4/client/api/edm/Schema.java    |  79 +++
 .../odata4/client/api/edm/v3/Annotations.java   |  24 +
 .../odata4/client/api/edm/v3/Association.java   |  23 +
 .../client/api/edm/v3/AssociationEnd.java       |  23 +
 .../client/api/edm/v3/AssociationSet.java       |  23 +
 .../client/api/edm/v3/AssociationSetEnd.java    |  23 +
 .../odata4/client/api/edm/v3/ParameterMode.java |  27 +
 .../odata4/client/api/edm/v3/PropertyValue.java |  23 +
 .../api/edm/v3/ReferentialConstraint.java       |  23 +
 .../client/api/edm/v3/TypeAnnotation.java       |  23 +
 .../olingo/odata4/client/api/edm/v3/Using.java  |  23 +
 .../client/api/edm/v3/ValueAnnotation.java      |  23 +
 .../odata4/client/api/edm/v3/ValueTerm.java     |  23 +
 .../olingo/odata4/client/api/edm/v4/Action.java |  23 +
 .../odata4/client/api/edm/v4/ActionImport.java  |  23 +
 .../odata4/client/api/edm/v4/Annotation.java    |  23 +
 .../odata4/client/api/edm/v4/Annotations.java   |  23 +
 .../odata4/client/api/edm/v4/CSDLElement.java   |  37 ++
 .../odata4/client/api/edm/v4/Include.java       |  23 +
 .../client/api/edm/v4/IncludeAnnotations.java   |  23 +
 .../client/api/edm/v4/OnDeleteAction.java       |  28 ++
 .../odata4/client/api/edm/v4/Reference.java     |  23 +
 .../api/edm/v4/ReferentialConstraint.java       |  23 +
 .../odata4/client/api/edm/v4/ReturnType.java    |  23 +
 .../odata4/client/api/edm/v4/Singleton.java     |  23 +
 .../olingo/odata4/client/api/edm/v4/Term.java   |  23 +
 .../client/api/edm/v4/TypeDefinition.java       |  23 +
 .../odata4/client/api/format/ODataFormat.java   |  97 ++++
 .../client/api/format/ODataMediaFormat.java     |  71 +++
 .../client/api/format/ODataPubFormat.java       |  97 ++++
 .../client/api/format/ODataValueFormat.java     |  76 +++
 .../client/api/http/HttpClientException.java    |  68 +++
 .../client/api/http/HttpClientFactory.java      |  30 ++
 .../odata4/client/api/http/HttpMethod.java      |  33 ++
 .../client/api/http/HttpUriRequestFactory.java  |  30 ++
 .../client/api/http/NoContentException.java     |  36 ++
 odata4-lib/odata4-client-core/pom.xml           |  31 +-
 .../client/core/AbstractConfiguration.java      | 209 ++++++++
 .../odata4/client/core/AbstractODataClient.java |  37 ++
 .../odata4/client/core/ODataClientFactory.java  |  34 ++
 .../odata4/client/core/ODataClientImpl.java     |  25 -
 .../odata4/client/core/ODataV3Client.java       | 138 ++++++
 .../odata4/client/core/ODataV4Client.java       | 137 ++++++
 .../odata4/client/core/V3Configuration.java     |  29 ++
 .../odata4/client/core/V4Configuration.java     |  29 ++
 .../odata4/client/core/data/EdmSimpleType.java  | 288 +++++++++++
 .../client/core/data/ODataCollectionValue.java  |  98 ++++
 .../client/core/data/ODataComplexValue.java     |  97 ++++
 .../odata4/client/core/data/ODataDuration.java  |  80 +++
 .../client/core/data/ODataGeospatialValue.java  | 488 +++++++++++++++++++
 .../client/core/data/ODataInvokeResult.java     |  30 ++
 .../client/core/data/ODataPrimitiveValue.java   | 376 ++++++++++++++
 .../odata4/client/core/data/ODataProperty.java  | 192 ++++++++
 .../odata4/client/core/data/ODataTimestamp.java | 141 ++++++
 .../odata4/client/core/data/ODataValue.java     | 111 +++++
 .../data/geospatial/ComposedGeospatial.java     |  75 +++
 .../client/core/data/geospatial/Geospatial.java | 156 ++++++
 .../data/geospatial/GeospatialCollection.java   |  47 ++
 .../client/core/data/geospatial/LineString.java |  38 ++
 .../core/data/geospatial/MultiLineString.java   |  38 ++
 .../client/core/data/geospatial/MultiPoint.java |  38 ++
 .../core/data/geospatial/MultiPolygon.java      |  38 ++
 .../client/core/data/geospatial/Point.java      |  77 +++
 .../client/core/data/geospatial/Polygon.java    |  72 +++
 .../core/data/impl/AbstractEdmDeserializer.java |  69 +++
 .../core/data/impl/AbstractJacksonTool.java     |  83 ++++
 .../data/impl/AbstractODataDeserializer.java    | 177 +++++++
 .../core/data/impl/AbstractODataReader.java     | 138 ++++++
 .../core/data/impl/AbstractODataSerializer.java | 160 ++++++
 .../core/data/impl/ComplexTypeDeserializer.java |  81 +++
 .../data/impl/EntityContainerDeserializer.java  | 100 ++++
 .../core/data/impl/EntityKeyDeserializer.java   |  48 ++
 .../core/data/impl/EntitySetDeserializer.java   |  68 +++
 .../core/data/impl/EntityTypeDeserializer.java  |  90 ++++
 .../core/data/impl/EnumTypeDeserializer.java    |  71 +++
 .../data/impl/InjectableSerializerProvider.java |  43 ++
 .../core/data/impl/SchemaDeserializer.java      | 147 ++++++
 .../data/impl/v3/ODataDeserializerImpl.java     |  63 +++
 .../core/data/impl/v3/ODataReaderImpl.java      |  44 ++
 .../core/data/impl/v3/ODataSerializerImpl.java  |  32 ++
 .../data/impl/v4/ODataDeserializerImpl.java     |  63 +++
 .../core/data/impl/v4/ODataReaderImpl.java      |  44 ++
 .../core/data/impl/v4/ODataSerializerImpl.java  |  32 ++
 .../deserializer/PropertyCollectionBuilder.java |  11 +-
 .../client/core/edm/AbstractAnnotations.java    |  49 ++
 .../client/core/edm/AbstractComplexType.java    |  41 ++
 .../client/core/edm/AbstractDataServices.java   |  52 ++
 .../odata4/client/core/edm/AbstractEdmItem.java |  42 ++
 .../client/core/edm/AbstractEdmMetadata.java    | 106 ++++
 .../odata4/client/core/edm/AbstractEdmx.java    |  51 ++
 .../core/edm/AbstractEntityContainer.java       | 107 ++++
 .../client/core/edm/AbstractEntitySet.java      |  49 ++
 .../client/core/edm/AbstractEntityType.java     |  85 ++++
 .../client/core/edm/AbstractEnumType.java       |  65 +++
 .../client/core/edm/AbstractFunctionImport.java |  30 ++
 .../odata4/client/core/edm/AbstractMember.java  |  51 ++
 .../core/edm/AbstractNavigationProperty.java    |  38 ++
 .../client/core/edm/AbstractParameter.java      |  94 ++++
 .../client/core/edm/AbstractProperty.java       | 240 +++++++++
 .../odata4/client/core/edm/AbstractSchema.java  | 128 +++++
 .../core/edm/DataServicesDeserializer.java      |  64 +++
 .../client/core/edm/EdmxDeserializer.java       |  67 +++
 .../odata4/client/core/edm/EntityKeyImpl.java   |  41 ++
 .../odata4/client/core/edm/EntitySetImpl.java   |  25 +
 .../odata4/client/core/edm/OnDeleteImpl.java    |  40 ++
 .../odata4/client/core/edm/PropertyRefImpl.java |  50 ++
 .../core/edm/v3/AnnotationsDeserializer.java    |  55 +++
 .../client/core/edm/v3/AnnotationsImpl.java     |  43 ++
 .../core/edm/v3/AssociationDeserializer.java    |  53 ++
 .../client/core/edm/v3/AssociationEndImpl.java  |  73 +++
 .../client/core/edm/v3/AssociationImpl.java     |  61 +++
 .../core/edm/v3/AssociationSetDeserializer.java |  52 ++
 .../core/edm/v3/AssociationSetEndImpl.java      |  50 ++
 .../client/core/edm/v3/AssociationSetImpl.java  |  57 +++
 .../client/core/edm/v3/ComplexTypeImpl.java     |  48 ++
 .../client/core/edm/v3/DataServicesImpl.java    |  37 ++
 .../client/core/edm/v3/EdmMetadataImpl.java     |  35 ++
 .../odata4/client/core/edm/v3/EdmxImpl.java     |  28 ++
 .../client/core/edm/v3/EntityContainerImpl.java |  60 +++
 .../client/core/edm/v3/EntitySetImpl.java       |  27 +
 .../client/core/edm/v3/EntityTypeImpl.java      |  65 +++
 .../odata4/client/core/edm/v3/EnumTypeImpl.java |  58 +++
 .../core/edm/v3/FunctionImportDeserializer.java |  67 +++
 .../client/core/edm/v3/FunctionImportImpl.java  | 129 +++++
 .../odata4/client/core/edm/v3/MemberImpl.java   |  28 ++
 .../core/edm/v3/NavigationPropertyImpl.java     |  61 +++
 .../client/core/edm/v3/ParameterImpl.java       |  40 ++
 .../odata4/client/core/edm/v3/PropertyImpl.java |  27 +
 .../client/core/edm/v3/PropertyValueImpl.java   | 119 +++++
 .../core/edm/v3/ReferentialConstraintImpl.java  |  50 ++
 .../core/edm/v3/ReferentialConstraintRole.java  |  51 ++
 .../ReferentialConstraintRoleDeserializer.java  |  51 ++
 .../odata4/client/core/edm/v3/SchemaImpl.java   | 138 ++++++
 .../core/edm/v3/TypeAnnotationDeserializer.java |  52 ++
 .../client/core/edm/v3/TypeAnnotationImpl.java  |  58 +++
 .../odata4/client/core/edm/v3/UsingImpl.java    |  50 ++
 .../client/core/edm/v3/ValueAnnotationImpl.java | 129 +++++
 .../client/core/edm/v3/ValueTermImpl.java       |  50 ++
 .../core/edm/v4/AbstractAnnotatedEdmItem.java   |  42 ++
 .../client/core/edm/v4/ActionDeserializer.java  |  60 +++
 .../odata4/client/core/edm/v4/ActionImpl.java   |  87 ++++
 .../client/core/edm/v4/ActionImportImpl.java    |  60 +++
 .../client/core/edm/v4/AnnotatedEdmItem.java    |  28 ++
 .../core/edm/v4/AnnotationDeserializer.java     |  57 +++
 .../client/core/edm/v4/AnnotationImpl.java      |  72 +++
 .../core/edm/v4/AnnotationsDeserializer.java    |  53 ++
 .../client/core/edm/v4/AnnotationsImpl.java     |  47 ++
 .../client/core/edm/v4/ComplexTypeImpl.java     | 107 ++++
 .../client/core/edm/v4/DataServicesImpl.java    |  37 ++
 .../client/core/edm/v4/EdmMetadataImpl.java     |  39 ++
 .../odata4/client/core/edm/v4/EdmxImpl.java     |  36 ++
 .../client/core/edm/v4/EntityContainerImpl.java | 128 +++++
 .../client/core/edm/v4/EntitySetImpl.java       |  60 +++
 .../client/core/edm/v4/EntityTypeImpl.java      |  78 +++
 .../odata4/client/core/edm/v4/EnumTypeImpl.java |  71 +++
 .../core/edm/v4/FunctionDeserializer.java       |  62 +++
 .../odata4/client/core/edm/v4/FunctionImpl.java |  38 ++
 .../client/core/edm/v4/FunctionImportImpl.java  |  88 ++++
 .../core/edm/v4/IncludeAnnotationsImpl.java     |  62 +++
 .../odata4/client/core/edm/v4/IncludeImpl.java  |  51 ++
 .../odata4/client/core/edm/v4/MemberImpl.java   |  43 ++
 .../edm/v4/NavigationPropertyBindingImpl.java   |  51 ++
 .../edm/v4/NavigationPropertyDeserializer.java  |  67 +++
 .../core/edm/v4/NavigationPropertyImpl.java     | 102 ++++
 .../client/core/edm/v4/ParameterImpl.java       |  39 ++
 .../odata4/client/core/edm/v4/PropertyImpl.java |  41 ++
 .../core/edm/v4/ReferenceDeserializer.java      |  58 +++
 .../client/core/edm/v4/ReferenceImpl.java       |  62 +++
 .../core/edm/v4/ReferentialConstraintImpl.java  |  50 ++
 .../client/core/edm/v4/ReturnTypeImpl.java      |  96 ++++
 .../odata4/client/core/edm/v4/SchemaImpl.java   | 173 +++++++
 .../core/edm/v4/SingletonDeserializer.java      |  57 +++
 .../client/core/edm/v4/SingletonImpl.java       |  59 +++
 .../client/core/edm/v4/TermDeserializer.java    |  75 +++
 .../odata4/client/core/edm/v4/TermImpl.java     | 129 +++++
 .../core/edm/v4/TypeDefinitionDeserializer.java |  65 +++
 .../client/core/edm/v4/TypeDefinitionImpl.java  | 108 ++++
 .../annotation/AbstractElOrAttrConstruct.java   |  37 ++
 .../annotation/AnnotatedDynExprConstruct.java   |  39 ++
 .../core/edm/v4/annotation/AnnotationPath.java  |  25 +
 .../client/core/edm/v4/annotation/Apply.java    |  52 ++
 .../edm/v4/annotation/ApplyDeserializer.java    |  55 +++
 .../client/core/edm/v4/annotation/Cast.java     |  89 ++++
 .../edm/v4/annotation/CastDeserializer.java     |  62 +++
 .../core/edm/v4/annotation/Collection.java      |  36 ++
 .../v4/annotation/CollectionDeserializer.java   |  50 ++
 .../edm/v4/annotation/ConstExprConstruct.java   |  71 +++
 .../edm/v4/annotation/DynExprConstruct.java     |  28 ++
 .../DynExprConstructDeserializer.java           | 145 ++++++
 .../edm/v4/annotation/DynExprDoubleParamOp.java |  71 +++
 .../edm/v4/annotation/DynExprSingleParamOp.java |  67 +++
 .../core/edm/v4/annotation/ExprConstruct.java   |  27 +
 .../client/core/edm/v4/annotation/If.java       |  55 +++
 .../client/core/edm/v4/annotation/IsOf.java     |  89 ++++
 .../edm/v4/annotation/IsOfDeserializer.java     |  62 +++
 .../core/edm/v4/annotation/LabeledElement.java  |  48 ++
 .../annotation/LabeledElementDeserializer.java  |  53 ++
 .../v4/annotation/LabeledElementReference.java  |  25 +
 .../v4/annotation/NavigationPropertyPath.java   |  25 +
 .../client/core/edm/v4/annotation/Null.java     |  28 ++
 .../edm/v4/annotation/NullDeserializer.java     |  49 ++
 .../client/core/edm/v4/annotation/Path.java     |  25 +
 .../core/edm/v4/annotation/PropertyPath.java    |  25 +
 .../core/edm/v4/annotation/PropertyValue.java   |  48 ++
 .../annotation/PropertyValueDeserializer.java   |  55 +++
 .../client/core/edm/v4/annotation/Record.java   |  46 ++
 .../edm/v4/annotation/RecordDeserializer.java   |  53 ++
 .../client/core/edm/v4/annotation/UrlRef.java   |  38 ++
 .../edm/v4/annotation/UrlRefDeserializer.java   |  50 ++
 .../AbstractBasicAuthHttpClientFactory.java     |  50 ++
 .../http/AbstractNTLMAuthHttpClientFactory.java |  62 +++
 .../core/http/DefaultHttpClientFactory.java     |  39 ++
 .../core/http/DefaultHttpUriRequestFactory.java |  68 +++
 .../odata4/client/core/http/HttpMerge.java      |  70 +++
 .../odata4/client/core/http/HttpPatch.java      |  70 +++
 .../client/core/utils/AbstractDOMParser.java    |  46 ++
 .../client/core/utils/AndroidDOMParserImpl.java |  49 ++
 .../client/core/utils/DefaultDOMParserImpl.java |  78 +++
 .../odata4/client/core/utils/XMLUtils.java      | 186 +++++++
 .../odata4/client/core/ODataClientTest.java     |   9 +-
 .../deserializer/JsonReaderPerformance.java     |  22 +-
 .../client/core/testutil/StringHelper.java      | 108 ----
 .../api/edm/constants/ConcurrencyMode.java      |  26 +
 .../api/edm/constants/EdmContentKind.java       |  30 ++
 .../api/edm/constants/ODataServiceVersion.java  |  85 +++-
 .../edm/constants/StoreGeneratedPattern.java    |  27 +
 .../edm/provider/EdmServiceMetadataImpl.java    |   2 +-
 .../provider/EdmServiceMetadataImplTest.java    |   2 +-
 pom.xml                                         |  73 ++-
 254 files changed, 16033 insertions(+), 207 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/v4/metadata.xml
----------------------------------------------------------------------
diff --git a/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/v4/metadata.xml b/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/v4/metadata.xml
index 5f4c512..3f992ac 100644
--- a/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/v4/metadata.xml
+++ b/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/v4/metadata.xml
@@ -19,4 +19,214 @@
     under the License.
 
 -->
-<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"><edmx:DataServices m:DataServiceVersion="4.0" m:MaxDataServiceVersion="4.0" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata"><Schema Namespace="Microsoft.Exchange.Services.OData.Model" xmlns="http://docs.oasis-open.org/odata/ns/edm"><EnumType Name="BodyType"><Member Name="Text" Value="0" /><Member Name="HTML" Value="1" /></EnumType><EnumType Name="Importance"><Member Name="Normal" Value="0" /><Member Name="Low" Value="1" /><Member Name="High" Value="2" /></EnumType><EnumType Name="AttendeeType"><Member Name="Required" Value="1" /><Member Name="Optional" Value="2" /><Member Name="Resource" Value="3" /></EnumType><EnumType Name="ResponseType"><Member Name="None" Value="0" /><Member Name="Organizer" Value="1" /><Member Name="TentativelyAccepted" Value="2" /><Member Name="Accepted" Value="3" /><Member Name="Declined" Value="4" /><Member Name="NotResponded" Value="5" /></EnumType><EnumType Name="EventTyp
 e"><Member Name="SingleInstance" Value="0" /><Member Name="Occurrence" Value="1" /><Member Name="Exception" Value="2" /><Member Name="SeriesMaster" Value="3" /></EnumType><EnumType Name="FreeBusyStatus"><Member Name="Free" Value="0" /><Member Name="Tentative" Value="1" /><Member Name="Busy" Value="2" /><Member Name="Oof" Value="3" /><Member Name="WorkingElsewhere" Value="4" /><Member Name="Unknown" Value="-1" /></EnumType><ComplexType Name="Recipient"><Property Name="Name" Type="Edm.String" /><Property Name="Address" Type="Edm.String" /></ComplexType><ComplexType Name="Attendee" BaseType="Microsoft.Exchange.Services.OData.Model.Recipient"><Property Name="Status" Type="Microsoft.Exchange.Services.OData.Model.ResponseStatus" /><Property Name="Type" Type="Microsoft.Exchange.Services.OData.Model.AttendeeType" /></ComplexType><ComplexType Name="ItemBody"><Property Name="ContentType" Type="Microsoft.Exchange.Services.OData.Model.BodyType" /><Property Name="Content" Type="Edm.String" /></C
 omplexType><ComplexType Name="Location"><Property Name="DisplayName" Type="Edm.String" /></ComplexType><ComplexType Name="ResponseStatus" BaseType="Microsoft.Exchange.Services.OData.Model.Recipient"><Property Name="Response" Type="Microsoft.Exchange.Services.OData.Model.ResponseType" /><Property Name="Time" Type="Edm.DateTimeOffset" /></ComplexType><EntityType Name="Entity" Abstract="true"><Key><PropertyRef Name="Id" /></Key><Property Name="Id" Type="Edm.String" Nullable="false" /></EntityType><EntityType Name="User" BaseType="Microsoft.Exchange.Services.OData.Model.Entity"><Property Name="DisplayName" Type="Edm.String" /><Property Name="Alias" Type="Edm.String" /><Property Name="MailboxGuid" Type="Edm.Guid" /><NavigationProperty Name="Folders" Type="Collection(Microsoft.Exchange.Services.OData.Model.Folder)" /><NavigationProperty Name="Messages" Type="Collection(Microsoft.Exchange.Services.OData.Model.EmailMessage)" /><NavigationProperty Name="RootFolder" Type="Microsoft.Exchange.S
 ervices.OData.Model.Folder" /><NavigationProperty Name="Inbox" Type="Microsoft.Exchange.Services.OData.Model.Folder" /><NavigationProperty Name="Drafts" Type="Microsoft.Exchange.Services.OData.Model.Folder" /><NavigationProperty Name="SentItems" Type="Microsoft.Exchange.Services.OData.Model.Folder" /><NavigationProperty Name="DeletedItems" Type="Microsoft.Exchange.Services.OData.Model.Folder" /><NavigationProperty Name="Calendars" Type="Collection(Microsoft.Exchange.Services.OData.Model.Calendar)" /><NavigationProperty Name="CalendarGroups" Type="Collection(Microsoft.Exchange.Services.OData.Model.CalendarGroup)" /><NavigationProperty Name="Events" Type="Collection(Microsoft.Exchange.Services.OData.Model.Event)" /></EntityType><EntityType Name="Folder" BaseType="Microsoft.Exchange.Services.OData.Model.Entity"><Property Name="ParentFolderId" Type="Edm.String" /><Property Name="DisplayName" Type="Edm.String" /><Property Name="ClassName" Type="Edm.String" /><Property Name="TotalCount" T
 ype="Edm.Int32" /><Property Name="ChildFolderCount" Type="Edm.Int32" /><Property Name="UnreadItemCount" Type="Edm.Int32" /><NavigationProperty Name="ChildFolders" Type="Collection(Microsoft.Exchange.Services.OData.Model.Folder)" /><NavigationProperty Name="Messages" Type="Collection(Microsoft.Exchange.Services.OData.Model.EmailMessage)" /></EntityType><Action Name="Copy" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.Folder"><Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.Folder" /><Parameter Name="DestinationId" Type="Edm.String" /></Action><Action Name="Move" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.Folder"><Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.Folder" /><Parameter Name="DestinationId" Type="Edm.String" /></Action><EntityType Name="Item" BaseType="Microsoft.Exchange.Services.OData.Model.Entity" A
 bstract="true"><Property Name="ChangeKey" Type="Edm.String" /><Property Name="ClassName" Type="Edm.String" /><Property Name="Subject" Type="Edm.String" /><Property Name="Body" Type="Microsoft.Exchange.Services.OData.Model.ItemBody" /><Property Name="BodyPreview" Type="Edm.String" /><Property Name="Importance" Type="Microsoft.Exchange.Services.OData.Model.Importance" /><Property Name="Categories" Type="Collection(Edm.String)" /><Property Name="HasAttachments" Type="Edm.Boolean" /><Property Name="DateTimeCreated" Type="Edm.DateTimeOffset" /><Property Name="LastModifiedTime" Type="Edm.DateTimeOffset" /><NavigationProperty Name="Attachments" Type="Collection(Microsoft.Exchange.Services.OData.Model.Attachment)" /></EntityType><EntityType Name="EmailMessage" BaseType="Microsoft.Exchange.Services.OData.Model.Item"><Property Name="ParentFolderId" Type="Edm.String" /><Property Name="From" Type="Microsoft.Exchange.Services.OData.Model.Recipient" /><Property Name="Sender" Type="Microsoft.Excha
 nge.Services.OData.Model.Recipient" /><Property Name="ToRecipients" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" /><Property Name="CcRecipients" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" /><Property Name="BccRecipients" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" /><Property Name="ReplyTo" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" /><Property Name="ConversationIndex" Type="Edm.String" /><Property Name="UniqueBody" Type="Microsoft.Exchange.Services.OData.Model.ItemBody" /><Property Name="DateTimeReceived" Type="Edm.DateTimeOffset" /><Property Name="DateTimeSent" Type="Edm.DateTimeOffset" /><Property Name="IsDeliveryReceiptRequested" Type="Edm.Boolean" /><Property Name="IsReadReceiptRequested" Type="Edm.Boolean" /><Property Name="IsDraft" Type="Edm.Boolean" /><Property Name="IsRead" Type="Edm.Boolean" /></EntityType><Action Name="Copy" IsBound="true" EntitySetPath="bindingParameter" 
 ReturnType="Microsoft.Exchange.Services.OData.Model.EmailMessage"><Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.EmailMessage" /><Parameter Name="DestinationId" Type="Edm.String" /></Action><Action Name="Move" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.EmailMessage"><Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.EmailMessage" /><Parameter Name="DestinationId" Type="Edm.String" /></Action><EntityType Name="Attachment" BaseType="Microsoft.Exchange.Services.OData.Model.Entity" Abstract="true"><Property Name="Name" Type="Edm.String" /><Property Name="ContentType" Type="Edm.String" /><Property Name="IsInline" Type="Edm.Boolean" Nullable="false" /><Property Name="LastModifiedTime" Type="Edm.DateTimeOffset" /></EntityType><EntityType Name="FileAttachment" BaseType="Microsoft.Exchange.Services.OData.Model.Attachment"><Property Name="ContentId" Type="Edm.String" /><Pro
 perty Name="ContentLocation" Type="Edm.String" /><Property Name="Size" Type="Edm.Int32" Nullable="false" /><Property Name="IsContactPhoto" Type="Edm.Boolean" Nullable="false" /><Property Name="ContentBytes" Type="Edm.Binary" MaxLength="Max" FixedLength="false" /></EntityType><EntityType Name="ItemAttachment" BaseType="Microsoft.Exchange.Services.OData.Model.Attachment"><NavigationProperty Name="Item" Type="Microsoft.Exchange.Services.OData.Model.Item" /></EntityType><EntityType Name="Calendar" BaseType="Microsoft.Exchange.Services.OData.Model.Entity"><Property Name="Name" Type="Edm.String" /><Property Name="ChangeKey" Type="Edm.String" /><NavigationProperty Name="Events" Type="Collection(Microsoft.Exchange.Services.OData.Model.Event)" /></EntityType><EntityType Name="CalendarGroup" BaseType="Microsoft.Exchange.Services.OData.Model.Entity"><Property Name="Name" Type="Edm.String" /><Property Name="ChangeKey" Type="Edm.String" /><Property Name="ClassId" Type="Edm.Guid" /></EntityType><
 EntityType Name="Event" BaseType="Microsoft.Exchange.Services.OData.Model.Item"><Property Name="Start" Type="Edm.DateTimeOffset" /><Property Name="End" Type="Edm.DateTimeOffset" /><Property Name="Location" Type="Microsoft.Exchange.Services.OData.Model.Location" /><Property Name="ShowAs" Type="Microsoft.Exchange.Services.OData.Model.FreeBusyStatus" /><Property Name="IsAllDay" Type="Edm.Boolean" /><Property Name="IsCancelled" Type="Edm.Boolean" /><Property Name="IsOrganizer" Type="Edm.Boolean" /><Property Name="ResponseRequested" Type="Edm.Boolean" /><Property Name="Type" Type="Microsoft.Exchange.Services.OData.Model.EventType" /><Property Name="SeriesId" Type="Edm.String" /><Property Name="Attendees" Type="Collection(Microsoft.Exchange.Services.OData.Model.Attendee)" /><NavigationProperty Name="Calendar" Type="Microsoft.Exchange.Services.OData.Model.Calendar" /></EntityType><EntityContainer Name="EntityContainer" m:IsDefaultEntityContainer="true"><EntitySet Name="Users" EntityType="M
 icrosoft.Exchange.Services.OData.Model.User"><NavigationPropertyBinding Path="Folders" Target="Folders" /><NavigationPropertyBinding Path="Messages" Target="Messages" /><NavigationPropertyBinding Path="RootFolder" Target="Folders" /><NavigationPropertyBinding Path="Inbox" Target="Folders" /><NavigationPropertyBinding Path="Drafts" Target="Folders" /><NavigationPropertyBinding Path="SentItems" Target="Folders" /><NavigationPropertyBinding Path="DeletedItems" Target="Folders" /><NavigationPropertyBinding Path="Calendars" Target="Calendars" /><NavigationPropertyBinding Path="CalendarGroups" Target="CalendarGroups" /><NavigationPropertyBinding Path="Events" Target="Events" /></EntitySet><EntitySet Name="Folders" EntityType="Microsoft.Exchange.Services.OData.Model.Folder"><NavigationPropertyBinding Path="ChildFolders" Target="Folders" /><NavigationPropertyBinding Path="Messages" Target="Messages" /></EntitySet><EntitySet Name="Items" EntityType="Microsoft.Exchange.Services.OData.Model.It
 em" /><EntitySet Name="Messages" EntityType="Microsoft.Exchange.Services.OData.Model.EmailMessage"><NavigationPropertyBinding Path="Attachments" Target="Attachments" /></EntitySet><EntitySet Name="Attachments" EntityType="Microsoft.Exchange.Services.OData.Model.Attachment"><NavigationPropertyBinding Path="Microsoft.Exchange.Services.OData.Model.ItemAttachment/Item" Target="Items" /></EntitySet><EntitySet Name="Calendars" EntityType="Microsoft.Exchange.Services.OData.Model.Calendar"><NavigationPropertyBinding Path="Events" Target="Events" /></EntitySet><EntitySet Name="CalendarGroups" EntityType="Microsoft.Exchange.Services.OData.Model.CalendarGroup" /><EntitySet Name="Events" EntityType="Microsoft.Exchange.Services.OData.Model.Event"><NavigationPropertyBinding Path="Attachments" Target="Attachments" /><NavigationPropertyBinding Path="Calendar" Target="Calendars" /></EntitySet></EntityContainer></Schema></edmx:DataServices></edmx:Edmx>
\ No newline at end of file
+<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
+  <edmx:DataServices m:DataServiceVersion="4.0" m:MaxDataServiceVersion="4.0" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata">
+    <Schema Namespace="Microsoft.Exchange.Services.OData.Model" xmlns="http://docs.oasis-open.org/odata/ns/edm">
+      <EnumType Name="BodyType">
+        <Member Name="Text" Value="0" />
+        <Member Name="HTML" Value="1" />
+      </EnumType>
+      <EnumType Name="Importance">
+        <Member Name="Normal" Value="0" />
+        <Member Name="Low" Value="1" />
+        <Member Name="High" Value="2" />
+      </EnumType>
+      <EnumType Name="AttendeeType">
+        <Member Name="Required" Value="1" />
+        <Member Name="Optional" Value="2" />
+        <Member Name="Resource" Value="3" />
+      </EnumType>
+      <EnumType Name="ResponseType">
+        <Member Name="None" Value="0" />
+        <Member Name="Organizer" Value="1" />
+        <Member Name="TentativelyAccepted" Value="2" />
+        <Member Name="Accepted" Value="3" />
+        <Member Name="Declined" Value="4" />
+        <Member Name="NotResponded" Value="5" />
+      </EnumType>
+      <EnumType Name="EventType">
+        <Member Name="SingleInstance" Value="0" />
+        <Member Name="Occurrence" Value="1" />
+        <Member Name="Exception" Value="2" />
+        <Member Name="SeriesMaster" Value="3" />
+      </EnumType>
+      <EnumType Name="FreeBusyStatus">
+        <Member Name="Free" Value="0" />
+        <Member Name="Tentative" Value="1" />
+        <Member Name="Busy" Value="2" />
+        <Member Name="Oof" Value="3" />
+        <Member Name="WorkingElsewhere" Value="4" />
+        <Member Name="Unknown" Value="-1" />
+      </EnumType>
+      <ComplexType Name="Recipient">
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="Address" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="Attendee" BaseType="Microsoft.Exchange.Services.OData.Model.Recipient">
+        <Property Name="Status" Type="Microsoft.Exchange.Services.OData.Model.ResponseStatus" />
+        <Property Name="Type" Type="Microsoft.Exchange.Services.OData.Model.AttendeeType" />
+      </ComplexType>
+      <ComplexType Name="ItemBody">
+        <Property Name="ContentType" Type="Microsoft.Exchange.Services.OData.Model.BodyType" />
+        <Property Name="Content" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="Location">
+        <Property Name="DisplayName" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="ResponseStatus" BaseType="Microsoft.Exchange.Services.OData.Model.Recipient">
+        <Property Name="Response" Type="Microsoft.Exchange.Services.OData.Model.ResponseType" />
+        <Property Name="Time" Type="Edm.DateTimeOffset" />
+      </ComplexType>
+      <EntityType Name="Entity" Abstract="true">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.String" Nullable="false" />
+      </EntityType>
+      <EntityType Name="User" BaseType="Microsoft.Exchange.Services.OData.Model.Entity">
+        <Property Name="DisplayName" Type="Edm.String" />
+        <Property Name="Alias" Type="Edm.String" />
+        <Property Name="MailboxGuid" Type="Edm.Guid" />
+        <NavigationProperty Name="Folders" Type="Collection(Microsoft.Exchange.Services.OData.Model.Folder)" />
+        <NavigationProperty Name="Messages" Type="Collection(Microsoft.Exchange.Services.OData.Model.EmailMessage)" />
+        <NavigationProperty Name="RootFolder" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <NavigationProperty Name="Inbox" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <NavigationProperty Name="Drafts" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <NavigationProperty Name="SentItems" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <NavigationProperty Name="DeletedItems" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <NavigationProperty Name="Calendars" Type="Collection(Microsoft.Exchange.Services.OData.Model.Calendar)" />
+        <NavigationProperty Name="CalendarGroups" Type="Collection(Microsoft.Exchange.Services.OData.Model.CalendarGroup)" />
+        <NavigationProperty Name="Events" Type="Collection(Microsoft.Exchange.Services.OData.Model.Event)" />
+      </EntityType>
+      <EntityType Name="Folder" BaseType="Microsoft.Exchange.Services.OData.Model.Entity">
+        <Property Name="ParentFolderId" Type="Edm.String" />
+        <Property Name="DisplayName" Type="Edm.String" />
+        <Property Name="ClassName" Type="Edm.String" />
+        <Property Name="TotalCount" Type="Edm.Int32" />
+        <Property Name="ChildFolderCount" Type="Edm.Int32" />
+        <Property Name="UnreadItemCount" Type="Edm.Int32" />
+        <NavigationProperty Name="ChildFolders" Type="Collection(Microsoft.Exchange.Services.OData.Model.Folder)" />
+        <NavigationProperty Name="Messages" Type="Collection(Microsoft.Exchange.Services.OData.Model.EmailMessage)" />
+      </EntityType>
+      <Action Name="Copy" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.Folder">
+        <Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <Parameter Name="DestinationId" Type="Edm.String" />
+      </Action>
+      <Action Name="Move" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.Folder">
+        <Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.Folder" />
+        <Parameter Name="DestinationId" Type="Edm.String" />
+      </Action>
+      <EntityType Name="Item" BaseType="Microsoft.Exchange.Services.OData.Model.Entity" Abstract="true">
+        <Property Name="ChangeKey" Type="Edm.String" />
+        <Property Name="ClassName" Type="Edm.String" />
+        <Property Name="Subject" Type="Edm.String" />
+        <Property Name="Body" Type="Microsoft.Exchange.Services.OData.Model.ItemBody" />
+        <Property Name="BodyPreview" Type="Edm.String" />
+        <Property Name="Importance" Type="Microsoft.Exchange.Services.OData.Model.Importance" />
+        <Property Name="Categories" Type="Collection(Edm.String)" />
+        <Property Name="HasAttachments" Type="Edm.Boolean" />
+        <Property Name="DateTimeCreated" Type="Edm.DateTimeOffset" />
+        <Property Name="LastModifiedTime" Type="Edm.DateTimeOffset" />
+        <NavigationProperty Name="Attachments" Type="Collection(Microsoft.Exchange.Services.OData.Model.Attachment)" />
+      </EntityType>
+      <EntityType Name="EmailMessage" BaseType="Microsoft.Exchange.Services.OData.Model.Item">
+        <Property Name="ParentFolderId" Type="Edm.String" />
+        <Property Name="From" Type="Microsoft.Exchange.Services.OData.Model.Recipient" />
+        <Property Name="Sender" Type="Microsoft.Exchange.Services.OData.Model.Recipient" />
+        <Property Name="ToRecipients" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" />
+        <Property Name="CcRecipients" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" />
+        <Property Name="BccRecipients" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" />
+        <Property Name="ReplyTo" Type="Collection(Microsoft.Exchange.Services.OData.Model.Recipient)" />
+        <Property Name="ConversationIndex" Type="Edm.String" />
+        <Property Name="UniqueBody" Type="Microsoft.Exchange.Services.OData.Model.ItemBody" />
+        <Property Name="DateTimeReceived" Type="Edm.DateTimeOffset" />
+        <Property Name="DateTimeSent" Type="Edm.DateTimeOffset" />
+        <Property Name="IsDeliveryReceiptRequested" Type="Edm.Boolean" />
+        <Property Name="IsReadReceiptRequested" Type="Edm.Boolean" />
+        <Property Name="IsDraft" Type="Edm.Boolean" />
+        <Property Name="IsRead" Type="Edm.Boolean" />
+      </EntityType>
+      <Action Name="Copy" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.EmailMessage">
+        <Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.EmailMessage" />
+        <Parameter Name="DestinationId" Type="Edm.String" />
+      </Action>
+      <Action Name="Move" IsBound="true" EntitySetPath="bindingParameter" ReturnType="Microsoft.Exchange.Services.OData.Model.EmailMessage">
+        <Parameter Name="bindingParameter" Type="Microsoft.Exchange.Services.OData.Model.EmailMessage" />
+        <Parameter Name="DestinationId" Type="Edm.String" />
+      </Action>
+      <EntityType Name="Attachment" BaseType="Microsoft.Exchange.Services.OData.Model.Entity" Abstract="true">
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="ContentType" Type="Edm.String" />
+        <Property Name="IsInline" Type="Edm.Boolean" Nullable="false" />
+        <Property Name="LastModifiedTime" Type="Edm.DateTimeOffset" />
+      </EntityType>
+      <EntityType Name="FileAttachment" BaseType="Microsoft.Exchange.Services.OData.Model.Attachment">
+        <Property Name="ContentId" Type="Edm.String" />
+        <Property Name="ContentLocation" Type="Edm.String" />
+        <Property Name="Size" Type="Edm.Int32" Nullable="false" />
+        <Property Name="IsContactPhoto" Type="Edm.Boolean" Nullable="false" />
+        <Property Name="ContentBytes" Type="Edm.Binary" MaxLength="Max" FixedLength="false" />
+      </EntityType>
+      <EntityType Name="ItemAttachment" BaseType="Microsoft.Exchange.Services.OData.Model.Attachment">
+        <NavigationProperty Name="Item" Type="Microsoft.Exchange.Services.OData.Model.Item" />
+      </EntityType>
+      <EntityType Name="Calendar" BaseType="Microsoft.Exchange.Services.OData.Model.Entity">
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="ChangeKey" Type="Edm.String" />
+        <NavigationProperty Name="Events" Type="Collection(Microsoft.Exchange.Services.OData.Model.Event)" />
+      </EntityType>
+      <EntityType Name="CalendarGroup" BaseType="Microsoft.Exchange.Services.OData.Model.Entity">
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="ChangeKey" Type="Edm.String" />
+        <Property Name="ClassId" Type="Edm.Guid" />
+      </EntityType>
+      <EntityType Name="Event" BaseType="Microsoft.Exchange.Services.OData.Model.Item">
+        <Property Name="Start" Type="Edm.DateTimeOffset" />
+        <Property Name="End" Type="Edm.DateTimeOffset" />
+        <Property Name="Location" Type="Microsoft.Exchange.Services.OData.Model.Location" />
+        <Property Name="ShowAs" Type="Microsoft.Exchange.Services.OData.Model.FreeBusyStatus" />
+        <Property Name="IsAllDay" Type="Edm.Boolean" />
+        <Property Name="IsCancelled" Type="Edm.Boolean" />
+        <Property Name="IsOrganizer" Type="Edm.Boolean" />
+        <Property Name="ResponseRequested" Type="Edm.Boolean" />
+        <Property Name="Type" Type="Microsoft.Exchange.Services.OData.Model.EventType" />
+        <Property Name="SeriesId" Type="Edm.String" />
+        <Property Name="Attendees" Type="Collection(Microsoft.Exchange.Services.OData.Model.Attendee)" />
+        <NavigationProperty Name="Calendar" Type="Microsoft.Exchange.Services.OData.Model.Calendar" />
+      </EntityType>
+      <EntityContainer Name="EntityContainer" m:IsDefaultEntityContainer="true">
+        <EntitySet Name="Users" EntityType="Microsoft.Exchange.Services.OData.Model.User">
+          <NavigationPropertyBinding Path="Folders" Target="Folders" />
+          <NavigationPropertyBinding Path="Messages" Target="Messages" />
+          <NavigationPropertyBinding Path="RootFolder" Target="Folders" />
+          <NavigationPropertyBinding Path="Inbox" Target="Folders" />
+          <NavigationPropertyBinding Path="Drafts" Target="Folders" />
+          <NavigationPropertyBinding Path="SentItems" Target="Folders" />
+          <NavigationPropertyBinding Path="DeletedItems" Target="Folders" />
+          <NavigationPropertyBinding Path="Calendars" Target="Calendars" />
+          <NavigationPropertyBinding Path="CalendarGroups" Target="CalendarGroups" />
+          <NavigationPropertyBinding Path="Events" Target="Events" />
+        </EntitySet>
+        <EntitySet Name="Folders" EntityType="Microsoft.Exchange.Services.OData.Model.Folder">
+          <NavigationPropertyBinding Path="ChildFolders" Target="Folders" />
+          <NavigationPropertyBinding Path="Messages" Target="Messages" />
+        </EntitySet>
+        <EntitySet Name="Items" EntityType="Microsoft.Exchange.Services.OData.Model.Item" />
+        <EntitySet Name="Messages" EntityType="Microsoft.Exchange.Services.OData.Model.EmailMessage">
+          <NavigationPropertyBinding Path="Attachments" Target="Attachments" />
+        </EntitySet>
+        <EntitySet Name="Attachments" EntityType="Microsoft.Exchange.Services.OData.Model.Attachment">
+          <NavigationPropertyBinding Path="Microsoft.Exchange.Services.OData.Model.ItemAttachment/Item" Target="Items" />
+        </EntitySet>
+        <EntitySet Name="Calendars" EntityType="Microsoft.Exchange.Services.OData.Model.Calendar">
+          <NavigationPropertyBinding Path="Events" Target="Events" />
+        </EntitySet>
+        <EntitySet Name="CalendarGroups" EntityType="Microsoft.Exchange.Services.OData.Model.CalendarGroup" />
+        <EntitySet Name="Events" EntityType="Microsoft.Exchange.Services.OData.Model.Event">
+          <NavigationPropertyBinding Path="Attachments" Target="Attachments" />
+          <NavigationPropertyBinding Path="Calendar" Target="Calendars" />
+        </EntitySet>
+      </EntityContainer>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/pom.xml b/odata4-lib/odata4-client-api/pom.xml
index c8bcbf7..5d56f03 100644
--- a/odata4-lib/odata4-client-api/pom.xml
+++ b/odata4-lib/odata4-client-api/pom.xml
@@ -40,6 +40,11 @@
       <artifactId>olingo-odata4-commons-api-incubating</artifactId>
       <version>${project.version}</version>
     </dependency>
+
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+    </dependency>
   </dependencies>
 	
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
new file mode 100644
index 0000000..521c5a7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Configuration.java
@@ -0,0 +1,201 @@
+/*
+ * 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.odata4.client.api;
+
+import org.apache.olingo.odata4.client.api.http.HttpUriRequestFactory;
+import org.apache.olingo.odata4.client.api.http.HttpClientFactory;
+import java.io.Serializable;
+import java.util.concurrent.ExecutorService;
+import org.apache.olingo.odata4.client.api.format.ODataFormat;
+import org.apache.olingo.odata4.client.api.format.ODataMediaFormat;
+import org.apache.olingo.odata4.client.api.format.ODataPubFormat;
+import org.apache.olingo.odata4.client.api.format.ODataValueFormat;
+
+/**
+ * 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 URIs contain entity key between parentheses (standard) or instead as additional segment. 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.
+   * 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);
+
+  /**
+   * 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/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Constants.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Constants.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Constants.java
new file mode 100644
index 0000000..9345057
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/Constants.java
@@ -0,0 +1,217 @@
+/*
+ * 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.odata4.client.api;
+
+import javax.xml.XMLConstants;
+
+/**
+ * Constant values related to the OData protocol.
+ */
+public class Constants {
+
+  // Other stuff
+  public final static String UTF8 = "UTF-8";
+
+  public final static String NAME = "name";
+
+  public final static String PROPERTIES = "properties";
+
+  // XML namespaces and prefixes
+  public final static String NS_ATOM = "http://www.w3.org/2005/Atom";
+
+  public static final String NS_GEORSS = "http://www.georss.org/georss";
+
+  public static final String NS_GML = "http://www.opengis.net/gml";
+
+  public static final String XMLNS_DATASERVICES = XMLConstants.XMLNS_ATTRIBUTE + ":d";
+
+  public static final String PREFIX_DATASERVICES = "d:";
+
+  public static final String XMLNS_METADATA = XMLConstants.XMLNS_ATTRIBUTE + ":m";
+
+  public static final String PREFIX_METADATA = "m:";
+
+  public static final String XMLNS_GEORSS = XMLConstants.XMLNS_ATTRIBUTE + ":georss";
+
+  public static final String PREFIX_GEORSS = "georss:";
+
+  public static final String XMLNS_GML = XMLConstants.XMLNS_ATTRIBUTE + ":gml";
+
+  public static final String PREFIX_GML = "gml:";
+
+  /**
+   * Edit link rel value.
+   */
+  public static final String EDIT_LINK_REL = "edit";
+
+  /**
+   * Self link rel value.
+   */
+  public static final String SELF_LINK_REL = "self";
+
+  public static final String NEXT_LINK_REL = "next";
+
+  // XML elements and attributes
+  public static final String ELEM_PROPERTIES = PREFIX_METADATA + PROPERTIES;
+
+  public static final String ELEM_ELEMENT = "element";
+
+  public final static String ATTR_TYPE = "type";
+
+  public static final String ATTR_M_TYPE = PREFIX_METADATA + ATTR_TYPE;
+
+  public static final String ATTR_NULL = PREFIX_METADATA + "null";
+
+  public static final String ATTR_XMLBASE = "xml:base";
+
+  public static final String ATTR_REL = "rel";
+
+  public static final String ATTR_HREF = "href";
+
+  public static final String ATTR_METADATA = "metadata";
+
+  public static final String ATTR_TITLE = "title";
+
+  public static final String ATTR_TARGET = "target";
+
+  public static final String ELEM_COLLECTION = "collection";
+
+  public static final String ATTR_SRSNAME = PREFIX_GML + "srsName";
+
+  public static final String ELEM_POINT = PREFIX_GML + "Point";
+
+  public static final String ELEM_MULTIPOINT = PREFIX_GML + "MultiPoint";
+
+  public static final String ELEM_POINTMEMBERS = PREFIX_GML + "pointMembers";
+
+  public static final String ELEM_LINESTRING = PREFIX_GML + "LineString";
+
+  public static final String ELEM_MULTILINESTRING = PREFIX_GML + "MultiCurve";
+
+  public static final String ELEM_LINESTRINGMEMBERS = PREFIX_GML + "curveMembers";
+
+  public static final String ELEM_POLYGON = PREFIX_GML + "Polygon";
+
+  public static final String ELEM_POLYGON_EXTERIOR = PREFIX_GML + "exterior";
+
+  public static final String ELEM_POLYGON_INTERIOR = PREFIX_GML + "interior";
+
+  public static final String ELEM_POLYGON_LINEARRING = PREFIX_GML + "LinearRing";
+
+  public static final String ELEM_MULTIPOLYGON = PREFIX_GML + "MultiSurface";
+
+  public static final String ELEM_SURFACEMEMBERS = PREFIX_GML + "surfaceMembers";
+
+  public static final String ELEM_GEOCOLLECTION = PREFIX_GML + "MultiGeometry";
+
+  public static final String ELEM_GEOMEMBERS = PREFIX_GML + "geometryMembers";
+
+  public static final String ELEM_POS = PREFIX_GML + "pos";
+
+  public static final String ELEM_POSLIST = PREFIX_GML + "posList";
+
+  public static final String ELEM_PROPERTY = "property";
+
+  public static final String ELEM_URI = "uri";
+
+  // JSON stuff
+  public final static String JSON_METADATA = "odata.metadata";
+
+  public final static String JSON_TYPE = "odata.type";
+
+  public final static String JSON_ETAG = "odata.etag";
+
+  public final static String JSON_MEDIA_ETAG = "odata.mediaETag";
+
+  public final static String JSON_ID = "odata.id";
+
+  public final static String JSON_READ_LINK = "odata.readLink";
+
+  public final static String JSON_EDIT_LINK = "odata.editLink";
+
+  public final static String JSON_MEDIAREAD_LINK = "odata.mediaReadLink";
+
+  public final static String JSON_MEDIAEDIT_LINK = "odata.mediaEditLink";
+
+  public final static String JSON_MEDIA_CONTENT_TYPE = "odata.mediaContentType";
+
+  public final static String JSON_NAVIGATION_LINK_SUFFIX = "@odata.navigationLinkUrl";
+
+  public final static String JSON_BIND_LINK_SUFFIX = "@odata.bind";
+
+  public final static String JSON_ASSOCIATION_LINK_SUFFIX = "@odata.associationLinkUrl";
+
+  public final static String JSON_MEDIAEDIT_LINK_SUFFIX = "@odata.mediaEditLink";
+
+  public final static String JSON_VALUE = "value";
+
+  public final static String JSON_URL = "url";
+
+  public final static String JSON_COORDINATES = "coordinates";
+
+  public final static String JSON_GEOMETRIES = "geometries";
+
+  public final static String JSON_CRS = "crs";
+
+  public final static String JSON_GIS_URLPREFIX = "http://www.opengis.net/def/crs/EPSG/0/";
+
+  // Atom stuff
+  public final static String ATOM_ELEM_ENTRY = "entry";
+
+  public final static String ATOM_ELEM_FEED = "feed";
+
+  public final static String ATOM_ELEM_CATEGORY = "category";
+
+  public final static String ATOM_ELEM_ID = "id";
+
+  public final static String ATOM_ELEM_LINK = "link";
+
+  public final static String ATOM_ELEM_CONTENT = "content";
+
+  public static final String ATOM_ELEM_TITLE = "title";
+
+  public static final String ATOM_ELEM_SUMMARY = "summary";
+
+  public static final String ATOM_ELEM_UPDATED = "updated";
+
+  public static final String ATOM_ELEM_AUTHOR = "author";
+
+  public static final String ATOM_ELEM_AUTHOR_NAME = "name";
+
+  public static final String ATOM_ELEM_AUTHOR_URI = "uri";
+
+  public static final String ATOM_ELEM_AUTHOR_EMAIL = "email";
+
+  public static final String ATOM_ELEM_ACTION = PREFIX_METADATA + "action";
+
+  public static final String ATOM_ELEM_INLINE = PREFIX_METADATA + "inline";
+
+  public static final String ATOM_ATTR_TITLE = "atom:title";
+
+  public static final String ATOM_ATTR_TERM = "term";
+
+  public static final String ATOM_ATTR_SCHEME = "scheme";
+
+  public static final String ATOM_ATTR_SRC = "src";
+
+  public static final String ATOM_ATTR_ETAG = PREFIX_METADATA + "etag";
+
+  public static final String ATOM_ATTR_COUNT = PREFIX_METADATA + "count";
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
index 8ee2146..b5a8dec 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataClient.java
@@ -1,4 +1,4 @@
-/* 
+/*
  * 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
@@ -18,27 +18,41 @@
  */
 package org.apache.olingo.odata4.client.api;
 
-//TODO: Exceptionhandling
-public abstract class ODataClient {
+import org.apache.olingo.odata4.client.api.data.ODataDeserializer;
+import org.apache.olingo.odata4.client.api.data.ODataReader;
+import org.apache.olingo.odata4.client.api.data.ODataSerializer;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
-  private static final String IMPLEMENTATION = "org.apache.olingo.odata4.client.core.ODataClientImpl";
+public interface ODataClient {
 
-  public static ODataClient create() {
-    ODataClient instance;
+  ODataServiceVersion getServiceVersion();
 
-    try {
-      final Class<?> clazz = Class.forName(ODataClient.IMPLEMENTATION);
+  //ODataHeaders getVersionHeaders();
+  Configuration getConfiguration();
 
-      /*
-       * We explicitly do not use the singleton pattern to keep the server state free
-       * and avoid class loading issues also during hot deployment.
-       */
-      final Object object = clazz.newInstance();
-      instance = (ODataClient) object;
+//  URIBuilder getURIBuilder(String serviceRoot);
+//
+//  FilterFactory getFilterFactory();
+//
+  ODataSerializer getSerializer();
+//
+  ODataDeserializer getDeserializer();
 
-    } catch (final Exception e) {
-      throw new RuntimeException(e);
-    }
-    return instance;
-  }
+  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/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataError.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataError.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataError.java
new file mode 100644
index 0000000..4e45cfd
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/ODataError.java
@@ -0,0 +1,67 @@
+/*
+ * 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.odata4.client.api;
+
+/**
+ * OData error.
+ */
+public interface ODataError {
+
+  /**
+   * Gets error code.
+   *
+   * @return error code.
+   */
+  String getCode();
+
+  /**
+   * Gets error message language.
+   *
+   * @return error message language.
+   */
+  String getMessageLang();
+
+  /**
+   * Gets error message.
+   *
+   * @return error message.
+   */
+  String getMessageValue();
+
+  /**
+   * Gets inner error message.
+   *
+   * @return inner error message.
+   */
+  String getInnerErrorMessage();
+
+  /**
+   * Gets inner error type.
+   *
+   * @return inner error type.
+   */
+  String getInnerErrorType();
+
+  /**
+   * Gets inner error stack-trace.
+   *
+   * @return inner error stack-trace
+   */
+  String getInnerErrorStacktrace();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataDeserializer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataDeserializer.java
new file mode 100644
index 0000000..8884a58
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataDeserializer.java
@@ -0,0 +1,90 @@
+/*
+ * 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.odata4.client.api.data;
+
+import java.io.InputStream;
+import java.io.Serializable;
+import org.apache.olingo.odata4.client.api.edm.Edmx;
+import org.w3c.dom.Element;
+
+/**
+ * Utility class for serialization.
+ */
+public interface ODataDeserializer extends Serializable {
+
+  Edmx toMetadata(InputStream input);
+
+  /**
+   * Gets the ServiceDocumentResource object represented by the given InputStream.
+   *
+   * @param input stream to be de-serialized.
+   * @param format OData service document format.
+   * @return ServiceDocumentResource object.
+   */
+//    ServiceDocument toServiceDocument(InputStream input, ODataFormat format);
+  /**
+   * Gets a feed object from the given InputStream.
+   *
+   * @param <T> reference class type
+   * @param input stream to be de-serialized.
+   * @param reference reference class (AtomFeed.class, JSONFeed.class).
+   * @return FeedResource instance.
+   */
+//    <T extends Feed> T toFeed(InputStream input, Class<T> reference);
+  /**
+   * Gets an entry object from the given InputStream.
+   *
+   * @param <T> reference class type
+   * @param input stream to be de-serialized.
+   * @param reference reference class (AtomEntry.class, JSONV3Entry.class).
+   * @return EntryResource instance.
+   */
+//    <T extends Entry> T toEntry(InputStream input, Class<T> reference);
+  /**
+   * Gets a DOM representation of the given InputStream.
+   *
+   * @param input stream to be de-serialized.
+   * @param format OData format.
+   * @return DOM.
+   */
+//  Element toPropertyDOM(InputStream input, ODataFormat format);
+  /**
+   * Gets a list of links from the given InputStream.
+   *
+   * @param input stream to be de-serialized.
+   * @param format OData format.
+   * @return de-serialized links.
+   */
+//    LinkCollection toLinkCollection(InputStream input, ODataFormat format);
+  /**
+   * Gets the ODataError object represented by the given InputStream.
+   *
+   * @param input stream to be parsed and de-serialized.
+   * @param isXML 'TRUE' if the error is represented by XML; 'FALSE' otherwise.
+   * @return
+   */
+//  ODataError toODataError(InputStream input, boolean isXML);
+  /**
+   * Parses the given input into a DOM tree.
+   *
+   * @param input stream to be parsed and de-serialized.
+   * @return DOM tree
+   */
+  Element toDOM(InputStream input);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataReader.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataReader.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataReader.java
new file mode 100644
index 0000000..df0ec9a
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataReader.java
@@ -0,0 +1,102 @@
+/*
+ * 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.odata4.client.api.data;
+
+import java.io.InputStream;
+import java.io.Serializable;
+import org.apache.olingo.odata4.client.api.ODataError;
+import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
+
+/**
+ * OData reader.
+ * <br/>
+ * Use this class to de-serialize an OData response body.
+ * <br/>
+ * This class provides method helpers to de-serialize an entire feed, a set of entities and a single entity as well.
+ */
+public interface ODataReader extends Serializable {
+
+  /**
+   * Parses a stream into metadata representation.
+   *
+   * @param input stream to de-serialize.
+   * @return metadata representation.
+   */
+  EdmMetadata readMetadata(InputStream input);
+
+  /**
+   * Parses an OData service document.
+   *
+   * @param input stream to de-serialize.
+   * @param format de-serialize as XML or JSON
+   * @return List of URIs.
+   */
+  //ODataServiceDocument readServiceDocument(InputStream input, ODataFormat format);
+  /**
+   * De-Serializes a stream into an OData entity set.
+   *
+   * @param input stream to de-serialize.
+   * @param format de-serialize as AtomFeed or JSONFeed
+   * @return de-serialized entity set.
+   */
+  //ODataEntitySet readEntitySet(InputStream input, ODataPubFormat format);
+  /**
+   * Parses a stream taking care to de-serializes the first OData entity found.
+   *
+   * @param input stream to de-serialize.
+   * @param format de-serialize as AtomEntry or JSONEntry
+   * @return entity de-serialized.
+   */
+  //ODataEntity readEntity(InputStream input, ODataPubFormat format);
+  /**
+   * Parses a stream taking care to de-serialize the first OData entity property found.
+   *
+   * @param input stream to de-serialize.
+   * @param format de-serialize as XML or JSON
+   * @return OData entity property de-serialized.
+   */
+  //ODataProperty readProperty(InputStream input, ODataFormat format);
+  /**
+   * Parses a $links request response.
+   *
+   * @param input stream to de-serialize.
+   * @param format de-serialize as XML or JSON
+   * @return List of URIs.
+   */
+  //ODataLinkCollection readLinks(InputStream input, ODataFormat format);
+  /**
+   * Parses a stream into an OData error.
+   *
+   * @param inputStream stream to de-serialize.
+   * @param isXML 'TRUE' if the error is in XML format.
+   * @return OData error.
+   */
+//  ODataError readError(InputStream inputStream, boolean isXML);
+
+  /**
+   * Parses a stream into the object type specified by the given reference.
+   *
+   * @param <T> expected object type.
+   * @param src input stream.
+   * @param format format
+   * @param reference reference.
+   * @return read object.
+   */
+  //<T> T read(InputStream src, String format, Class<T> reference);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataSerializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataSerializer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataSerializer.java
new file mode 100644
index 0000000..8553371
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/data/ODataSerializer.java
@@ -0,0 +1,120 @@
+/**
+ * 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.odata4.client.api.data;
+
+import java.io.OutputStream;
+import java.io.Serializable;
+import java.io.Writer;
+import org.apache.olingo.odata4.client.api.format.ODataFormat;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Utility class for serialization.
+ */
+public interface ODataSerializer extends Serializable {
+
+    /**
+     * Writes <tt>FeedResource</tt> object onto the given stream.
+     *
+     * @param <T> feed resource type.
+     * @param obj object to be streamed.
+     * @param out output stream.
+     */
+//    <T extends Feed> void feed(T obj, OutputStream out);
+
+    /**
+     * Writes <tt>FeedResource</tt> object by the given writer.
+     *
+     * @param <T> feed resource type.
+     * @param obj object to be streamed.
+     * @param writer writer.
+     */
+//    <T extends Feed> void feed(T obj, Writer writer);
+
+    /**
+     * Writes <tt>EntryResource</tt> object onto the given stream.
+     *
+     * @param <T> entry resource type.
+     * @param obj object to be streamed.
+     * @param out output stream.
+     */
+//    <T extends Entry> void entry(T obj, OutputStream out);
+
+    /**
+     * Writes <tt>EntryResource</tt> object by the given writer.
+     *
+     * @param <T> entry resource type.
+     * @param obj object to be streamed.
+     * @param writer writer.
+     */
+//    <T extends Entry> void entry(T obj, Writer writer);
+
+    /**
+     * Writes entry content onto the given stream.
+     *
+     * @param element element to be streamed.
+     * @param format streaming format.
+     * @param out output stream.
+     */
+//    void property(Element element, ODataFormat format, OutputStream out);
+
+    /**
+     * Writes entry content by the given writer.
+     *
+     * @param element element to be streamed.
+     * @param format streaming format.
+     * @param writer writer.
+     */
+//    void property(Element element, ODataFormat format, Writer writer);
+
+    /**
+     * Writes OData link onto the given stream.
+     *
+     * @param link OData link to be streamed.
+     * @param format streaming format.
+     * @param out output stream.
+     */
+//    void link(ODataLink link, ODataFormat format, OutputStream out);
+
+    /**
+     * Writes OData link by the given writer.
+     *
+     * @param link OData link to be streamed.
+     * @param format streaming format.
+     * @param writer writer.
+     */
+//    void link(ODataLink link, ODataFormat format, Writer writer);
+
+    /**
+     * Writes DOM object onto the given stream.
+     *
+     * @param content DOM to be streamed.
+     * @param out output stream.
+     */
+    void dom(Node content, OutputStream out);
+
+    /**
+     * Writes DOM object by the given writer.
+     *
+     * @param content DOM to be streamed.
+     * @param writer writer.
+     */
+    void dom(Node content, Writer writer);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
new file mode 100644
index 0000000..3771d5c
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
@@ -0,0 +1,32 @@
+/*
+ * 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.odata4.client.api.edm;
+
+import java.util.List;
+
+public interface ComplexType {
+
+  String getName();
+
+  void setName(String name);
+
+  public abstract List<? extends Property> getProperties();
+
+  public abstract Property getProperty(String name);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
new file mode 100644
index 0000000..a75515d
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
@@ -0,0 +1,59 @@
+/*
+ * 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.odata4.client.api.edm;
+
+import java.util.List;
+
+/**
+ * Entry point for access information about EDM metadata.
+ */
+public interface EdmMetadata {
+
+  /**
+   * Checks whether the given key is a valid namespace or alias in the EdM metadata document.
+   *
+   * @param key namespace or alias
+   * @return true if key is valid namespace or alias
+   */
+  boolean isNsOrAlias(String key);
+
+  /**
+   * Returns the Schema at the specified position in the EdM metadata document.
+   *
+   * @param index index of the Schema to return
+   * @return the Schema at the specified position in the EdM metadata document
+   */
+  Schema getSchema(final int index);
+
+  /**
+   * Returns the Schema with the specified key (namespace or alias) in the EdM metadata document.
+   *
+   * @param key namespace or alias
+   * @return the Schema with the specified key in the EdM metadata document
+   */
+  Schema getSchema(final String key);
+
+  /**
+   * Returns all Schema objects defined in the EdM metadata document.
+   *
+   * @return all Schema objects defined in the EdM metadata document
+   */
+  List<? extends Schema> getSchemas();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java
new file mode 100644
index 0000000..df5250b
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java
@@ -0,0 +1,23 @@
+/*
+ * 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.odata4.client.api.edm;
+
+public interface Edmx {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
new file mode 100644
index 0000000..e497d3e
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.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.odata4.client.api.edm;
+
+public interface EntityContainer {
+  
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
new file mode 100644
index 0000000..ca903e9
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
@@ -0,0 +1,23 @@
+/*
+ * 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.odata4.client.api.edm;
+
+public interface EntityKey {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
new file mode 100644
index 0000000..de64e11
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
@@ -0,0 +1,23 @@
+/*
+ * 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.odata4.client.api.edm;
+
+public interface EntitySet {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4f927e76/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
new file mode 100644
index 0000000..c769b27
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
@@ -0,0 +1,23 @@
+/*
+ * 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.odata4.client.api.edm;
+
+public interface EntityType {
+
+}