You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/03/17 14:21:31 UTC

[6/8] olingo-odata4 git commit: [OLINGO-575] Merge edm provider classes

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationImpl.java
index 1489f2e..c482877 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationImpl.java
@@ -21,13 +21,13 @@ package org.apache.olingo.client.core.edm.xml;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.annotation.AnnotationExpression;
+import org.apache.olingo.commons.api.edm.provider.Annotation;
+import org.apache.olingo.commons.api.edm.provider.annotation.AnnotationExpression;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = AnnotationDeserializer.class)
-public class AnnotationImpl extends AbstractEdmItem implements Annotation {
+public class AnnotationImpl extends Annotation {
 
   private static final long serialVersionUID = 5464714417411058033L;
 
@@ -49,8 +49,9 @@ public class AnnotationImpl extends AbstractEdmItem implements Annotation {
     return term;
   }
 
-  public void setTerm(final String term) {
+  public AnnotationImpl setTerm(final String term) {
     this.term = term;
+    return this;
   }
 
   @Override
@@ -58,8 +59,9 @@ public class AnnotationImpl extends AbstractEdmItem implements Annotation {
     return qualifier;
   }
 
-  public void setQualifier(final String qualifier) {
+  public AnnotationImpl setQualifier(final String qualifier) {
     this.qualifier = qualifier;
+    return this;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationsImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationsImpl.java
index e5450fe..053fdf2 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationsImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AnnotationsImpl.java
@@ -18,59 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.olingo.commons.api.edm.provider.Annotations;
 
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.Annotations;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = AnnotationsDeserializer.class)
-public class AnnotationsImpl extends AbstractEdmItem implements Annotations {
+public class AnnotationsImpl extends Annotations {
 
   private static final long serialVersionUID = -5961207981571644200L;
 
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @JsonProperty(value = "Target", required = true)
-  private String target;
-
-  @JsonProperty("Qualifier")
-  private String qualifier;
-
-  @Override
-  public String getTarget() {
-    return target;
-  }
-
-  public void setTarget(final String target) {
-    this.target = target;
-  }
-
-  @Override
-  public String getQualifier() {
-    return qualifier;
-  }
-
-  public void setQualifier(final String qualifier) {
-    this.qualifier = qualifier;
-  }
-  
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public Annotation getAnnotation(final String term) {
-    Annotation result = null;
-    for (Annotation annotation : getAnnotations()) {
-      if (term.equals(annotation.getTerm())) {
-        result = annotation;
-      }
-    }
-    return result;
-  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/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 fe143ec..65077dc 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
@@ -27,10 +27,10 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 
-public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractStructuralType> {
+public class ComplexTypeDeserializer extends AbstractEdmDeserializer<ComplexTypeImpl> {
 
   @Override
-  protected AbstractStructuralType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+  protected ComplexTypeImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
       throws IOException, JsonProcessingException {
 
     final ComplexTypeImpl complexType = new ComplexTypeImpl();
@@ -41,7 +41,7 @@ public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractStr
         if ("Name".equals(jp.getCurrentName())) {
           complexType.setName(jp.nextTextValue());
         } else if ("Abstract".equals(jp.getCurrentName())) {
-          complexType.setAbstractEntityType(BooleanUtils.toBoolean(jp.nextTextValue()));
+          complexType.setAbstract(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("BaseType".equals(jp.getCurrentName())) {
           complexType.setBaseType(jp.nextTextValue());
         } else if ("OpenType".equals(jp.getCurrentName())) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeImpl.java
index fdd499d..dd89b02 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeImpl.java
@@ -18,83 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.ComplexType;
-import org.apache.olingo.client.api.edm.xml.NavigationProperty;
-import org.apache.olingo.client.api.edm.xml.Property;
+import org.apache.olingo.commons.api.edm.provider.ComplexType;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = ComplexTypeDeserializer.class)
-public class ComplexTypeImpl extends AbstractStructuralType implements ComplexType {
+public class ComplexTypeImpl extends ComplexType {
 
   private static final long serialVersionUID = 4076944306925840115L;
 
-  private boolean abstractEntityType = false;
-
-  private String baseType;
-
-  private boolean openType = false;
-
-  private final List<Property> properties = new ArrayList<Property>();
-
-  private final List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public boolean isAbstractType() {
-    return abstractEntityType;
-  }
-
-  public void setAbstractEntityType(final boolean abstractEntityType) {
-    this.abstractEntityType = abstractEntityType;
-  }
-
-  @Override
-  public String getBaseType() {
-    return baseType;
-  }
-
-  public void setBaseType(final String baseType) {
-    this.baseType = baseType;
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return openType;
-  }
-
-  public void setOpenType(final boolean openType) {
-    this.openType = openType;
-  }
-
-  @Override
-  public Property getProperty(final String name) {
-    return super.getProperty(name);
-  }
-
-  @Override
-  public List<Property> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public NavigationProperty getNavigationProperty(final String name) {
-    return super.getNavigationProperty(name);
-  }
-
-  @Override
-  public List<NavigationProperty> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesImpl.java
index 00460a7..208f77b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/DataServicesImpl.java
@@ -22,7 +22,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.olingo.client.api.edm.xml.DataServices;
-import org.apache.olingo.client.api.edm.xml.Schema;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
+import org.apache.olingo.commons.api.edm.provider.Schema;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxImpl.java
index eaa658a..5836704 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxImpl.java
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.olingo.client.api.edm.xml.DataServices;
 import org.apache.olingo.client.api.edm.xml.Edmx;
 import org.apache.olingo.client.api.edm.xml.Reference;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/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 3a308e0..c778f43 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
@@ -20,8 +20,6 @@ package org.apache.olingo.client.core.edm.xml;
 
 import java.io.IOException;
 
-import org.apache.commons.lang3.BooleanUtils;
-
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
@@ -41,9 +39,7 @@ public class EntityContainerDeserializer extends AbstractEdmDeserializer<EntityC
         if ("Name".equals(jp.getCurrentName())) {
           entityContainer.setName(jp.nextTextValue());
         } else if ("Extends".equals(jp.getCurrentName())) {
-          entityContainer.setExtends(jp.nextTextValue());
-        } else if ("LazyLoadingEnabled".equals(jp.getCurrentName())) {
-          entityContainer.setLazyLoadingEnabled(BooleanUtils.toBoolean(jp.nextTextValue()));
+          entityContainer.setExtendsContainer(jp.nextTextValue());
         } else if ("EntitySet".equals(jp.getCurrentName())) {
           jp.nextToken();
           entityContainer.getEntitySets().add(jp.readValueAs(EntitySetImpl.class));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerImpl.java
index ac503e9..c44e640 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerImpl.java
@@ -18,149 +18,12 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.ActionImport;
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.EntityContainer;
-import org.apache.olingo.client.api.edm.xml.EntitySet;
-import org.apache.olingo.client.api.edm.xml.FunctionImport;
-import org.apache.olingo.client.api.edm.xml.Singleton;
+import org.apache.olingo.commons.api.edm.provider.EntityContainer;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = EntityContainerDeserializer.class)
-public class EntityContainerImpl extends AbstractEdmItem implements EntityContainer {
+public class EntityContainerImpl extends EntityContainer {
 
   private static final long serialVersionUID = 5631432527646955795L;
-
-  private final List<EntitySet> entitySets = new ArrayList<EntitySet>();
-
-  private final List<Singleton> singletons = new ArrayList<Singleton>();
-
-  private final List<ActionImport> actionImports = new ArrayList<ActionImport>();
-
-  private final List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private String name;
-
-  private String _extends;
-
-  private boolean lazyLoadingEnabled;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getExtends() {
-    return _extends;
-  }
-
-  public void setExtends(final String _extends) {
-    this._extends = _extends;
-  }
-
-  @Override
-  public boolean isLazyLoadingEnabled() {
-    return lazyLoadingEnabled;
-  }
-
-  public void setLazyLoadingEnabled(final boolean lazyLoadingEnabled) {
-    this.lazyLoadingEnabled = lazyLoadingEnabled;
-  }
-
-  @Override
-  public EntitySet getEntitySet(final String name) {
-    return getOneByName(name, getEntitySets());
-  }
-  
-  /**
-   * Gets the first function import with given name.
-   *
-   * @param name name.
-   * @return function import.
-   */
-  @Override
-  public FunctionImport getFunctionImport(final String name) {
-    return getOneByName(name, getFunctionImports());
-  }
-
-  /**
-   * Gets all function imports with given name.
-   *
-   * @param name name.
-   * @return function imports.
-   */
-  @Override
-  public List<FunctionImport> getFunctionImports(final String name) {
-    return getAllByName(name, getFunctionImports());
-  }
-  
-  //TODO: No default container in V4 so we should delete this.
-  @Override
-  public boolean isDefaultEntityContainer() {
-    return true;
-  }
-
-  @Override
-  public List<EntitySet> getEntitySets() {
-    return entitySets;
-  }
-
-  @Override
-  public List<Singleton> getSingletons() {
-    return singletons;
-  }
-
-  @Override
-  public Singleton getSingleton(final String name) {
-    return getOneByName(name, getSingletons());
-  }
-
-  /**
-   * Gets the first action import with given name.
-   *
-   * @param name name.
-   * @return action import.
-   */
-  @Override
-  public ActionImport getActionImport(final String name) {
-    return getOneByName(name, getActionImports());
-  }
-
-  /**
-   * Gets all action imports with given name.
-   *
-   * @param name name.
-   * @return action imports.
-   */
-  @Override
-  public List<ActionImport> getActionImports(final String name) {
-    return getAllByName(name, getActionImports());
-  }
-
-  @Override
-  public List<ActionImport> getActionImports() {
-    return actionImports;
-  }
-
-  @Override
-  public List<FunctionImport> getFunctionImports() {
-    return functionImports;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyDeserializer.java
index e44a09f..561c3ec 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyDeserializer.java
@@ -38,7 +38,7 @@ public class EntityKeyDeserializer extends AbstractEdmDeserializer<EntityKeyImpl
 
       if (token == JsonToken.FIELD_NAME && "PropertyRef".equals(jp.getCurrentName())) {
         jp.nextToken();
-        entityKey.getPropertyRefs().add(jp.readValueAs( PropertyRefImpl.class));
+        entityKey.getPropertyRefs().add(jp.readValueAs(PropertyRefImpl.class));
       }
     }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyImpl.java
index 2d52bf9..17fd381 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityKeyImpl.java
@@ -21,19 +21,18 @@ package org.apache.olingo.client.core.edm.xml;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.olingo.client.api.edm.xml.EntityKey;
-import org.apache.olingo.client.api.edm.xml.PropertyRef;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
+import org.apache.olingo.commons.api.edm.provider.PropertyRef;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = EntityKeyDeserializer.class)
-public class EntityKeyImpl extends AbstractEdmItem implements EntityKey {
+public class EntityKeyImpl extends AbstractEdmItem {
 
   private static final long serialVersionUID = 520227585458843347L;
 
   private final List<PropertyRef> propertyRefs = new ArrayList<PropertyRef>();
 
-  @Override
   public List<PropertyRef> getPropertyRefs() {
     return propertyRefs;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/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 bae65b3..53cec31 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
@@ -21,7 +21,7 @@ package org.apache.olingo.client.core.edm.xml;
 import java.io.IOException;
 
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.client.api.edm.xml.EntitySet;
+import org.apache.olingo.commons.api.edm.provider.EntitySet;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -42,7 +42,7 @@ public class EntitySetDeserializer extends AbstractEdmDeserializer<EntitySet> {
         if ("Name".equals(jp.getCurrentName())) {
           entitySet.setName(jp.nextTextValue());
         } else if ("EntityType".equals(jp.getCurrentName())) {
-          entitySet.setEntityType(jp.nextTextValue());
+          entitySet.setType(jp.nextTextValue());
         } else if ("IncludeInServiceDocument".equals(jp.getCurrentName())) {
           entitySet.setIncludeInServiceDocument(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetImpl.java
index 078af9b..d27b5a5 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetImpl.java
@@ -18,65 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.EntitySet;
-import org.apache.olingo.client.api.edm.xml.NavigationPropertyBinding;
+import org.apache.olingo.commons.api.edm.provider.EntitySet;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = EntitySetDeserializer.class)
-public class EntitySetImpl extends AbstractEdmItem implements EntitySet {
+public class EntitySetImpl extends EntitySet {
 
   private static final long serialVersionUID = -5553885465204370676L;
 
-  private boolean includeInServiceDocument = true;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>();
-
-  private String name;
-
-  private String entityType;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getEntityType() {
-    return entityType;
-  }
-
-  public void setEntityType(final String entityType) {
-    this.entityType = entityType;
-  }
-  
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return includeInServiceDocument;
-  }
-
-  public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
-    this.includeInServiceDocument = includeInServiceDocument;
-  }
-
-  @Override
-  public List<NavigationPropertyBinding> getNavigationPropertyBindings() {
-    return navigationPropertyBindings;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/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 c1639b3..df30d07 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
@@ -21,7 +21,7 @@ package org.apache.olingo.client.core.edm.xml;
 import java.io.IOException;
 
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.client.api.edm.xml.EntityType;
+import org.apache.olingo.commons.api.edm.provider.EntityType;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -42,7 +42,7 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<EntityType>
         if ("Name".equals(jp.getCurrentName())) {
           entityType.setName(jp.nextTextValue());
         } else if ("Abstract".equals(jp.getCurrentName())) {
-          entityType.setAbstractEntityType(BooleanUtils.toBoolean(jp.nextTextValue()));
+          entityType.setAbstract(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("BaseType".equals(jp.getCurrentName())) {
           entityType.setBaseType(jp.nextTextValue());
         } else if ("OpenType".equals(jp.getCurrentName())) {
@@ -51,7 +51,8 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<EntityType>
           entityType.setHasStream(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("Key".equals(jp.getCurrentName())) {
           jp.nextToken();
-          entityType.setKey(jp.readValueAs(EntityKeyImpl.class));
+          EntityKeyImpl keyImpl = jp.readValueAs(EntityKeyImpl.class);
+          entityType.setKey(keyImpl.getPropertyRefs());
         } else if ("Property".equals(jp.getCurrentName())) {
           jp.nextToken();
           entityType.getProperties().add(jp.readValueAs(PropertyImpl.class));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeImpl.java
index 217747d..548e112 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeImpl.java
@@ -18,106 +18,12 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.EntityKey;
-import org.apache.olingo.client.api.edm.xml.EntityType;
-import org.apache.olingo.client.api.edm.xml.NavigationProperty;
-import org.apache.olingo.client.api.edm.xml.Property;
+import org.apache.olingo.commons.api.edm.provider.EntityType;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = EntityTypeDeserializer.class)
-public class EntityTypeImpl extends AbstractStructuralType implements EntityType {
+public class EntityTypeImpl extends EntityType {
 
   private static final long serialVersionUID = -3986417775876689669L;
-
-  private final List<Property> properties = new ArrayList<Property>();
-
-  private final List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private boolean abstractEntityType = false;
-
-  private String baseType;
-
-  private boolean openType = false;
-
-  private boolean hasStream = false;
-
-  private EntityKeyImpl key;
-
-  @Override
-  public boolean isAbstractType() {
-    return abstractEntityType;
-  }
-
-  public void setAbstractEntityType(final boolean abstractEntityType) {
-    this.abstractEntityType = abstractEntityType;
-  }
-
-  @Override
-  public String getBaseType() {
-    return baseType;
-  }
-
-  public void setBaseType(final String baseType) {
-    this.baseType = baseType;
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return openType;
-  }
-
-  public void setOpenType(final boolean openType) {
-    this.openType = openType;
-  }
-
-  @Override
-  public EntityKeyImpl getKey() {
-    return key;
-  }
-
-  public void setKey(final EntityKey key) {
-    this.key = (EntityKeyImpl) key;
-  }
-
-  @Override
-  public boolean isHasStream() {
-    return hasStream;
-  }
-
-  public void setHasStream(final boolean hasStream) {
-    this.hasStream = hasStream;
-  }
-  
-  @Override
-  public Property getProperty(final String name) {
-    return super.getProperty(name);
-  }
-
-  @Override
-  public List<Property> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public NavigationProperty getNavigationProperty(final String name) {
-    return super.getNavigationProperty(name);
-  }
-
-  @Override
-  public List<NavigationProperty> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumMemberImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumMemberImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumMemberImpl.java
new file mode 100644
index 0000000..7af8171
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumMemberImpl.java
@@ -0,0 +1,43 @@
+/*
+ * 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.xml;
+
+import org.apache.olingo.commons.api.edm.provider.EnumMember;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class EnumMemberImpl extends EnumMember {
+
+  private static final long serialVersionUID = -6138606817225829791L;
+
+  @Override
+  @JsonProperty(value = "Name", required = true)
+  public EnumMember setName(final String name) {
+    super.setName(name);
+    return this;
+  }
+
+  @Override
+  @JsonProperty("Value")
+  public EnumMember setValue(final String value) {
+    super.setValue(value);
+    return this;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/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 8559813..0f6033a 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
@@ -46,7 +46,7 @@ public class EnumTypeDeserializer extends AbstractEdmDeserializer<EnumTypeImpl>
           enumType.setFlags(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("Member".equals(jp.getCurrentName())) {
           jp.nextToken();
-          enumType.getMembers().add(jp.readValueAs(MemberImpl.class));
+          enumType.getMembers().add(jp.readValueAs(EnumMemberImpl.class));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
           enumType.getAnnotations().add(jp.readValueAs(AnnotationImpl.class));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeImpl.java
index a95ff1a..5b01a3f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeImpl.java
@@ -18,88 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotatable;
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.EnumType;
-import org.apache.olingo.client.api.edm.xml.Member;
+import org.apache.olingo.commons.api.edm.provider.EnumType;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = EnumTypeDeserializer.class)
-public class EnumTypeImpl extends AbstractEdmItem implements EnumType, Annotatable {
+public class EnumTypeImpl extends EnumType {
 
   private static final long serialVersionUID = 9191189755592743333L;
 
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private String name;
-
-  private String underlyingType;
-
-  private boolean flags;
-
-  private final List<Member> members = new ArrayList<Member>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getUnderlyingType() {
-    return underlyingType;
-  }
-
-  public void setUnderlyingType(final String underlyingType) {
-    this.underlyingType = underlyingType;
-  }
-
-  @Override
-  public boolean isFlags() {
-    return flags;
-  }
-
-  public void setFlags(final boolean flags) {
-    this.flags = flags;
-  }
-
-  @Override
-  public Member getMember(final String name) {
-    Member result = null;
-    for (Member member : getMembers()) {
-      if (name.equals(member.getName())) {
-        result = member;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public Member getMember(final Integer value) {
-    Member result = null;
-    for (Member member : getMembers()) {
-      if (String.valueOf(value).equals(member.getValue())) {
-        result = member;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public List<Member> getMembers() {
-    return members;
-  }
-  
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImpl.java
index 9c67d09..b795cb6 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImpl.java
@@ -18,24 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import org.apache.olingo.client.api.edm.xml.Function;
+import org.apache.olingo.commons.api.edm.provider.Function;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = FunctionDeserializer.class)
-public class FunctionImpl extends ActionImpl implements Function {
+public class FunctionImpl extends Function {
 
   private static final long serialVersionUID = -5494898295282843362L;
 
-  private boolean composable = false;
-
-  @Override
-  public boolean isComposable() {
-    return composable;
-  }
-
-  public void setComposable(final boolean composable) {
-    this.composable = composable;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImportImpl.java
index 21b0d12..460c94c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/FunctionImportImpl.java
@@ -18,69 +18,12 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.FunctionImport;
+import org.apache.olingo.commons.api.edm.provider.FunctionImport;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = FunctionImportDeserializer.class)
-public class FunctionImportImpl implements FunctionImport {
+public class FunctionImportImpl extends FunctionImport {
 
   private static final long serialVersionUID = -1686801084142932402L;
-
-  private String name;
-
-  private String function;
-
-  private String entitySet;
-
-  private boolean includeInServiceDocument = false;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getFunction() {
-    return function;
-  }
-
-  public void setFunction(final String function) {
-    this.function = function;
-  }
-
-  @Override
-  public String getEntitySet() {
-    return entitySet;
-  }
-
-  @Override
-  public void setEntitySet(final String entitySet) {
-    this.entitySet = entitySet;
-  }
-
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return includeInServiceDocument;
-  }
-
-  public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
-    this.includeInServiceDocument = includeInServiceDocument;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeAnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeAnnotationsImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeAnnotationsImpl.java
index 03cd3e6..f5d7ed7 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeAnnotationsImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeAnnotationsImpl.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.client.core.edm.xml;
 
 import org.apache.olingo.client.api.edm.xml.IncludeAnnotations;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java
index 6906257..973e27f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/IncludeImpl.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.client.core.edm.xml;
 
 import org.apache.olingo.client.api.edm.xml.Include;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java
deleted file mode 100644
index 2221804..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/MemberImpl.java
+++ /dev/null
@@ -1,65 +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.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotatable;
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.Member;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MemberImpl extends AbstractEdmItem implements Member, Annotatable {
-
-  private static final long serialVersionUID = -6138606817225829791L;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty("Value")
-  private String value;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getValue() {
-    return value;
-  }
-
-  public void setValue(final String value) {
-    this.value = value;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java
index 283b0d5..cded45d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyBindingImpl.java
@@ -1,53 +1,42 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import org.apache.olingo.client.api.edm.xml.NavigationPropertyBinding;
+import org.apache.olingo.commons.api.edm.provider.NavigationPropertyBinding;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-public class NavigationPropertyBindingImpl extends AbstractEdmItem implements NavigationPropertyBinding {
+public class NavigationPropertyBindingImpl extends NavigationPropertyBinding {
 
   private static final long serialVersionUID = -7056978592235483660L;
 
-  @JsonProperty(value = "Path", required = true)
-  private String path;
-
-  @JsonProperty(value = "Target", required = true)
-  private String target;
-
   @Override
-  public String getPath() {
-    return path;
-  }
-
-  public void setPath(final String path) {
-    this.path = path;
+  @JsonProperty(value = "Path", required = true)
+  public NavigationPropertyBinding setPath(final String path) {
+    super.setPath(path);
+    return this;
   }
 
   @Override
-  public String getTarget() {
-    return target;
-  }
-
-  public void setTarget(final String target) {
-    this.target = target;
+  @JsonProperty(value = "Target", required = true)
+  public NavigationPropertyBinding setTarget(final String target) {
+    super.setTarget(target);
+    return this;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java
index 75b366e..072f3e9 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/NavigationPropertyImpl.java
@@ -1,119 +1,44 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.NavigationProperty;
-import org.apache.olingo.client.api.edm.xml.OnDelete;
-import org.apache.olingo.client.api.edm.xml.ReferentialConstraint;
+import org.apache.olingo.commons.api.edm.provider.NavigationProperty;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = NavigationPropertyDeserializer.class)
-public class NavigationPropertyImpl extends AbstractEdmItem implements NavigationProperty {
+public class NavigationPropertyImpl extends NavigationProperty {
 
   private static final long serialVersionUID = 6240231735592427582L;
 
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-  
-  @JsonProperty(value = "ContainsTarget")
-  private boolean containsTarget = false;
-  
-  private String type;
-
-  private boolean nullable = true;
-
-  private String partner;
-
-  private final List<ReferentialConstraint> referentialConstraints = new ArrayList<ReferentialConstraint>();
-
-  private OnDelete onDelete;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getPartner() {
-    return partner;
-  }
-
-  public void setPartner(final String partner) {
-    this.partner = partner;
-  }
-
-  @Override
-  public List<ReferentialConstraint> getReferentialConstraints() {
-    return referentialConstraints;
-  }
-
-  @Override
-  public OnDelete getOnDelete() {
-    return onDelete;
-  }
-
-  public void setOnDelete(final OnDelete onDelete) {
-    this.onDelete = onDelete;
-  }
-
   @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
+  @JsonProperty(value = "Name", required = true)
+  public NavigationProperty setName(final String name) {
+    super.setName(name);
+    return this;
   }
 
   @Override
-  public boolean isContainsTarget() {
-    return containsTarget;
-  }
-
-  public void setContainsTarget(final boolean containsTarget) {
-    this.containsTarget = containsTarget;
+  @JsonProperty(value = "ContainsTarget")
+  public NavigationProperty setContainsTarget(final boolean containsTarget) {
+    super.setContainsTarget(containsTarget);
+    return this;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/OnDeleteImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/OnDeleteImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/OnDeleteImpl.java
index 81b476c..9062e01 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/OnDeleteImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/OnDeleteImpl.java
@@ -18,25 +18,19 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import org.apache.olingo.client.api.edm.xml.OnDelete;
-import org.apache.olingo.client.api.edm.xml.OnDeleteAction;
+import org.apache.olingo.commons.api.edm.provider.OnDelete;
+import org.apache.olingo.commons.api.edm.provider.OnDeleteAction;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-public class OnDeleteImpl extends AbstractEdmItem implements OnDelete {
+public class OnDeleteImpl extends OnDelete {
 
   private static final long serialVersionUID = -7130889202653716784L;
 
-  @JsonProperty(value = "Action", required = true)
-  private OnDeleteAction action = OnDeleteAction.None;
-
   @Override
-  public OnDeleteAction getAction() {
-    return action;
-  }
-
-  public void setAction(final OnDeleteAction action) {
-    this.action = action;
+  @JsonProperty(value = "Action", required = true)
+  public OnDelete setAction(final OnDeleteAction action) {
+    super.setAction(action);
+    return this;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java
index 4fc1a20..e7f74db 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterImpl.java
@@ -18,102 +18,12 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.Parameter;
-import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.api.edm.provider.Parameter;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = ParameterDeserializer.class)
-public class ParameterImpl extends AbstractEdmItem implements Parameter {
+public class ParameterImpl extends Parameter {
 
   private static final long serialVersionUID = 7119478691341167904L;
-
-  private SRID srid;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private String name;
-
-  private String type;
-
-  private boolean nullable = true;
-
-  private Integer maxLength;
-
-  private Integer precision;
-
-  private Integer scale;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final Integer maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final Integer precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public Integer getScale() {
-    return scale;
-  }
-
-  public void setScale(final Integer scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public SRID getSrid() {
-    return srid;
-  }
-
-  public void setSrid(final SRID srid) {
-    this.srid = srid;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java
index 17a6b7c..697fd9c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyImpl.java
@@ -18,123 +18,11 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.Property;
-import org.apache.olingo.commons.api.edm.geo.SRID;
-
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = PropertyDeserializer.class)
-public class PropertyImpl extends AbstractEdmItem implements Property {
-
-  private static final long serialVersionUID = 4544336801968719526L;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private String name;
-
-  private String type;
-
-  private boolean nullable = true;
-
-  private String defaultValue;
-
-  private Integer maxLength;
-
-  private Integer precision;
-
-  private Integer scale;
-
-  private boolean unicode = true;
-
-  private SRID srid;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getDefaultValue() {
-    return defaultValue;
-  }
-
-  public void setDefaultValue(final String defaultValue) {
-    this.defaultValue = defaultValue;
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final Integer maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final Integer precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public Integer getScale() {
-    return scale;
-  }
-
-  public void setScale(final Integer scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public boolean isUnicode() {
-    return unicode;
-  }
-
-  public void setUnicode(final boolean unicode) {
-    this.unicode = unicode;
-  }
+public class PropertyImpl extends org.apache.olingo.commons.api.edm.provider.Property {
 
-  @Override
-  public SRID getSrid() {
-    return srid;
-  }
+  private static final long serialVersionUID = -4521766603286651372L;
 
-  public void setSrid(final SRID srid) {
-    this.srid = srid;
-  }
-  
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyRefImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyRefImpl.java
index 011b30a..5b3a41c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyRefImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyRefImpl.java
@@ -1,53 +1,42 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import org.apache.olingo.client.api.edm.xml.PropertyRef;
+import org.apache.olingo.commons.api.edm.provider.PropertyRef;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-public class PropertyRefImpl extends AbstractEdmItem implements PropertyRef {
+public class PropertyRefImpl extends PropertyRef {
 
   private static final long serialVersionUID = 1504095609268590326L;
 
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Alias")
-  private String alias;
-
   @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
+  @JsonProperty(value = "Name", required = true)
+  public PropertyRef setName(final String name) {
+    super.setName(name);
+    return this;
   }
 
   @Override
-  public String getAlias() {
-    return alias;
-  }
-
-  public void setAlias(final String alias) {
-    this.alias = alias;
+  @JsonProperty(value = "Alias")
+  public PropertyRef setAlias(final String alias) {
+    super.setAlias(alias);
+    return this;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java
index ab7a4d8..8a90c61 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferenceImpl.java
@@ -22,10 +22,11 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.olingo.client.api.edm.xml.Annotation;
 import org.apache.olingo.client.api.edm.xml.Include;
 import org.apache.olingo.client.api.edm.xml.IncludeAnnotations;
 import org.apache.olingo.client.api.edm.xml.Reference;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
+import org.apache.olingo.commons.api.edm.provider.Annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java
index fd34fce..8e7dfbb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReferentialConstraintImpl.java
@@ -1,64 +1,43 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.ReferentialConstraint;
+import org.apache.olingo.commons.api.edm.provider.ReferentialConstraint;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 
-public class ReferentialConstraintImpl extends AbstractEdmItem implements ReferentialConstraint {
+public class ReferentialConstraintImpl extends ReferentialConstraint {
 
   private static final long serialVersionUID = -5822115908069878139L;
 
-  @JsonProperty(value = "Property", required = true)
-  private String property;
-
-  @JsonProperty(value = "ReferencedProperty", required = true)
-  private String referencedProperty;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-  
   @Override
-  public String getProperty() {
-    return property;
-  }
-
-  public void setProperty(final String property) {
-    this.property = property;
+  @JsonProperty(value = "Property", required = true)
+  public ReferentialConstraint setProperty(final String property) {
+    super.setProperty(property);
+    return this;
   }
 
   @Override
-  public String getReferencedProperty() {
-    return referencedProperty;
-  }
-
-  public void setReferencedProperty(final String referencedProperty) {
-    this.referencedProperty = referencedProperty;
+  @JsonProperty(value = "ReferencedProperty", required = true)
+  public ReferentialConstraint setReferencedProperty(final String referencedProperty) {
+    super.setReferencedProperty(referencedProperty);
+    return this;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java
index 1135437..69cd715 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ReturnTypeImpl.java
@@ -18,80 +18,12 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import org.apache.olingo.client.api.edm.xml.ReturnType;
-import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.api.edm.provider.ReturnType;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = ReturnTypeDeserializer.class)
-public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
+public class ReturnTypeImpl extends ReturnType {
 
   private static final long serialVersionUID = 6261092793901735110L;
-
-  private String type;
-
-  private boolean nullable = true;
-
-  private Integer maxLength;
-
-  private Integer precision;
-
-  private Integer scale;
-
-  private SRID srid;
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final Integer maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final Integer precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public Integer getScale() {
-    return scale;
-  }
-
-  public void setScale(final Integer scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public SRID getSrid() {
-    return srid;
-  }
-
-  public void setSrid(final SRID srid) {
-    this.srid = srid;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java
index 77b7412..f1b4f93 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaImpl.java
@@ -18,261 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.client.api.edm.xml.Action;
-import org.apache.olingo.client.api.edm.xml.ActionImport;
-import org.apache.olingo.client.api.edm.xml.Annotatable;
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.Annotations;
-import org.apache.olingo.client.api.edm.xml.ComplexType;
-import org.apache.olingo.client.api.edm.xml.EntityContainer;
-import org.apache.olingo.client.api.edm.xml.EntitySet;
-import org.apache.olingo.client.api.edm.xml.EntityType;
-import org.apache.olingo.client.api.edm.xml.EnumType;
-import org.apache.olingo.client.api.edm.xml.Function;
-import org.apache.olingo.client.api.edm.xml.FunctionImport;
-import org.apache.olingo.client.api.edm.xml.Schema;
-import org.apache.olingo.client.api.edm.xml.Singleton;
-import org.apache.olingo.client.api.edm.xml.Term;
-import org.apache.olingo.client.api.edm.xml.TypeDefinition;
+import org.apache.olingo.commons.api.edm.provider.Schema;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = SchemaDeserializer.class)
-public class SchemaImpl extends AbstractEdmItem implements Schema {
+public class SchemaImpl extends Schema {
 
   private static final long serialVersionUID = 1911087363912024939L;
 
-  private final List<Action> actions = new ArrayList<Action>();
-
-  private final List<Annotations> annotationGroups = new ArrayList<Annotations>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  private final List<ComplexType> complexTypes = new ArrayList<ComplexType>();
-
-  private EntityContainer entityContainer;
-
-  private final List<EnumType> enumTypes = new ArrayList<EnumType>();
-
-  private final List<EntityType> entityTypes = new ArrayList<EntityType>();
-
-  private final List<Function> functions = new ArrayList<Function>();
-
-  private final List<Term> terms = new ArrayList<Term>();
-
-  private final List<TypeDefinition> typeDefinitions = new ArrayList<TypeDefinition>();
-
-  private Map<String, Annotatable> annotatables;
-
-  private String namespace;
-
-  private String alias;
-
-  @Override
-  public String getNamespace() {
-    return namespace;
-  }
-
-  public void setNamespace(final String namespace) {
-    this.namespace = namespace;
-  }
-
-  @Override
-  public String getAlias() {
-    return alias;
-  }
-
-  public void setAlias(final String alias) {
-    this.alias = alias;
-  }
-
-  @Override
-  public EnumType getEnumType(final String name) {
-    return getOneByName(name, getEnumTypes());
-  }
-
-  @Override
-  public ComplexType getComplexType(final String name) {
-    return getOneByName(name, getComplexTypes());
-  }
-
-  @Override
-  public EntityType getEntityType(final String name) {
-    return getOneByName(name, getEntityTypes());
-  }
-  
-  @Override
-  public List<Action> getActions() {
-    return actions;
-  }
-
-  @Override
-  public List<Action> getActions(final String name) {
-    return getAllByName(name, getActions());
-  }
-
-  @Override
-  public List<Annotations> getAnnotationGroups() {
-    return annotationGroups;
-  }
-
-  @Override
-  public Annotations getAnnotationGroup(final String target) {
-    Annotations result = null;
-    for (Annotations annots : getAnnotationGroups()) {
-      if (target.equals(annots.getTarget())) {
-        result = annots;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public Annotation getAnnotation(final String term) {
-    Annotation result = null;
-    for (Annotation annot : getAnnotations()) {
-      if (term.equals(annot.getTerm())) {
-        result = annot;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public List<Function> getFunctions() {
-    return functions;
-  }
-
-  @Override
-  public List<Function> getFunctions(final String name) {
-    return getAllByName(name, getFunctions());
-  }
-
-  @Override
-  public Term getTerm(final String name) {
-    return getOneByName(name, getTerms());
-  }
-
-  @Override
-  public List<Term> getTerms() {
-    return terms;
-  }
-
-  @Override
-  public TypeDefinition getTypeDefinition(final String name) {
-    return getOneByName(name, getTypeDefinitions());
-  }
-
-  @Override
-  public List<TypeDefinition> getTypeDefinitions() {
-    return typeDefinitions;
-  }
-
-  @Override
-  public EntityContainer getEntityContainer() {
-    return entityContainer;
-  }
-
-  public void setEntityContainer(final EntityContainerImpl entityContainer) {
-    this.entityContainer = entityContainer;
-  }
-
-  @Override
-  public List<EntityContainer> getEntityContainers() {
-    return entityContainer == null
-            ? Collections.<EntityContainer>emptyList() : Collections.singletonList(entityContainer);
-  }
-
-  @Override
-  public EntityContainer getDefaultEntityContainer() {
-    return entityContainer;
-  }
-
-  @Override
-  public EntityContainer getEntityContainer(final String name) {
-    if (entityContainer != null && name.equals(entityContainer.getName())) {
-      return entityContainer;
-    }
-    return null;
-  }
-
-  @Override
-  public List<EnumType> getEnumTypes() {
-    return enumTypes;
-  }
-
-  @Override
-  public List<ComplexType> getComplexTypes() {
-    return complexTypes;
-  }
-
-  @Override
-  public List<EntityType> getEntityTypes() {
-    return entityTypes;
-  }
-
-  @Override
-  public Map<String, Annotatable> getAnnotatables() {
-    if (annotatables == null) {
-      annotatables = new HashMap<String, Annotatable>();
-      for (Annotations annotationGroup : getAnnotationGroups()) {
-        annotatables.put(null, annotationGroup);
-      }
-      for (Annotation annotation : getAnnotations()) {
-        annotatables.put(annotation.getTerm(), annotation);
-      }
-      for (Action action : getActions()) {
-        annotatables.put(action.getName(), action);
-      }
-      for (ComplexType complexType : getComplexTypes()) {
-        annotatables.put(complexType.getName(), complexType);
-      }
-      for (EntityType entityType : getEntityTypes()) {
-        annotatables.put(entityType.getName(), entityType);
-      }
-      for (EnumType enumType : getEnumTypes()) {
-        annotatables.put(enumType.getName(), (EnumTypeImpl) enumType);
-      }
-      for (Function function : getFunctions()) {
-        annotatables.put(function.getName(), function);
-      }
-      for (Term term : getTerms()) {
-        annotatables.put(term.getName(), term);
-      }
-      for (TypeDefinition typedef : getTypeDefinitions()) {
-        annotatables.put(typedef.getName(), typedef);
-      }
-      if (entityContainer != null) {
-        annotatables.put(entityContainer.getName(), entityContainer);
-        for (Annotation annotation : entityContainer.getAnnotations()) {
-          annotatables.put(annotation.getTerm(), annotation);
-        }
-        for (ActionImport actionImport : entityContainer.getActionImports()) {
-          annotatables.put(actionImport.getName(), actionImport);
-        }
-        for (FunctionImport functionImport : entityContainer.getFunctionImports()) {
-          annotatables.put(functionImport.getName(), functionImport);
-        }
-        for (EntitySet entitySet : entityContainer.getEntitySets()) {
-          annotatables.put(entitySet.getName(), entitySet);
-        }
-        for (Singleton singleton : entityContainer.getSingletons()) {
-          annotatables.put(singleton.getName(), singleton);
-        }
-      }
-    }
-    return annotatables;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java
index 1bc3b2d..5446e8a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonDeserializer.java
@@ -39,7 +39,7 @@ public class SingletonDeserializer extends AbstractEdmDeserializer<SingletonImpl
         if ("Name".equals(jp.getCurrentName())) {
           singleton.setName(jp.nextTextValue());
         } else if ("Type".equals(jp.getCurrentName())) {
-          singleton.setEntityType(jp.nextTextValue());
+          singleton.setType(jp.nextTextValue());
         } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {
           jp.nextToken();
           singleton.getNavigationPropertyBindings().add(

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java
index 216e735..1d4c79f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SingletonImpl.java
@@ -1,77 +1,30 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.NavigationPropertyBinding;
-import org.apache.olingo.client.api.edm.xml.Singleton;
+import org.apache.olingo.commons.api.edm.provider.Singleton;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = SingletonDeserializer.class)
-public class SingletonImpl extends AbstractEdmItem implements Singleton {
+public class SingletonImpl extends Singleton {
 
   private static final long serialVersionUID = 1656749615107151921L;
 
-  private String name;
-
-  private String entityType;
-
-  private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-  
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getEntityType() {
-    return entityType;
-  }
-
-  public void setEntityType(final String entityType) {
-    this.entityType = entityType;
-  }
-
-  @Override
-  public List<NavigationPropertyBinding> getNavigationPropertyBindings() {
-    return navigationPropertyBindings;
-  }
-
-  //TODO: includeInServiceDocument is always false for singletons
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return false;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java
index 7e7b740..e039dab 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TermImpl.java
@@ -18,131 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.Term;
-import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.api.edm.provider.Term;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = TermDeserializer.class)
-public class TermImpl extends AbstractEdmItem implements Term {
+public class TermImpl extends  Term {
 
   private static final long serialVersionUID = -8350072064720586186L;
 
-  private String name;
-
-  private String type;
-
-  private String baseTerm;
-
-  private String defaultValue;
-
-  private boolean nullable = true;
-
-  private Integer maxLength;
-
-  private Integer precision;
-
-  private Integer scale;
-
-  private SRID srid;
-
-  private final List<String> appliesTo = new ArrayList<String>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-  
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public String getBaseTerm() {
-    return baseTerm;
-  }
-
-  public void setBaseTerm(final String baseTerm) {
-    this.baseTerm = baseTerm;
-  }
-
-  @Override
-  public String getDefaultValue() {
-    return defaultValue;
-  }
-
-  public void setDefaultValue(final String defaultValue) {
-    this.defaultValue = defaultValue;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final Integer maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final Integer precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public Integer getScale() {
-    return scale;
-  }
-
-  public void setScale(final Integer scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public SRID getSrid() {
-    return srid;
-  }
-
-  public void setSrid(final SRID srid) {
-    this.srid = srid;
-  }
-
-  @Override
-  public List<String> getAppliesTo() {
-    return appliesTo;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java
index 0ec8b17..346a6a8 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/TypeDefinitionImpl.java
@@ -18,102 +18,13 @@
  */
 package org.apache.olingo.client.core.edm.xml;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.api.edm.xml.Annotation;
-import org.apache.olingo.client.api.edm.xml.TypeDefinition;
-import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.api.edm.provider.TypeDefinition;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 @JsonDeserialize(using = TypeDefinitionDeserializer.class)
-public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinition {
+public class TypeDefinitionImpl extends TypeDefinition {
 
   private static final long serialVersionUID = -902407149079419602L;
 
-  private String name;
-
-  private String underlyingType;
-
-  private Integer maxLength;
-
-  private Integer precision;
-
-  private Integer scale;
-
-  private boolean unicode = true;
-
-  private SRID srid;
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getUnderlyingType() {
-    return underlyingType;
-  }
-
-  public void setUnderlyingType(final String underlyingType) {
-    this.underlyingType = underlyingType;
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final Integer maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final Integer precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public Integer getScale() {
-    return scale;
-  }
-
-  public void setScale(final Integer scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public boolean isUnicode() {
-    return unicode;
-  }
-
-  public void setUnicode(final boolean unicode) {
-    this.unicode = unicode;
-  }
-
-  @Override
-  public SRID getSrid() {
-    return srid;
-  }
-
-  public void setSrid(final SRID srid) {
-    this.srid = srid;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8a58a678/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java
index d4709b6..d7a65dd 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/XMLMetadataImpl.java
@@ -25,8 +25,9 @@ import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.client.api.edm.xml.Edmx;
 import org.apache.olingo.client.api.edm.xml.Reference;
-import org.apache.olingo.client.api.edm.xml.Schema;
 import org.apache.olingo.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.commons.api.edm.provider.AbstractEdmItem;
+import org.apache.olingo.commons.api.edm.provider.Schema;
 
 /**
  * Entry point for access information about EDM metadata.