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:26 UTC

[37/50] [abbrv] [OLINGO-200] Moving Atom and JSON (de)serializer to commons

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
deleted file mode 100644
index 461e829..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
+++ /dev/null
@@ -1,172 +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.core.edm;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmComplexType;
-import org.apache.olingo.commons.api.edm.EdmEntityType;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class EdmTypeInfo {
-
-  private static final Logger LOG = LoggerFactory.getLogger(EdmTypeInfo.class);
-
-  public static class Builder {
-
-    private String typeExpression;
-
-    private String defaultNamespace;
-
-    private Edm edm;
-
-    public Builder setTypeExpression(final String typeExpression) {
-      this.typeExpression = typeExpression;
-      return this;
-    }
-
-    public Builder setDefaultNamespace(final String defaultNamespace) {
-      this.defaultNamespace = defaultNamespace;
-      return this;
-    }
-
-    public Builder setEdm(final Edm edm) {
-      this.edm = edm;
-      return this;
-    }
-
-    public EdmTypeInfo build() {
-      return new EdmTypeInfo(edm, typeExpression.indexOf('.') == -1
-              ? defaultNamespace + "." + typeExpression
-              : typeExpression);
-    }
-  }
-
-  private final Edm edm;
-
-  private final String typeExpression;
-
-  private final boolean collection;
-
-  private final FullQualifiedName fullQualifiedName;
-
-  private EdmPrimitiveTypeKind primitiveType;
-
-  private EdmEnumType enumType;
-
-  private EdmComplexType complexType;
-
-  private EdmEntityType entityType;
-
-  private EdmTypeInfo(final Edm edm, final String typeExpression) {
-    this.edm = edm;
-    this.typeExpression = typeExpression;
-
-    String baseType;
-    final int collStartIdx = typeExpression.indexOf("Collection(");
-    final int collEndIdx = typeExpression.lastIndexOf(')');
-    if (collStartIdx == -1) {
-      baseType = typeExpression;
-      this.collection = false;
-    } else {
-      if (collEndIdx == -1) {
-        throw new IllegalArgumentException("Malformed type: " + typeExpression);
-      }
-
-      this.collection = true;
-      baseType = typeExpression.substring(collStartIdx + 11, collEndIdx);
-    }
-
-    final int lastDotIdx = baseType.lastIndexOf('.');
-    if (lastDotIdx == -1) {
-      throw new IllegalArgumentException("Cannot find namespace or alias in " + typeExpression);
-    }
-    final String namespace = baseType.substring(0, lastDotIdx);
-    final String typeName = baseType.substring(lastDotIdx + 1);
-    if (StringUtils.isBlank(typeName)) {
-      throw new IllegalArgumentException("Null or empty type name in " + typeExpression);
-    }
-
-    this.fullQualifiedName = new FullQualifiedName(namespace, typeName);
-
-    try {
-      this.primitiveType = EdmPrimitiveTypeKind.valueOf(this.fullQualifiedName.getName());
-    } catch (IllegalArgumentException e) {
-      LOG.debug("{} does not appear to refer to an Edm primitive type", this.fullQualifiedName);
-    }
-    if (this.primitiveType == null && this.edm != null) {
-      this.enumType = this.edm.getEnumType(this.fullQualifiedName);
-      if (this.enumType == null) {
-        this.complexType = this.edm.getComplexType(this.fullQualifiedName);
-        if (this.complexType == null) {
-          this.entityType = this.edm.getEntityType(this.fullQualifiedName);
-        }
-      }
-    }
-  }
-
-  public String getTypeExpression() {
-    return typeExpression;
-  }
-
-  public boolean isCollection() {
-    return collection;
-  }
-
-  public FullQualifiedName getFullQualifiedName() {
-    return fullQualifiedName;
-  }
-
-  public boolean isPrimitiveType() {
-    return this.primitiveType != null;
-  }
-
-  public EdmPrimitiveTypeKind getPrimitiveTypeKind() {
-    return primitiveType;
-  }
-
-  public boolean isEnumType() {
-    return this.enumType != null;
-  }
-
-  public EdmEnumType getEnumType() {
-    return enumType;
-  }
-
-  public boolean isComplexType() {
-    return this.complexType != null;
-  }
-
-  public EdmComplexType getComplexType() {
-    return complexType;
-  }
-
-  public boolean isEntityType() {
-    return this.entityType != null;
-  }
-
-  public EdmEntityType getEntityType() {
-    return entityType;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
index 32429c0..8b7496f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
@@ -20,7 +20,7 @@ package org.apache.olingo.client.core.edm.v3;
 
 import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.client.core.edm.EdmOperationImportImpl;
-import org.apache.olingo.client.core.edm.EdmTypeInfo;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
 import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
 import org.apache.olingo.commons.api.edm.EdmActionImport;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
index 90364a8..9014c4a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.client.core.edm.EdmOperationImportImpl;
-import org.apache.olingo.client.core.edm.EdmTypeInfo;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
 import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.commons.api.edm.EdmFunction;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
index c3ff9c4..e21436f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
@@ -26,13 +26,13 @@ import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser;
 
 import java.io.IOException;
 
-import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.client.core.edm.xml.v4.ReturnTypeImpl;
 import org.apache.olingo.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
 public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {
 
-  protected CommonODataClient client;
+  protected ODataServiceVersion version;
 
   protected boolean isAnnotationConstExprConstruct(final JsonParser jp) throws IOException {
     return ConstExprConstructImpl.Type.fromString(jp.getCurrentName()) != null;
@@ -52,7 +52,7 @@ public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {
       returnType.setType(jp.nextTextValue());
     } else {
       jp.nextToken();
-      returnType = jp.readValueAs( ReturnTypeImpl.class);
+      returnType = jp.readValueAs(ReturnTypeImpl.class);
     }
     return returnType;
   }
@@ -64,7 +64,7 @@ public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {
   public T deserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    client = (CommonODataClient) ctxt.findInjectableValue(CommonODataClient.class.getName(), null, null);
+    version = (ODataServiceVersion) ctxt.findInjectableValue(ODataServiceVersion.class.getName(), null, null);
     return doDeserialize(jp, ctxt);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
index c9730cb..ea62ba4 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
@@ -35,7 +35,7 @@ public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractCom
   protected AbstractComplexType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractComplexType complexType = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractComplexType complexType = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.ComplexTypeImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.ComplexTypeImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesDeserializer.java
index ef2e201..c94c049 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesDeserializer.java
@@ -33,7 +33,7 @@ public class DataServicesDeserializer extends AbstractEdmDeserializer<AbstractDa
   protected AbstractDataServices doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractDataServices dataServices = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractDataServices dataServices = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.DataServicesImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.DataServicesImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
index f617d5b..1e3de6f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
@@ -34,7 +34,7 @@ public class EdmxDeserializer extends AbstractEdmDeserializer<AbstractEdmx> {
   protected AbstractEdmx doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractEdmx edmx = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractEdmx edmx = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.EdmxImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.EdmxImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
index 67735a8..f626365 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
@@ -39,7 +39,7 @@ public class EntityContainerDeserializer extends AbstractEdmDeserializer<Abstrac
   protected AbstractEntityContainer doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractEntityContainer entityContainer = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractEntityContainer entityContainer = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.EntityContainerImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
index 861ea2f..c71f4de 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
@@ -36,7 +36,7 @@ public class EntitySetDeserializer extends AbstractEdmDeserializer<AbstractEntit
   protected AbstractEntitySet doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractEntitySet entitySet = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractEntitySet entitySet = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.EntitySetImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.EntitySetImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
index 8f3c60d..a55a9e0 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
@@ -35,7 +35,7 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEnti
   protected AbstractEntityType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractEntityType entityType = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractEntityType entityType = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.EntityTypeImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.EntityTypeImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
index 9c99ea2..7a8f888 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
@@ -35,7 +35,7 @@ public class EnumTypeDeserializer extends AbstractEdmDeserializer<AbstractEnumTy
   protected AbstractEnumType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractEnumType enumType = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractEnumType enumType = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.EnumTypeImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
index 2aa3cdd..68baf15 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
@@ -35,7 +35,7 @@ public class ParameterDeserializer extends AbstractEdmDeserializer<AbstractParam
   protected AbstractParameter doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractParameter parameter = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractParameter parameter = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.ParameterImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.ParameterImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
index 8815e44..4b6c2bd 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
@@ -38,7 +38,7 @@ public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProper
   protected AbstractProperty doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractProperty property = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractProperty property = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.PropertyImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.PropertyImpl();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
index afa0a84..abdfa33 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
@@ -41,7 +41,7 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
   protected AbstractSchema doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final AbstractSchema schema = ODataServiceVersion.V30 == client.getServiceVersion()
+    final AbstractSchema schema = ODataServiceVersion.V30 == version
             ? new org.apache.olingo.client.core.edm.xml.v3.SchemaImpl()
             : new org.apache.olingo.client.core.edm.xml.v4.SchemaImpl();
 
@@ -55,11 +55,11 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
         } else if ("Using".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) schema).
-                  getUsings().add(jp.readValueAs( UsingImpl.class));
+                  getUsings().add(jp.readValueAs(UsingImpl.class));
         } else if ("Association".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) schema).
-                  getAssociations().add(jp.readValueAs( AssociationImpl.class));
+                  getAssociations().add(jp.readValueAs(AssociationImpl.class));
         } else if ("ComplexType".equals(jp.getCurrentName())) {
           jp.nextToken();
           if (schema instanceof org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) {
@@ -96,7 +96,7 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
         } else if ("ValueTerm".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) schema).
-                  getValueTerms().add(jp.readValueAs( ValueTermImpl.class));
+                  getValueTerms().add(jp.readValueAs(ValueTermImpl.class));
         } else if ("EntityContainer".equals(jp.getCurrentName())) {
           jp.nextToken();
 
@@ -105,8 +105,8 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
                     getEntityContainers().add(jp.readValueAs(
                                     org.apache.olingo.client.core.edm.xml.v3.EntityContainerImpl.class));
           } else {
-            org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl entityContainer
-                    = jp.readValueAs(
+            org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl entityContainer =
+                     jp.readValueAs(
                             org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl.class);
             entityContainer.setDefaultEntityContainer(true);
             ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).
@@ -126,19 +126,19 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
         } else if ("Action".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getActions().
-                  add(jp.readValueAs( ActionImpl.class));
+                  add(jp.readValueAs(ActionImpl.class));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotations().
-                  add(jp.readValueAs( AnnotationImpl.class));
+                  add(jp.readValueAs(AnnotationImpl.class));
         } else if ("Function".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getFunctions().
-                  add(jp.readValueAs( FunctionImpl.class));
+                  add(jp.readValueAs(FunctionImpl.class));
         } else if ("TypeDefinition".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).
-                  getTypeDefinitions().add(jp.readValueAs( TypeDefinitionImpl.class));
+                  getTypeDefinitions().add(jp.readValueAs(TypeDefinitionImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractJacksonTool.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractJacksonTool.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractJacksonTool.java
index 901b175..2d62a7d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractJacksonTool.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractJacksonTool.java
@@ -31,10 +31,8 @@ import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
 import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
 import com.fasterxml.jackson.dataformat.xml.XmlFactory;
 import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-
 import java.io.IOException;
-
-import org.apache.olingo.client.api.CommonODataClient;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -42,19 +40,19 @@ abstract class AbstractJacksonTool {
 
   protected static final Logger LOG = LoggerFactory.getLogger(AbstractJacksonTool.class);
 
-  protected final CommonODataClient client;
+  protected final ODataServiceVersion version;
 
-  protected AbstractJacksonTool(final CommonODataClient client) {
-    this.client = client;
+  protected AbstractJacksonTool(final ODataServiceVersion client) {
+    this.version = client;
   }
 
   protected ObjectMapper getObjectMapper() {
     final ObjectMapper mapper = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
 
-    mapper.setInjectableValues(new InjectableValues.Std().addValue(CommonODataClient.class, client));
+    mapper.setInjectableValues(new InjectableValues.Std().addValue(ODataServiceVersion.class, version));
 
     mapper.setSerializerProvider(new InjectableSerializerProvider(mapper.getSerializerProvider(),
-            mapper.getSerializationConfig().withAttribute(CommonODataClient.class, client),
+            mapper.getSerializationConfig().withAttribute(ODataServiceVersion.class, version),
             mapper.getSerializerFactory()));
 
     return mapper;
@@ -64,7 +62,7 @@ abstract class AbstractJacksonTool {
     final XmlMapper xmlMapper = new XmlMapper(
             new XmlFactory(new InputFactoryImpl(), new OutputFactoryImpl()), new JacksonXmlModule());
 
-    xmlMapper.setInjectableValues(new InjectableValues.Std().addValue(CommonODataClient.class, client));
+    xmlMapper.setInjectableValues(new InjectableValues.Std().addValue(ODataServiceVersion.class, version));
 
     xmlMapper.addHandler(new DeserializationProblemHandler() {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
index 4e53ce3..d2e9ede 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataBinder.java
@@ -23,14 +23,14 @@ import java.net.URI;
 import java.util.Iterator;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.data.Entry;
-import org.apache.olingo.client.api.data.Feed;
-import org.apache.olingo.client.api.data.Link;
-import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Entry;
+import org.apache.olingo.commons.api.data.Feed;
+import org.apache.olingo.commons.api.data.Link;
+import org.apache.olingo.commons.api.data.Property;
 import org.apache.olingo.client.api.data.ServiceDocument;
 import org.apache.olingo.client.api.data.ServiceDocumentItem;
-import org.apache.olingo.client.api.data.Value;
+import org.apache.olingo.commons.api.data.Value;
 import org.apache.olingo.commons.api.domain.ODataCollectionValue;
 import org.apache.olingo.commons.api.domain.ODataComplexValue;
 import org.apache.olingo.commons.api.domain.ODataEntity;
@@ -44,13 +44,13 @@ import org.apache.olingo.commons.api.domain.ODataServiceDocument;
 import org.apache.olingo.commons.api.domain.ODataValue;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
 import org.apache.olingo.client.api.op.CommonODataBinder;
-import org.apache.olingo.client.core.data.CollectionValueImpl;
-import org.apache.olingo.client.core.data.ComplexValueImpl;
-import org.apache.olingo.client.core.data.GeospatialValueImpl;
-import org.apache.olingo.client.core.data.JSONPropertyImpl;
-import org.apache.olingo.client.core.data.LinkImpl;
-import org.apache.olingo.client.core.data.NullValueImpl;
-import org.apache.olingo.client.core.data.PrimitiveValueImpl;
+import org.apache.olingo.commons.core.data.CollectionValueImpl;
+import org.apache.olingo.commons.core.data.ComplexValueImpl;
+import org.apache.olingo.commons.core.data.GeospatialValueImpl;
+import org.apache.olingo.commons.core.data.JSONPropertyImpl;
+import org.apache.olingo.commons.core.data.LinkImpl;
+import org.apache.olingo.commons.core.data.NullValueImpl;
+import org.apache.olingo.commons.core.data.PrimitiveValueImpl;
 import org.apache.olingo.client.core.uri.URIUtils;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataDeserializer.java
index 0f2ad2b..ed49ca8 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataDeserializer.java
@@ -19,23 +19,23 @@
 package org.apache.olingo.client.core.op;
 
 import java.io.InputStream;
-import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.data.Entry;
+import org.apache.olingo.commons.api.data.Entry;
 import org.apache.olingo.commons.api.domain.ODataError;
-import org.apache.olingo.client.api.data.Feed;
-import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.commons.api.data.Feed;
+import org.apache.olingo.commons.api.data.Property;
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
 import org.apache.olingo.client.api.op.CommonODataDeserializer;
-import org.apache.olingo.client.core.data.AtomDeserializer;
-import org.apache.olingo.client.core.data.AtomEntryImpl;
-import org.apache.olingo.client.core.data.AtomFeedImpl;
-import org.apache.olingo.client.core.data.AtomPropertyImpl;
-import org.apache.olingo.client.core.data.JSONEntryImpl;
-import org.apache.olingo.client.core.data.JSONErrorBundle;
-import org.apache.olingo.client.core.data.JSONFeedImpl;
-import org.apache.olingo.client.core.data.JSONPropertyImpl;
-import org.apache.olingo.client.core.data.XMLErrorImpl;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.core.data.AtomDeserializer;
+import org.apache.olingo.commons.core.data.AtomEntryImpl;
+import org.apache.olingo.commons.core.data.AtomFeedImpl;
+import org.apache.olingo.commons.core.data.AtomPropertyImpl;
+import org.apache.olingo.commons.core.data.JSONEntryImpl;
+import org.apache.olingo.commons.core.data.JSONErrorBundle;
+import org.apache.olingo.commons.core.data.JSONFeedImpl;
+import org.apache.olingo.commons.core.data.JSONPropertyImpl;
+import org.apache.olingo.commons.core.data.XMLErrorImpl;
 
 public abstract class AbstractODataDeserializer extends AbstractJacksonTool implements CommonODataDeserializer {
 
@@ -43,10 +43,10 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl
 
   private final AtomDeserializer atomDeserializer;
 
-  public AbstractODataDeserializer(final CommonODataClient client) {
-    super(client);
+  public AbstractODataDeserializer(final ODataServiceVersion version) {
+    super(version);
 
-    this.atomDeserializer = new AtomDeserializer(client.getServiceVersion());
+    this.atomDeserializer = new AtomDeserializer(version);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataReader.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataReader.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataReader.java
index abc1070..55b0d57 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataReader.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataReader.java
@@ -22,7 +22,7 @@ import java.io.InputStream;
 import org.apache.commons.io.IOUtils;
 import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.commons.api.domain.ODataError;
-import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.commons.api.data.Property;
 import org.apache.olingo.commons.api.domain.ODataEntity;
 import org.apache.olingo.commons.api.domain.ODataEntitySet;
 import org.apache.olingo.client.api.domain.ODataEntitySetIterator;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataSerializer.java
index 7a1a015..c314139 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataSerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/AbstractODataSerializer.java
@@ -24,21 +24,21 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
-import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.data.Entry;
-import org.apache.olingo.client.api.data.Feed;
-import org.apache.olingo.client.api.data.Link;
-import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.data.Entry;
+import org.apache.olingo.commons.api.data.Feed;
+import org.apache.olingo.commons.api.data.Link;
+import org.apache.olingo.commons.api.data.Property;
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.client.api.op.ODataSerializer;
-import org.apache.olingo.client.core.data.AtomEntryImpl;
-import org.apache.olingo.client.core.data.AtomFeedImpl;
-import org.apache.olingo.client.core.data.AtomPropertyImpl;
-import org.apache.olingo.client.core.data.AtomSerializer;
-import org.apache.olingo.client.core.data.JSONEntryImpl;
-import org.apache.olingo.client.core.data.JSONFeedImpl;
-import org.apache.olingo.client.core.data.JSONPropertyImpl;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.core.data.AtomEntryImpl;
+import org.apache.olingo.commons.core.data.AtomFeedImpl;
+import org.apache.olingo.commons.core.data.AtomPropertyImpl;
+import org.apache.olingo.commons.core.data.AtomSerializer;
+import org.apache.olingo.commons.core.data.JSONEntryImpl;
+import org.apache.olingo.commons.core.data.JSONFeedImpl;
+import org.apache.olingo.commons.core.data.JSONPropertyImpl;
 
 public abstract class AbstractODataSerializer extends AbstractJacksonTool implements ODataSerializer {
 
@@ -46,10 +46,10 @@ public abstract class AbstractODataSerializer extends AbstractJacksonTool implem
 
   private final AtomSerializer atomSerializer;
 
-  public AbstractODataSerializer(final CommonODataClient client) {
-    super(client);
+  public AbstractODataSerializer(final ODataServiceVersion version) {
+    super(version);
 
-    this.atomSerializer = new AtomSerializer(client.getServiceVersion());
+    this.atomSerializer = new AtomSerializer(version);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ODataObjectFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ODataObjectFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ODataObjectFactoryImpl.java
index a7bf76d..e5e7aa3 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ODataObjectFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ODataObjectFactoryImpl.java
@@ -19,7 +19,6 @@
 package org.apache.olingo.client.core.op;
 
 import java.net.URI;
-import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.commons.api.domain.ODataLinkType;
 import org.apache.olingo.commons.api.domain.ODataCollectionValue;
 import org.apache.olingo.commons.api.domain.ODataComplexValue;
@@ -32,15 +31,16 @@ import org.apache.olingo.commons.api.domain.ODataLink;
 import org.apache.olingo.commons.api.domain.ODataObjectFactory;
 import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.commons.api.domain.ODataProperty;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
 public class ODataObjectFactoryImpl implements ODataObjectFactory {
 
   private static final long serialVersionUID = -3769695665946919447L;
 
-  protected final CommonODataClient client;
+  protected final ODataServiceVersion version;
 
-  public ODataObjectFactoryImpl(final CommonODataClient client) {
-    this.client = client;
+  public ODataObjectFactoryImpl(final ODataServiceVersion version) {
+    this.version = version;
   }
 
   @Override
@@ -69,76 +69,73 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
   public ODataInlineEntitySet newInlineEntitySet(final String name, final URI link,
           final ODataEntitySet entitySet) {
 
-    return new ODataInlineEntitySet(client.getServiceVersion(),
-            link, ODataLinkType.ENTITY_SET_NAVIGATION, name, entitySet);
+    return new ODataInlineEntitySet(version, link, ODataLinkType.ENTITY_SET_NAVIGATION, name, entitySet);
   }
 
   @Override
   public ODataInlineEntitySet newInlineEntitySet(final String name, final URI baseURI, final String href,
           final ODataEntitySet entitySet) {
 
-    return new ODataInlineEntitySet(client.getServiceVersion(),
-            baseURI, href, ODataLinkType.ENTITY_SET_NAVIGATION, name, entitySet);
+    return new ODataInlineEntitySet(version, baseURI, href, ODataLinkType.ENTITY_SET_NAVIGATION, name, entitySet);
   }
 
   @Override
   public ODataInlineEntity newInlineEntity(final String name, final URI link, final ODataEntity entity) {
-    return new ODataInlineEntity(client.getServiceVersion(), link, ODataLinkType.ENTITY_NAVIGATION, name, entity);
+    return new ODataInlineEntity(version, link, ODataLinkType.ENTITY_NAVIGATION, name, entity);
   }
 
   @Override
   public ODataInlineEntity newInlineEntity(final String name, final URI baseURI, final String href,
           final ODataEntity entity) {
 
-    return new ODataInlineEntity(client.getServiceVersion(),
-            baseURI, href, ODataLinkType.ENTITY_NAVIGATION, name, entity);
+    return new ODataInlineEntity(version, baseURI, href, ODataLinkType.ENTITY_NAVIGATION, name, entity);
   }
 
   @Override
   public ODataLink newEntityNavigationLink(final String name, final URI link) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+    return new ODataLink.Builder().setVersion(version).setURI(link).
             setType(ODataLinkType.ENTITY_NAVIGATION).setTitle(name).build();
   }
 
   @Override
   public ODataLink newEntityNavigationLink(final String name, final URI baseURI, final String href) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+    return new ODataLink.Builder().setVersion(version).setURI(baseURI, href).
             setType(ODataLinkType.ENTITY_NAVIGATION).setTitle(name).build();
   }
 
   @Override
   public ODataLink newFeedNavigationLink(final String name, final URI link) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+    return new ODataLink.Builder().setVersion(version).setURI(link).
             setType(ODataLinkType.ENTITY_SET_NAVIGATION).setTitle(name).build();
   }
 
   @Override
   public ODataLink newFeedNavigationLink(final String name, final URI baseURI, final String href) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+    return new ODataLink.Builder().setVersion(version).setURI(baseURI, href).
             setType(ODataLinkType.ENTITY_SET_NAVIGATION).setTitle(name).build();
   }
 
   @Override
   public ODataLink newAssociationLink(final String name, final URI link) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+    return new ODataLink.Builder().setVersion(version).setURI(link).
             setType(ODataLinkType.ASSOCIATION).setTitle(name).build();
   }
 
   @Override
   public ODataLink newAssociationLink(final String name, final URI baseURI, final String href) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+    return new ODataLink.Builder().setVersion(version).setURI(baseURI, href).
             setType(ODataLinkType.ASSOCIATION).setTitle(name).build();
   }
 
   @Override
   public ODataLink newMediaEditLink(final String name, final URI link) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+    return new ODataLink.Builder().setVersion(version).setURI(link).
             setType(ODataLinkType.MEDIA_EDIT).setTitle(name).build();
   }
 
   @Override
   public ODataLink newMediaEditLink(final String name, final URI baseURI, final String href) {
-    return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+    return new ODataLink.Builder().setVersion(version).setURI(baseURI, href).
             setType(ODataLinkType.MEDIA_EDIT).setTitle(name).build();
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ResourceFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ResourceFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ResourceFactory.java
index 8b44e2b..525114e 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ResourceFactory.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/ResourceFactory.java
@@ -18,16 +18,16 @@
  */
 package org.apache.olingo.client.core.op;
 
-import org.apache.olingo.client.api.data.Entry;
-import org.apache.olingo.client.api.data.Feed;
-import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.commons.api.data.Entry;
+import org.apache.olingo.commons.api.data.Feed;
+import org.apache.olingo.commons.api.data.Property;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
-import org.apache.olingo.client.core.data.AtomEntryImpl;
-import org.apache.olingo.client.core.data.AtomFeedImpl;
-import org.apache.olingo.client.core.data.AtomPropertyImpl;
-import org.apache.olingo.client.core.data.JSONEntryImpl;
-import org.apache.olingo.client.core.data.JSONFeedImpl;
-import org.apache.olingo.client.core.data.JSONPropertyImpl;
+import org.apache.olingo.commons.core.data.AtomEntryImpl;
+import org.apache.olingo.commons.core.data.AtomFeedImpl;
+import org.apache.olingo.commons.core.data.AtomPropertyImpl;
+import org.apache.olingo.commons.core.data.JSONEntryImpl;
+import org.apache.olingo.commons.core.data.JSONFeedImpl;
+import org.apache.olingo.commons.core.data.JSONPropertyImpl;
 
 public class ResourceFactory {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataBinderImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataBinderImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataBinderImpl.java
index ba9f7c2..3c5f5a4 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataBinderImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataBinderImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.client.core.op.impl.v3;
 
-import org.apache.olingo.client.api.data.v3.LinkCollection;
+import org.apache.olingo.commons.api.data.v3.LinkCollection;
 import org.apache.olingo.client.api.domain.v3.ODataLinkCollection;
 import org.apache.olingo.client.api.op.v3.ODataBinder;
 import org.apache.olingo.client.core.op.AbstractODataBinder;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataDeserializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataDeserializerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataDeserializerImpl.java
index 0baf403..9abd8e3 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataDeserializerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataDeserializerImpl.java
@@ -21,24 +21,24 @@ package org.apache.olingo.client.core.op.impl.v3;
 import java.io.InputStream;
 
 import org.apache.olingo.client.api.data.ServiceDocument;
-import org.apache.olingo.client.api.data.v3.LinkCollection;
+import org.apache.olingo.commons.api.data.v3.LinkCollection;
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.client.api.op.v3.ODataDeserializer;
-import org.apache.olingo.client.api.v3.ODataClient;
-import org.apache.olingo.client.core.data.v3.JSONLinkCollectionImpl;
-import org.apache.olingo.client.core.data.v3.XMLLinkCollectionImpl;
+import org.apache.olingo.commons.core.data.v3.JSONLinkCollectionImpl;
+import org.apache.olingo.commons.core.data.v3.XMLLinkCollectionImpl;
 import org.apache.olingo.client.core.data.v3.JSONServiceDocumentImpl;
 import org.apache.olingo.client.core.data.v4.XMLServiceDocumentImpl;
 import org.apache.olingo.client.core.edm.xml.v3.EdmxImpl;
 import org.apache.olingo.client.core.edm.xml.v3.XMLMetadataImpl;
 import org.apache.olingo.client.core.op.AbstractODataDeserializer;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
 public class ODataDeserializerImpl extends AbstractODataDeserializer implements ODataDeserializer {
 
   private static final long serialVersionUID = -8221085862548914611L;
 
-  public ODataDeserializerImpl(final ODataClient client) {
-    super(client);
+  public ODataDeserializerImpl(final ODataServiceVersion version) {
+    super(version);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataSerializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataSerializerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataSerializerImpl.java
index 14f5a40..d1fa5f0 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataSerializerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v3/ODataSerializerImpl.java
@@ -18,15 +18,15 @@
  */
 package org.apache.olingo.client.core.op.impl.v3;
 
-import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.client.core.op.AbstractODataSerializer;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
 public class ODataSerializerImpl extends AbstractODataSerializer {
 
   private static final long serialVersionUID = -8861908250297989806L;
 
-  public ODataSerializerImpl(final CommonODataClient client) {
-    super(client);
+  public ODataSerializerImpl(final ODataServiceVersion version) {
+    super(version);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataDeserializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataDeserializerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataDeserializerImpl.java
index 3b825e2..4147901 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataDeserializerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataDeserializerImpl.java
@@ -24,19 +24,19 @@ import org.apache.olingo.client.api.data.ServiceDocument;
 import org.apache.olingo.client.api.edm.xml.v4.XMLMetadata;
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.client.api.op.v4.ODataDeserializer;
-import org.apache.olingo.client.api.v4.ODataClient;
 import org.apache.olingo.client.core.data.v4.JSONServiceDocumentImpl;
 import org.apache.olingo.client.core.data.v4.XMLServiceDocumentImpl;
 import org.apache.olingo.client.core.edm.xml.v4.EdmxImpl;
 import org.apache.olingo.client.core.edm.xml.v4.XMLMetadataImpl;
 import org.apache.olingo.client.core.op.AbstractODataDeserializer;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
 public class ODataDeserializerImpl extends AbstractODataDeserializer implements ODataDeserializer {
 
   private static final long serialVersionUID = 8593081342440470415L;
 
-  public ODataDeserializerImpl(final ODataClient client) {
-    super(client);
+  public ODataDeserializerImpl(final ODataServiceVersion version) {
+    super(version);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataSerializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataSerializerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataSerializerImpl.java
index d79b8f8..309ed91 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataSerializerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/v4/ODataSerializerImpl.java
@@ -18,15 +18,15 @@
  */
 package org.apache.olingo.client.core.op.impl.v4;
 
-import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.client.core.op.AbstractODataSerializer;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 
 public class ODataSerializerImpl extends AbstractODataSerializer {
 
   private static final long serialVersionUID = 7587265188399685309L;
 
-  public ODataSerializerImpl(final CommonODataClient client) {
-    super(client);
+  public ODataSerializerImpl(final ODataServiceVersion version) {
+    super(version);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index 095f8ae..36bb1c2 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -32,7 +32,7 @@ import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.entity.InputStreamEntity;
 import org.apache.olingo.client.api.CommonODataClient;
-import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.commons.api.edm.EdmFunctionImport;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDateTime;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java
index b7f0c3b..34d7069 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/v3/ODataClientImpl.java
@@ -56,9 +56,9 @@ public class ODataClientImpl extends AbstractODataClient implements ODataClient
 
   private final FilterFactory filterFactory = new FilterFactoryImpl();
 
-  private final ODataDeserializer deserializer = new ODataDeserializerImpl(this);
+  private final ODataDeserializer deserializer = new ODataDeserializerImpl(getServiceVersion());
 
-  private final ODataSerializer serializer = new ODataSerializerImpl(this);
+  private final ODataSerializer serializer = new ODataSerializerImpl(getServiceVersion());
 
   private final ODataReader reader = new ODataReaderImpl(this);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java
index 74c439a..ebab41a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/v4/ODataClientImpl.java
@@ -56,9 +56,9 @@ public class ODataClientImpl extends AbstractODataClient implements ODataClient
 
   private final FilterFactory filterFactory = new FilterFactoryImpl();
 
-  private final ODataDeserializer deserializer = new ODataDeserializerImpl(this);
+  private final ODataDeserializer deserializer = new ODataDeserializerImpl(getServiceVersion());
 
-  private final ODataSerializer serializer = new ODataSerializerImpl(this);
+  private final ODataSerializer serializer = new ODataSerializerImpl(getServiceVersion());
 
   private final ODataReader reader = new ODataReaderImpl(this);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
index fe3f098..21d8c5d 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
@@ -28,7 +28,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.UUID;
 import org.apache.commons.codec.binary.Base64;
-import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.domain.ODataGeospatialValue;
 import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.commons.api.domain.ODataProperty;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
index 94aab69..2e6eedf 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.client.core;
 
-import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.commons.api.Constants;
 import org.custommonkey.xmlunit.ElementNameQualifier;
 import org.w3c.dom.Element;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
index 5e7ea2f..9b4bd39 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
@@ -50,8 +50,8 @@ import org.apache.olingo.client.api.communication.response.ODataDeleteResponse;
 import org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
 import org.apache.olingo.client.api.communication.response.ODataEntityUpdateResponse;
 import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
-import org.apache.olingo.client.api.data.Entry;
-import org.apache.olingo.client.api.data.Feed;
+import org.apache.olingo.commons.api.data.Entry;
+import org.apache.olingo.commons.api.data.Feed;
 import org.apache.olingo.commons.api.domain.ODataCollectionValue;
 import org.apache.olingo.commons.api.domain.ODataComplexValue;
 import org.apache.olingo.commons.api.domain.ODataEntity;
@@ -65,8 +65,8 @@ import org.apache.olingo.commons.api.format.ODataPubFormat;
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.client.api.uri.CommonURIBuilder;
 import org.apache.olingo.client.core.uri.URIUtils;
-import org.apache.olingo.client.core.data.AtomEntryImpl;
-import org.apache.olingo.client.core.data.JSONEntryImpl;
+import org.apache.olingo.commons.core.data.AtomEntryImpl;
+import org.apache.olingo.commons.core.data.JSONEntryImpl;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.junit.BeforeClass;
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
index d34da88..548edd2 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/QueryOptionsTestITCase.java
@@ -28,14 +28,14 @@ import java.util.List;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
 import org.apache.olingo.client.api.communication.request.retrieve.ODataEntitySetRequest;
 import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
-import org.apache.olingo.client.api.data.Entry;
+import org.apache.olingo.commons.api.data.Entry;
 import org.apache.olingo.commons.api.domain.ODataEntity;
 import org.apache.olingo.commons.api.domain.ODataEntitySet;
 import org.apache.olingo.commons.api.domain.ODataInlineEntitySet;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
 import org.apache.olingo.client.api.uri.CommonURIBuilder;
 import org.apache.olingo.client.api.uri.v3.URIBuilder.InlineCount;
-import org.apache.olingo.client.core.data.AtomEntryImpl;
+import org.apache.olingo.commons.core.data.AtomEntryImpl;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
index d57c561..c3b1552 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
@@ -29,7 +29,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import org.apache.commons.io.IOUtils;
-import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.format.ODataFormat;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
new file mode 100644
index 0000000..b4c048f
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/Constants.java
@@ -0,0 +1,243 @@
+/*
+ * 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.commons.api;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.QName;
+
+/**
+ * Constant values related to the OData protocol.
+ */
+public interface Constants {
+
+  // Other stuff
+  public final static String UTF8 = "UTF-8";
+
+  public final static String METADATA = "$metadata";
+
+  public final static Integer DEFAULT_PRECISION = 40;
+
+  public final static Integer DEFAULT_SCALE = 25;
+
+  // 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 PREFIX_DATASERVICES = "d";
+
+  public static final String PREFIX_METADATA = "m";
+
+  public static final String PREFIX_GEORSS = "georss";
+
+  public static final String PREFIX_GML = "gml";
+
+  public final static String SRS_URLPREFIX = "http://www.opengis.net/def/crs/EPSG/0/";
+
+  // Link rel(s)
+  public static final String EDIT_LINK_REL = "edit";
+
+  public static final String SELF_LINK_REL = "self";
+
+  public static final String NEXT_LINK_REL = "next";
+
+  // XML elements and attributes
+  public static final String PROPERTIES = "properties";
+
+  public static final String ELEM_ELEMENT = "element";
+
+  public final static String ATTR_TYPE = "type";
+
+  public final static String ATTR_NULL = "null";
+
+  public static final String ATTR_XML_BASE = "base";
+
+  public static final QName QNAME_ATTR_XML_BASE = new QName(XMLConstants.XML_NS_URI, ATTR_XML_BASE);
+
+  public static final String ATTR_REL = "rel";
+
+  public static final String ATTR_TITLE = "title";
+
+  public static final String ATTR_METADATA = "metadata";
+
+  public static final String ATTR_HREF = "href";
+
+  public static final String ATTR_TARGET = "target";
+
+  public static final String ATTR_SRSNAME = "srsName";
+
+  public static final QName QNAME_ATTR_SRSNAME = new QName(NS_GML, ATTR_SRSNAME);
+
+  public static final String ELEM_POINT = "Point";
+
+  public static final String ELEM_MULTIPOINT = "MultiPoint";
+
+  public static final String ELEM_POINTMEMBERS = "pointMembers";
+
+  public static final QName QNAME_POINTMEMBERS = new QName(NS_GML, ELEM_POINTMEMBERS);
+
+  public static final String ELEM_LINESTRING = "LineString";
+
+  public static final QName QNAME_LINESTRING = new QName(NS_GML, ELEM_LINESTRING);
+
+  public static final String ELEM_MULTILINESTRING = "MultiCurve";
+
+  public static final String ELEM_LINESTRINGMEMBERS = "curveMembers";
+
+  public static final String ELEM_POLYGON = "Polygon";
+
+  public static final QName QNAME_POLYGON = new QName(NS_GML, ELEM_POLYGON);
+
+  public static final String ELEM_POLYGON_EXTERIOR = "exterior";
+
+  public static final QName QNAME_POLYGON_EXTERIOR = new QName(NS_GML, ELEM_POLYGON_EXTERIOR);
+
+  public static final String ELEM_POLYGON_INTERIOR = "interior";
+
+  public static final QName QNAME_POLYGON_INTERIOR = new QName(NS_GML, ELEM_POLYGON_INTERIOR);
+
+  public static final String ELEM_POLYGON_LINEARRING = "LinearRing";
+
+  public static final String ELEM_MULTIPOLYGON = "MultiSurface";
+
+  public static final String ELEM_SURFACEMEMBERS = "surfaceMembers";
+
+  public static final String ELEM_GEOCOLLECTION = "MultiGeometry";
+
+  public static final String ELEM_GEOMEMBERS = "geometryMembers";
+
+  public static final QName QNAME_GEOMEMBERS = new QName(NS_GML, ELEM_GEOMEMBERS);
+
+  public static final String ELEM_POS = "pos";
+
+  public static final String ELEM_PROPERTY = "property";
+
+  public static final String ELEM_LINKS = "links";
+
+  public static final String ELEM_URI = "uri";
+
+  // JSON stuff
+  public final static String JSON_CONTEXT = "@odata.context";
+
+  public final static String JSON_METADATA = "odata.metadata";
+
+  public final static String JSON_TYPE = "odata.type";
+
+  public final static String JSON_TYPE_SUFFIX = "@" + JSON_TYPE;
+
+  public final static String JSON_ETAG = "odata.etag";
+
+  public final static String JSON_MEDIA_ETAG = "odata.mediaETag";
+
+  public final static String JSON_MEDIA_ETAG_SUFFIX = "@" + JSON_MEDIA_ETAG;
+
+  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_MEDIAEDIT_LINK_SUFFIX = "@" + JSON_MEDIAEDIT_LINK;
+
+  public final static String JSON_MEDIA_CONTENT_TYPE = "odata.mediaContentType";
+
+  public final static String JSON_MEDIA_CONTENT_TYPE_SUFFIX = "@" + JSON_MEDIA_CONTENT_TYPE;
+
+  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_NULL = "odata.null";
+
+  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_COUNT = "odata.count";
+
+  public final static String JSON_NEXT_LINK = "odata.nextLink";
+
+  public final static String JSON_NAME = "name";
+
+  // Atom stuff
+  public final static String ATOM_ELEM_ENTRY = "entry";
+
+  public static final QName QNAME_ATOM_ELEM_ENTRY = new QName(NS_ATOM, ATOM_ELEM_ENTRY);
+
+  public final static String ATOM_ELEM_FEED = "feed";
+
+  public static final QName QNAME_ATOM_ELEM_FEED = new QName(NS_ATOM, ATOM_ELEM_FEED);
+
+  public final static String ATOM_ELEM_CATEGORY = "category";
+
+  public static final QName QNAME_ATOM_ELEM_CATEGORY = new QName(NS_ATOM, ATOM_ELEM_CATEGORY);
+
+  public static final String ATOM_ELEM_COUNT = "count";
+
+  public final static String ATOM_ELEM_ID = "id";
+
+  public static final QName QNAME_ATOM_ELEM_ID = new QName(NS_ATOM, ATOM_ELEM_ID);
+
+  public static final String ATOM_ELEM_TITLE = "title";
+
+  public static final QName QNAME_ATOM_ELEM_TITLE = new QName(NS_ATOM, ATOM_ELEM_TITLE);
+
+  public static final String ATOM_ELEM_SUMMARY = "summary";
+
+  public static final QName QNAME_ATOM_ELEM_SUMMARY = new QName(NS_ATOM, ATOM_ELEM_SUMMARY);
+
+  public static final String ATOM_ELEM_UPDATED = "updated";
+
+  public static final QName QNAME_ATOM_ELEM_UPDATED = new QName(NS_ATOM, ATOM_ELEM_UPDATED);
+
+  public final static String ATOM_ELEM_LINK = "link";
+
+  public static final QName QNAME_ATOM_ELEM_LINK = new QName(NS_ATOM, ATOM_ELEM_LINK);
+
+  public final static String ATOM_ELEM_CONTENT = "content";
+
+  public static final QName QNAME_ATOM_ELEM_CONTENT = new QName(NS_ATOM, ATOM_ELEM_CONTENT);
+
+  public static final String ATOM_ELEM_ACTION = "action";
+
+  public static final String ATOM_ELEM_INLINE = "inline";
+
+  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 = "etag";
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/CollectionValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/CollectionValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/CollectionValue.java
new file mode 100644
index 0000000..0d55671
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/CollectionValue.java
@@ -0,0 +1,27 @@
+/*
+ * 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.commons.api.data;
+
+import java.util.List;
+
+public interface CollectionValue extends Value {
+
+  @Override
+  List<Value> get();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
new file mode 100644
index 0000000..67a2f04
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/ComplexValue.java
@@ -0,0 +1,27 @@
+/*
+ * 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.commons.api.data;
+
+import java.util.List;
+
+public interface ComplexValue extends Value {
+
+  @Override
+  List<Property> get();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entry.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entry.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entry.java
new file mode 100644
index 0000000..ea73b7d
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Entry.java
@@ -0,0 +1,167 @@
+/*
+ * 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.commons.api.data;
+
+import org.apache.olingo.commons.api.domain.ODataOperation;
+import java.net.URI;
+import java.util.List;
+
+public interface Entry {
+
+  /**
+   * Gets ETag.
+   *
+   * @return ETag.
+   */
+  String getETag();
+
+  /**
+   * Gets base URI.
+   *
+   * @return base URI.
+   */
+  URI getBaseURI();
+
+  /**
+   * Gets entry type.
+   *
+   * @return entry type.
+   */
+  String getType();
+
+  /**
+   * Sets entry type.
+   *
+   * @param type entry type.
+   */
+  void setType(String type);
+
+  /**
+   * Gest entry ID.
+   *
+   * @return entry ID.
+   */
+  String getId();
+
+  /**
+   * Gets entry self link.
+   *
+   * @return self link.
+   */
+  Link getSelfLink();
+
+  /**
+   * Sets entry self link.
+   *
+   * @param selfLink self link.
+   */
+  void setSelfLink(Link selfLink);
+
+  /**
+   * Gets entry edit link.
+   *
+   * @return edit link.
+   */
+  Link getEditLink();
+
+  /**
+   * Sets entry edit link.
+   *
+   * @param editLink edit link.
+   */
+  void setEditLink(Link editLink);
+
+  /**
+   * Gets association links.
+   *
+   * @return association links.
+   */
+  List<Link> getAssociationLinks();
+
+  /**
+   * Gets navigation links.
+   *
+   * @return links.
+   */
+  List<Link> getNavigationLinks();
+
+  /**
+   * Gets media entity links.
+   *
+   * @return links.
+   */
+  List<Link> getMediaEditLinks();
+
+  /**
+   * Gets operations.
+   *
+   * @return operations.
+   */
+  List<ODataOperation> getOperations();
+
+  /**
+   * Gets properties.
+   *
+   * @return properties.
+   */
+  List<Property> getProperties();
+
+  /**
+   * Gets property with given name.
+   *
+   * @param name property name
+   * @return property with given name if found, null otherwise
+   */
+  Property getProperty(String name);
+
+  /**
+   * Gets media content type.
+   *
+   * @return media content type.
+   */
+  String getMediaContentType();
+
+  /**
+   * Gets media content resource.
+   *
+   * @return media content resource.
+   */
+  String getMediaContentSource();
+
+  /**
+   * Set media content source.
+   *
+   * @param mediaContentSource media content source.
+   */
+  void setMediaContentSource(String mediaContentSource);
+
+  /**
+   * Set media content type.
+   *
+   * @param mediaContentType media content type.
+   */
+  void setMediaContentType(String mediaContentType);
+
+  /**
+   * Checks if the current entry is a media entry.
+   *
+   * @return 'TRUE' if is a media entry; 'FALSE' otherwise.
+   */
+  boolean isMediaEntry();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Feed.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Feed.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Feed.java
new file mode 100644
index 0000000..4e98ac6
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/Feed.java
@@ -0,0 +1,75 @@
+/*
+ * 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.commons.api.data;
+
+import java.net.URI;
+import java.util.List;
+
+public interface Feed {
+
+  /**
+   * Gets base URI.
+   *
+   * @return base URI.
+   */
+  URI getBaseURI();
+
+  /**
+   * Sets number of entries.
+   *
+   * @param count number of entries
+   */
+  void setCount(Integer count);
+
+  /**
+   * Gets number of entries - if it was required.
+   *
+   * @return number of entries into the feed.
+   */
+  Integer getCount();
+
+  /**
+   * Gest feed ID.
+   *
+   * @return feed ID.
+   */
+  String getId();
+
+  /**
+   * Gets entries.
+   *
+   * @return entries.
+   */
+  List<Entry> getEntries();
+
+  /**
+   * Gets next link if exists.
+   *
+   * @return next link if exists; null otherwise.
+   */
+  URI getNext();
+
+  /**
+   * Sets next link.
+   *
+   * @param next next link.
+   */
+  void setNext(URI next);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.java
new file mode 100644
index 0000000..fa7538d
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeoUtils.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.commons.api.data;
+
+import org.apache.olingo.commons.api.Constants;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+
+public final class GeoUtils {
+
+  private GeoUtils() {
+    // Empty private constructor for static utility classes       
+  }
+
+  public static Geospatial.Dimension getDimension(final EdmPrimitiveTypeKind type) {
+    Geospatial.Dimension dimension;
+
+    switch (type) {
+      case Geography:
+      case GeographyCollection:
+      case GeographyLineString:
+      case GeographyMultiLineString:
+      case GeographyPoint:
+      case GeographyMultiPoint:
+      case GeographyPolygon:
+      case GeographyMultiPolygon:
+        dimension = Geospatial.Dimension.GEOGRAPHY;
+        break;
+
+      default:
+        dimension = Geospatial.Dimension.GEOMETRY;
+    }
+
+    return dimension;
+  }
+
+  public static EdmPrimitiveTypeKind getType(final Geospatial.Dimension dimension, final String elementName) {
+    EdmPrimitiveTypeKind type = null;
+
+    if (Constants.ELEM_POINT.equals(elementName)) {
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyPoint
+              : EdmPrimitiveTypeKind.GeometryPoint;
+    } else if (Constants.ELEM_MULTIPOINT.equals(elementName)) {
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyMultiPoint
+              : EdmPrimitiveTypeKind.GeometryMultiPoint;
+    } else if (Constants.ELEM_LINESTRING.equals(elementName)) {
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyLineString
+              : EdmPrimitiveTypeKind.GeometryLineString;
+    } else if (Constants.ELEM_MULTILINESTRING.equals(elementName)) {
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyMultiLineString
+              : EdmPrimitiveTypeKind.GeometryMultiLineString;
+    } else if (Constants.ELEM_POLYGON.equals(elementName)) {
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyPolygon
+              : EdmPrimitiveTypeKind.GeometryPolygon;
+    } else if (Constants.ELEM_MULTIPOLYGON.equals(elementName)) {
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyMultiPolygon
+              : EdmPrimitiveTypeKind.GeometryMultiPolygon;
+    } else if (Constants.ELEM_GEOCOLLECTION.equals(elementName)
+            || Constants.ELEM_GEOMEMBERS.equals(elementName)) {
+
+      type = dimension == Geospatial.Dimension.GEOGRAPHY
+              ? EdmPrimitiveTypeKind.GeographyCollection
+              : EdmPrimitiveTypeKind.GeometryCollection;
+    }
+
+    return type;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/fac84b3e/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeospatialValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeospatialValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeospatialValue.java
new file mode 100644
index 0000000..08dcf4b
--- /dev/null
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/data/GeospatialValue.java
@@ -0,0 +1,28 @@
+/*
+ * 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.commons.api.data;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+
+public interface GeospatialValue extends Value {
+
+  @Override
+  Geospatial get();
+
+}