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/02/25 12:22:08 UTC

[1/3] [OLINGO-169] Making client-api Edm interfaces less dumb

Repository: incubator-olingo-odata4
Updated Branches:
  refs/heads/olingo169 07400abc4 -> df906e43c


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
index 0cd06c4..6d91ccf 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
@@ -32,18 +32,22 @@ public class UsingImpl extends AbstractEdmItem implements Using {
   @JsonProperty("Alias")
   private String alias;
 
+  @Override
   public String getNamespace() {
     return namespace;
   }
 
+  @Override
   public void setNamespace(final String namespace) {
     this.namespace = namespace;
   }
 
+  @Override
   public String getAlias() {
     return alias;
   }
 
+  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
index bc5566f..5cdd020 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
@@ -22,9 +22,10 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Date;
+import org.apache.olingo.odata4.client.api.edm.v3.ValueAnnotation;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
-public class ValueAnnotationImpl extends AbstractEdmItem {
+public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotation {
 
   private static final long serialVersionUID = -1826414005417952278L;
 
@@ -55,74 +56,92 @@ public class ValueAnnotationImpl extends AbstractEdmItem {
   @JsonProperty("DateTime")
   private Date dateTime;
 
+  @Override
   public String getTerm() {
     return term;
   }
 
+  @Override
   public void setTerm(final String term) {
     this.term = term;
   }
 
+  @Override
   public String getQualifier() {
     return qualifier;
   }
 
+  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }
 
+  @Override
   public String getPath() {
     return path;
   }
 
+  @Override
   public void setPath(final String path) {
     this.path = path;
   }
 
+  @Override
   public String getString() {
     return string;
   }
 
+  @Override
   public void setString(final String string) {
     this.string = string;
   }
 
+  @Override
   public BigInteger getInt() {
     return _int;
   }
 
+  @Override
   public void setInt(final BigInteger _int) {
     this._int = _int;
   }
 
+  @Override
   public Double getFloat() {
     return _float;
   }
 
+  @Override
   public void setFloat(final Double _float) {
     this._float = _float;
   }
 
+  @Override
   public BigDecimal getDecimal() {
     return decimal;
   }
 
+  @Override
   public void setDecimal(final BigDecimal decimal) {
     this.decimal = decimal;
   }
 
+  @Override
   public Boolean getBool() {
     return bool;
   }
 
+  @Override
   public void setBool(final Boolean bool) {
     this.bool = bool;
   }
 
+  @Override
   public Date getDateTime() {
     return dateTime == null ? null : new Date(dateTime.getTime());
   }
 
+  @Override
   public void setDateTime(final Date dateTime) {
     this.dateTime = dateTime == null ? null : new Date(dateTime.getTime());
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
index 141d18f..3509bf3 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
@@ -32,18 +32,22 @@ public class ValueTermImpl extends AbstractEdmItem implements ValueTerm {
   @JsonProperty(value = "Type", required = true)
   private String type;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
index 77bc1cb..93ea7bc 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4;
 
+import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
index 0bfe85c..0022555 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Action;
+import org.apache.olingo.odata4.client.api.edm.v4.ReturnType;
 
 @JsonDeserialize(using = ActionDeserializer.class)
 public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
@@ -38,50 +39,54 @@ public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
 
   private ReturnTypeImpl returnType;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public boolean isBound() {
     return bound;
   }
 
+  @Override
   public void setBound(final boolean bound) {
     this.bound = bound;
   }
 
+  @Override
   public String getEntitySetPath() {
     return entitySetPath;
   }
 
+  @Override
   public void setEntitySetPath(final String entitySetPath) {
     this.entitySetPath = entitySetPath;
   }
 
-  public List<ParameterImpl> getParameters() {
-    return parameters;
+  @Override
+  public ParameterImpl getParameter(final String name) {
+    return getOneByName(name, getParameters());
   }
 
-  public ParameterImpl getParameter(final String name) {
-    ParameterImpl result = null;
-    for (ParameterImpl parameter : getParameters()) {
-      if (name.equals(parameter.getName())) {
-        result = parameter;
-      }
-    }
-    return result;
+  @Override
+  public List<ParameterImpl> getParameters() {
+    return parameters;
   }
 
+  @Override
   public ReturnTypeImpl getReturnType() {
     return returnType;
   }
 
-  public void setReturnType(final ReturnTypeImpl returnType) {
-    this.returnType = returnType;
+  @Override
+  public void setReturnType(final ReturnType returnType) {
+    this.returnType = (ReturnTypeImpl) returnType;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
index 3d4f496..0eaea3e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
@@ -19,8 +19,9 @@
 package org.apache.olingo.odata4.client.core.edm.v4;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.v4.ActionImport;
 
-public class ActionImportImpl extends AbstractAnnotatedEdmItem {
+public class ActionImportImpl extends AbstractAnnotatedEdmItem implements ActionImport {
 
   private static final long serialVersionUID = -866422101558426421L;
 
@@ -33,26 +34,32 @@ public class ActionImportImpl extends AbstractAnnotatedEdmItem {
   @JsonProperty(value = "EntitySet")
   private String entitySet;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getAction() {
     return action;
   }
 
+  @Override
   public void setAction(final String action) {
     this.action = action;
   }
 
+  @Override
   public String getEntitySet() {
     return entitySet;
   }
 
+  @Override
   public void setEntitySet(final String entitySet) {
     this.entitySet = entitySet;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotatedEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotatedEdmItem.java
deleted file mode 100644
index 7497f5a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotatedEdmItem.java
+++ /dev/null
@@ -1,28 +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.odata4.client.core.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-
-public interface AnnotatedEdmItem {
-
-  AnnotationImpl getAnnotation();
-
-  void setAnnotation(Annotation annotation);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
index 3c8448f..b89b533 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
@@ -21,7 +21,6 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotations;
 import org.apache.olingo.odata4.client.core.edm.AbstractAnnotations;
 
@@ -32,10 +31,12 @@ public class AnnotationsImpl extends AbstractAnnotations implements Annotations
 
   private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
 
+  @Override
   public List<AnnotationImpl> getAnnotations() {
     return annotations;
   }
 
+  @Override
   public AnnotationImpl getAnnotation(final String term) {
     AnnotationImpl result = null;
     for (AnnotationImpl annotation : getAnnotations()) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
index 26b9b87..8242330 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
@@ -21,9 +21,10 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.v4.ComplexType;
 import org.apache.olingo.odata4.client.core.edm.AbstractComplexType;
 
-public class ComplexTypeImpl extends AbstractComplexType implements AnnotatedEdmItem {
+public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
 
   private static final long serialVersionUID = -1251230308269425962L;
 
@@ -39,60 +40,56 @@ public class ComplexTypeImpl extends AbstractComplexType implements AnnotatedEdm
 
   private AnnotationImpl annotation;
 
+  @Override
   public boolean isAbstractEntityType() {
     return abstractEntityType;
   }
 
+  @Override
   public void setAbstractEntityType(final boolean abstractEntityType) {
     this.abstractEntityType = abstractEntityType;
   }
 
+  @Override
   public String getBaseType() {
     return baseType;
   }
 
+  @Override
   public void setBaseType(final String baseType) {
     this.baseType = baseType;
   }
 
+  @Override
   public boolean isOpenType() {
     return openType;
   }
 
+  @Override
   public void setOpenType(final boolean openType) {
     this.openType = openType;
   }
 
   @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
   public List<PropertyImpl> getProperties() {
     return properties;
   }
 
   @Override
-  public PropertyImpl getProperty(final String name) {
-    PropertyImpl result = null;
-    for (PropertyImpl property : getProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
+  public NavigationPropertyImpl getNavigationProperty(String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
   }
 
+  @Override
   public List<NavigationPropertyImpl> getNavigationProperties() {
     return navigationProperties;
   }
 
-  public NavigationPropertyImpl getNavigationProperty(final String name) {
-    NavigationPropertyImpl result = null;
-    for (NavigationPropertyImpl property : getNavigationProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
-  }
-
   @Override
   public AnnotationImpl getAnnotation() {
     return annotation;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
index 18beb3f..7af6bb8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
@@ -20,9 +20,10 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.v4.Edmx;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmx;
 
-public class EdmxImpl extends AbstractEdmx {
+public class EdmxImpl extends AbstractEdmx implements Edmx {
 
   private static final long serialVersionUID = -8031883176876401375L;
 
@@ -33,6 +34,7 @@ public class EdmxImpl extends AbstractEdmx {
     return (DataServicesImpl) super.getDataServices();
   }
 
+  @Override
   public List<ReferenceImpl> getReferences() {
     return references;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
index 738f92a..d54b81f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
@@ -18,12 +18,14 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4;
 
+import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.v4.EntityContainer;
 import org.apache.olingo.odata4.client.core.edm.AbstractEntityContainer;
 
-public class EntityContainerImpl extends AbstractEntityContainer implements AnnotatedEdmItem {
+public class EntityContainerImpl extends AbstractEntityContainer implements AnnotatedEdmItem, EntityContainer {
 
   private static final long serialVersionUID = 2526002525927260320L;
 
@@ -62,13 +64,7 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
   }
 
   public SingletonImpl getSingleton(final String name) {
-    SingletonImpl result = null;
-    for (SingletonImpl singleton : getSingletons()) {
-      if (name.equals(singleton.getName())) {
-        result = singleton;
-      }
-    }
-    return result;
+    return getOneByName(name, getSingletons());
   }
 
   @Override
@@ -88,11 +84,9 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
    * @param name name.
    * @return action import.
    */
+  @Override
   public ActionImportImpl getActionImport(final String name) {
-    final List<ActionImportImpl> actImps = getActionImports(name);
-    return actImps.isEmpty()
-            ? null
-            : actImps.get(0);
+    return getOneByName(name, getActionImports());
   }
 
   /**
@@ -101,16 +95,12 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
    * @param name name.
    * @return action imports.
    */
+  @Override
   public List<ActionImportImpl> getActionImports(final String name) {
-    final List<ActionImportImpl> result = new ArrayList<ActionImportImpl>();
-    for (ActionImportImpl actionImport : getActionImports()) {
-      if (name.equals(actionImport.getName())) {
-        result.add(actionImport);
-      }
-    }
-    return result;
+    return getAllByName(name, getActionImports());
   }
 
+  @Override
   public List<ActionImportImpl> getActionImports() {
     return actionImports;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
index 1db9c90..aa1d0f4 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
@@ -20,11 +20,11 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.NavigationPropertyBinding;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.v4.EntitySet;
 import org.apache.olingo.odata4.client.core.edm.AbstractEntitySet;
 
-public class EntitySetImpl extends AbstractEntitySet implements AnnotatedEdmItem {
+public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
 
   private static final long serialVersionUID = 5570833733884884012L;
 
@@ -32,18 +32,21 @@ public class EntitySetImpl extends AbstractEntitySet implements AnnotatedEdmItem
 
   private AnnotationImpl annotation;
 
-  private final List<NavigationPropertyBinding> navigationPropertyBindings
-          = new ArrayList<NavigationPropertyBinding>();
+  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
+          = new ArrayList<NavigationPropertyBindingImpl>();
 
+  @Override
   public boolean isIncludeInServiceDocument() {
     return includeInServiceDocument;
   }
 
+  @Override
   public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
     this.includeInServiceDocument = includeInServiceDocument;
   }
 
-  public List<NavigationPropertyBinding> getNavigationPropertyBindings() {
+  @Override
+  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
     return navigationPropertyBindings;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
index 1ec06b4..6ed2680 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
@@ -21,9 +21,10 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.v4.EntityType;
 import org.apache.olingo.odata4.client.core.edm.AbstractEntityType;
 
-public class EntityTypeImpl extends AbstractEntityType implements AnnotatedEdmItem {
+public class EntityTypeImpl extends AbstractEntityType implements EntityType {
 
   private static final long serialVersionUID = 8727765036150269547L;
 
@@ -34,19 +35,18 @@ public class EntityTypeImpl extends AbstractEntityType implements AnnotatedEdmIt
   private AnnotationImpl annotation;
 
   @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
   public List<PropertyImpl> getProperties() {
     return properties;
   }
 
   @Override
-  public PropertyImpl getProperty(final String name) {
-    PropertyImpl result = null;
-    for (PropertyImpl property : getProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
+  public NavigationPropertyImpl getNavigationProperty(final String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
   }
 
   @Override
@@ -55,17 +55,6 @@ public class EntityTypeImpl extends AbstractEntityType implements AnnotatedEdmIt
   }
 
   @Override
-  public NavigationPropertyImpl getNavigationProperty(final String name) {
-    NavigationPropertyImpl result = null;
-    for (NavigationPropertyImpl property : getNavigationProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
-  }
-
-  @Override
   public AnnotationImpl getAnnotation() {
     return annotation;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
index 5d9fb6e..766d4fd 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4;
 
+import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
index 0c4f8b9..5de1c93 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
@@ -32,31 +32,31 @@ public class FunctionDeserializer extends AbstractEdmDeserializer<FunctionImpl>
   protected FunctionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final FunctionImpl function = new FunctionImpl();
+    final FunctionImpl functionImpl = new FunctionImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
       if (token == JsonToken.FIELD_NAME) {
         if ("Name".equals(jp.getCurrentName())) {
-          function.setName(jp.nextTextValue());
+          functionImpl.setName(jp.nextTextValue());
         } else if ("IsBound".equals(jp.getCurrentName())) {
-          function.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
+          functionImpl.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("IsComposable".equals(jp.getCurrentName())) {
-          function.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
+          functionImpl.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("EntitySetPath".equals(jp.getCurrentName())) {
-          function.setEntitySetPath(jp.nextTextValue());
+          functionImpl.setEntitySetPath(jp.nextTextValue());
         } else if ("Parameter".equals(jp.getCurrentName())) {
           jp.nextToken();
-          function.getParameters().add(jp.readValueAs(ParameterImpl.class));
+          functionImpl.getParameters().add(jp.readValueAs(ParameterImpl.class));
         } else if ("ReturnType".equals(jp.getCurrentName())) {
-          function.setReturnType(parseReturnType(jp, "Function"));
+          functionImpl.setReturnType(parseReturnType(jp, "Function"));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          function.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+          functionImpl.setAnnotation(jp.readValueAs(AnnotationImpl.class));
         }
       }
     }
 
-    return function;
+    return functionImpl;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
index 5e22a7a..b9894e8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
@@ -19,20 +19,23 @@
 package org.apache.olingo.odata4.client.core.edm.v4;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.v4.Function;
 
 @JsonDeserialize(using = FunctionDeserializer.class)
-public class FunctionImpl extends ActionImpl {
+public class FunctionImpl extends ActionImpl implements Function {
 
-    private static final long serialVersionUID = -5888231162358116515L;
+  private static final long serialVersionUID = -5888231162358116515L;
 
-    private boolean composable = false;
+  private boolean composable = false;
 
-    public boolean isComposable() {
-        return composable;
-    }
+  @Override
+  public boolean isComposable() {
+    return composable;
+  }
 
-    public void setComposable(final boolean composable) {
-        this.composable = composable;
-    }
+  @Override
+  public void setComposable(final boolean composable) {
+    this.composable = composable;
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
index 5a40bca..b578599 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
@@ -21,9 +21,9 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractFunctionImport;
+import org.apache.olingo.odata4.client.api.edm.v4.FunctionImport;
 
-public class FunctionImportImpl extends AbstractFunctionImport implements AnnotatedEdmItem {
+public class FunctionImportImpl implements FunctionImport {
 
   private static final long serialVersionUID = 3023813358471000019L;
 
@@ -47,14 +47,17 @@ public class FunctionImportImpl extends AbstractFunctionImport implements Annota
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getFunction() {
     return function;
   }
 
+  @Override
   public void setFunction(final String function) {
     this.function = function;
   }
@@ -64,14 +67,17 @@ public class FunctionImportImpl extends AbstractFunctionImport implements Annota
     return entitySet;
   }
 
+  @Override
   public void setEntitySet(final String entitySet) {
     this.entitySet = entitySet;
   }
 
+  @Override
   public boolean isIncludeInServiceDocument() {
     return includeInServiceDocument;
   }
 
+  @Override
   public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
     this.includeInServiceDocument = includeInServiceDocument;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java
index 29a930c..7566733 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java
@@ -35,26 +35,32 @@ public class IncludeAnnotationsImpl extends AbstractEdmItem implements IncludeAn
   @JsonProperty(value = "TargetNamespace")
   private String targeyNamespace;
 
+  @Override
   public String getTermNamespace() {
     return termNamespace;
   }
 
+  @Override
   public void setTermNamespace(final String termNamespace) {
     this.termNamespace = termNamespace;
   }
 
+  @Override
   public String getQualifier() {
     return qualifier;
   }
 
+  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }
 
+  @Override
   public String getTargeyNamespace() {
     return targeyNamespace;
   }
 
+  @Override
   public void setTargeyNamespace(final String targeyNamespace) {
     this.targeyNamespace = targeyNamespace;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
index 8bda525..cdbe8ae 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
@@ -32,18 +32,22 @@ public class IncludeImpl extends AbstractEdmItem implements Include {
   @JsonProperty(value = "Alias")
   private String alias;
 
+  @Override
   public String getNamespace() {
     return namespace;
   }
 
+  @Override
   public void setNamespace(final String namespace) {
     this.namespace = namespace;
   }
 
+  @Override
   public String getAlias() {
     return alias;
   }
 
+  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
index 39383fa..ba6ac6b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
@@ -18,13 +18,13 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4;
 
+import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.Member;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
 import org.apache.olingo.odata4.client.core.edm.AbstractMember;
 
-public class MemberImpl extends AbstractMember implements Member, AnnotatedEdmItem {
+public class MemberImpl extends AbstractMember implements AnnotatedEdmItem {
 
   private static final long serialVersionUID = -344920557183058824L;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
index c39340b..8554bec 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.NavigationPropertyBinding;
+import org.apache.olingo.odata4.client.api.edm.v4.NavigationPropertyBinding;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
 public class NavigationPropertyBindingImpl extends AbstractEdmItem implements NavigationPropertyBinding {
@@ -32,18 +32,22 @@ public class NavigationPropertyBindingImpl extends AbstractEdmItem implements Na
   @JsonProperty(value = "Target", required = true)
   private String target;
 
+  @Override
   public String getPath() {
     return path;
   }
 
+  @Override
   public void setPath(final String path) {
     this.path = path;
   }
 
+  @Override
   public String getTarget() {
     return target;
   }
 
+  @Override
   public void setTarget(final String target) {
     this.target = target;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
index 5042680..a0a74a3 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
@@ -23,10 +23,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.v4.NavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.OnDelete;
 import org.apache.olingo.odata4.client.core.edm.AbstractNavigationProperty;
 
 @JsonDeserialize(using = NavigationPropertyDeserializer.class)
-public class NavigationPropertyImpl extends AbstractNavigationProperty implements AnnotatedEdmItem {
+public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty {
 
   private static final long serialVersionUID = -2889417442815563307L;
 
@@ -44,48 +46,59 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
 
   private AnnotationImpl annotation;
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public boolean isNullable() {
     return nullable;
   }
 
+  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
 
+  @Override
   public String getPartner() {
     return partner;
   }
 
+  @Override
   public void setPartner(final String partner) {
     this.partner = partner;
   }
 
+  @Override
   public boolean isContainsTarget() {
     return containsTarget;
   }
 
+  @Override
   public void setContainsTarget(final boolean containsTarget) {
     this.containsTarget = containsTarget;
   }
 
+  @Override
   public List<ReferentialConstraintImpl> getReferentialConstraints() {
     return referentialConstraints;
   }
 
+  @Override
   public OnDeleteImpl getOnDelete() {
     return onDelete;
   }
 
-  public void setOnDelete(final OnDeleteImpl onDelete) {
-    this.onDelete = onDelete;
+  @Override
+  public void setOnDelete(final OnDelete onDelete) {
+    this.onDelete = (OnDeleteImpl) onDelete;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
index cda9315..26bb775 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
@@ -19,19 +19,22 @@
 package org.apache.olingo.odata4.client.core.edm.v4;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.v4.Parameter;
 import org.apache.olingo.odata4.client.core.edm.AbstractParameter;
 
-public class ParameterImpl extends AbstractParameter {
+public class ParameterImpl extends AbstractParameter implements Parameter {
 
   private static final long serialVersionUID = -1067642515116697747L;
 
   @JsonProperty(value = "SRID")
   private String srid;
 
+  @Override
   public String getSrid() {
     return srid;
   }
 
+  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
index 05d1b50..2048d0e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
@@ -21,9 +21,10 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.v4.Property;
 import org.apache.olingo.odata4.client.core.edm.AbstractProperty;
 
-public class PropertyImpl extends AbstractProperty implements AnnotatedEdmItem {
+public class PropertyImpl extends AbstractProperty implements Property {
 
   private static final long serialVersionUID = -5541908235094985412L;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
index 369ce8f..6142ab5 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
@@ -39,22 +39,27 @@ public class ReferenceImpl extends AbstractEdmItem implements Reference {
 
   private final List<Annotation> annotations = new ArrayList<Annotation>();
 
+  @Override
   public URI getUri() {
     return uri;
   }
 
+  @Override
   public void setUri(final URI uri) {
     this.uri = uri;
   }
 
+  @Override
   public List<IncludeImpl> getIncludes() {
     return includes;
   }
 
+  @Override
   public List<IncludeAnnotationsImpl> getIncludeAnnotations() {
     return includeAnnotations;
   }
 
+  @Override
   public List<Annotation> getAnnotations() {
     return annotations;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
index 7234e5d..0bca9c8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
@@ -31,18 +31,22 @@ public class ReferentialConstraintImpl extends AbstractAnnotatedEdmItem implemen
   @JsonProperty(value = "ReferencedProperty", required = true)
   private String referencedProperty;
 
+  @Override
   public String getProperty() {
     return property;
   }
 
+  @Override
   public void setProperty(final String property) {
     this.property = property;
   }
 
+  @Override
   public String getReferencedProperty() {
     return referencedProperty;
   }
 
+  @Override
   public void setReferencedProperty(final String referencedProperty) {
     this.referencedProperty = referencedProperty;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
index 9e9751e..877bdb0 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
@@ -45,50 +45,62 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
   @JsonProperty(value = "SRID")
   private String srid;
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public boolean isNullable() {
     return nullable;
   }
 
+  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
 
+  @Override
   public String getMaxLength() {
     return maxLength;
   }
 
+  @Override
   public void setMaxLength(final String maxLength) {
     this.maxLength = maxLength;
   }
 
+  @Override
   public BigInteger getPrecision() {
     return precision;
   }
 
+  @Override
   public void setPrecision(final BigInteger precision) {
     this.precision = precision;
   }
 
+  @Override
   public BigInteger getScale() {
     return scale;
   }
 
+  @Override
   public void setScale(final BigInteger scale) {
     this.scale = scale;
   }
 
+  @Override
   public String getSrid() {
     return srid;
   }
 
+  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java
index d85d30f..1f7f0a2 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4;
 
+import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -56,13 +57,7 @@ public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmIt
   }
 
   public List<ActionImpl> getActions(final String name) {
-    final List<ActionImpl> result = new ArrayList<ActionImpl>();
-    for (ActionImpl action : getActions()) {
-      if (name.equals(action.getName())) {
-        result.add(action);
-      }
-    }
-    return result;
+    return getAllByName(name, getActions());
   }
 
   @Override
@@ -90,13 +85,7 @@ public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmIt
   }
 
   public List<FunctionImpl> getFunctions(final String name) {
-    final List<FunctionImpl> result = new ArrayList<FunctionImpl>();
-    for (FunctionImpl function : getFunctions()) {
-      if (name.equals(function.getName())) {
-        result.add(function);
-      }
-    }
-    return result;
+    return getAllByName(name, getFunctions());
   }
 
   public List<TermImpl> getTerms() {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
index a904668..a0ec41a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
@@ -35,22 +35,27 @@ public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton
   private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
           = new ArrayList<NavigationPropertyBindingImpl>();
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
     return navigationPropertyBindings;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
index 28e3f4f..041e90f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
@@ -50,78 +50,97 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
 
   private final List<CSDLElement> appliesTo = new ArrayList<CSDLElement>();
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public String getBaseTerm() {
     return baseTerm;
   }
 
+  @Override
   public void setBaseTerm(final String baseTerm) {
     this.baseTerm = baseTerm;
   }
 
+  @Override
   public String getDefaultValue() {
     return defaultValue;
   }
 
+  @Override
   public void setDefaultValue(final String defaultValue) {
     this.defaultValue = defaultValue;
   }
 
+  @Override
   public boolean isNullable() {
     return nullable;
   }
 
+  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
 
+  @Override
   public String getMaxLength() {
     return maxLength;
   }
 
+  @Override
   public void setMaxLength(final String maxLength) {
     this.maxLength = maxLength;
   }
 
+  @Override
   public BigInteger getPrecision() {
     return precision;
   }
 
+  @Override
   public void setPrecision(final BigInteger precision) {
     this.precision = precision;
   }
 
+  @Override
   public BigInteger getScale() {
     return scale;
   }
 
+  @Override
   public void setScale(final BigInteger scale) {
     this.scale = scale;
   }
 
+  @Override
   public String getSrid() {
     return srid;
   }
 
+  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }
 
+  @Override
   public List<CSDLElement> getAppliesTo() {
     return appliesTo;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
index 08ba6b2..1d6cba8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
@@ -21,7 +21,6 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.v4.TypeDefinition;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
@@ -43,65 +42,80 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
 
   private String srid;
 
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
+  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getUnderlyingType() {
     return underlyingType;
   }
 
+  @Override
   public void setUnderlyingType(final String underlyingType) {
     this.underlyingType = underlyingType;
   }
 
+  @Override
   public String getMaxLength() {
     return maxLength;
   }
 
+  @Override
   public void setMaxLength(final String maxLength) {
     this.maxLength = maxLength;
   }
 
+  @Override
   public BigInteger getPrecision() {
     return precision;
   }
 
+  @Override
   public void setPrecision(final BigInteger precision) {
     this.precision = precision;
   }
 
+  @Override
   public BigInteger getScale() {
     return scale;
   }
 
+  @Override
   public void setScale(final BigInteger scale) {
     this.scale = scale;
   }
 
+  @Override
   public boolean isUnicode() {
     return unicode;
   }
 
+  @Override
   public void setUnicode(final boolean unicode) {
     this.unicode = unicode;
   }
 
+  @Override
   public String getSrid() {
     return srid;
   }
 
+  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }
 
-  public List<Annotation> getAnnotations() {
+  @Override
+  public List<AnnotationImpl> getAnnotations() {
     return annotations;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
index 1fa7f84..bc5fc31 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotatedEdmItem;
+import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
 import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
 
 abstract class AnnotatedDynExprConstruct extends DynExprConstructImpl implements AnnotatedEdmItem {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
index 9c5b9c7..6292de9 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = ApplyDeserializer.class)
 public class Apply extends AnnotatedDynExprConstruct {
@@ -35,7 +36,7 @@ public class Apply extends AnnotatedDynExprConstruct {
 
   private String function;
 
-  private final List<ExprConstructImpl> parameters = new ArrayList<ExprConstructImpl>();
+  private final List<ExprConstruct> parameters = new ArrayList<ExprConstruct>();
 
   public String getFunction() {
     return function;
@@ -45,7 +46,7 @@ public class Apply extends AnnotatedDynExprConstruct {
     this.function = function;
   }
 
-  public List<ExprConstructImpl> getParameters() {
+  public List<ExprConstruct> getParameters() {
     return parameters;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
index 6085ba0..65d41d5 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
@@ -20,6 +20,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = CastDeserializer.class)
 public class Cast extends AnnotatedDynExprConstruct {
@@ -36,7 +37,7 @@ public class Cast extends AnnotatedDynExprConstruct {
 
   private String srid;
 
-  private DynExprConstructImpl value;
+  private DynExprConstruct value;
 
   public String getType() {
     return type;
@@ -78,11 +79,11 @@ public class Cast extends AnnotatedDynExprConstruct {
     this.srid = srid;
   }
 
-  public DynExprConstructImpl getValue() {
+  public DynExprConstruct getValue() {
     return value;
   }
 
-  public void setValue(final DynExprConstructImpl value) {
+  public void setValue(final DynExprConstruct value) {
     this.value = value;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
index a23604c..e7d9359 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
@@ -21,15 +21,16 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = CollectionDeserializer.class)
 public class Collection extends DynExprConstructImpl {
 
   private static final long serialVersionUID = -4975881520695477686L;
 
-  private final List<ExprConstructImpl> items = new ArrayList<ExprConstructImpl>();
+  private final List<ExprConstruct> items = new ArrayList<ExprConstruct>();
 
-  public List<ExprConstructImpl> getItems() {
+  public List<ExprConstruct> getItems() {
     return items;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
index ca39a42..b35a424 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
@@ -18,6 +18,8 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+
 public class DynExprDoubleParamOp extends DynExprConstructImpl {
 
   private static final long serialVersionUID = -7974475975925167731L;
@@ -40,9 +42,9 @@ public class DynExprDoubleParamOp extends DynExprConstructImpl {
 
   private Type type;
 
-  private DynExprConstructImpl left;
+  private DynExprConstruct left;
 
-  private DynExprConstructImpl right;
+  private DynExprConstruct right;
 
   public Type getType() {
     return type;
@@ -52,19 +54,19 @@ public class DynExprDoubleParamOp extends DynExprConstructImpl {
     this.type = type;
   }
 
-  public DynExprConstructImpl getLeft() {
+  public DynExprConstruct getLeft() {
     return left;
   }
 
-  public void setLeft(final DynExprConstructImpl left) {
+  public void setLeft(final DynExprConstruct left) {
     this.left = left;
   }
 
-  public DynExprConstructImpl getRight() {
+  public DynExprConstruct getRight() {
     return right;
   }
 
-  public void setRight(final DynExprConstructImpl right) {
+  public void setRight(final DynExprConstruct right) {
     this.right = right;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
index 0d57101..52befcd 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
@@ -18,6 +18,8 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+
 public class DynExprSingleParamOp extends DynExprConstructImpl {
 
   private static final long serialVersionUID = -7974475975925167731L;
@@ -46,7 +48,7 @@ public class DynExprSingleParamOp extends DynExprConstructImpl {
 
   private Type type;
 
-  private DynExprConstructImpl expression;
+  private DynExprConstruct expression;
 
   public Type getType() {
     return type;
@@ -56,11 +58,11 @@ public class DynExprSingleParamOp extends DynExprConstructImpl {
     this.type = type;
   }
 
-  public DynExprConstructImpl getExpression() {
+  public DynExprConstruct getExpression() {
     return expression;
   }
 
-  public void setExpression(final DynExprConstructImpl expression) {
+  public void setExpression(final DynExprConstruct expression) {
     this.expression = expression;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
index 4a5185d..5cee1e8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
@@ -18,9 +18,10 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
-public abstract class ExprConstructImpl extends AbstractEdmItem {
+public abstract class ExprConstructImpl extends AbstractEdmItem implements ExprConstruct {
 
   private static final long serialVersionUID = 7108626008005050492L;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
index b562376..5c43058 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
@@ -18,37 +18,39 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
+
 public class If extends AnnotatedDynExprConstruct {
 
   private static final long serialVersionUID = 6752952406406218936L;
 
-  private ExprConstructImpl guard;
+  private ExprConstruct guard;
 
-  private ExprConstructImpl _then;
+  private ExprConstruct _then;
 
-  private ExprConstructImpl _else;
+  private ExprConstruct _else;
 
-  public ExprConstructImpl getGuard() {
+  public ExprConstruct getGuard() {
     return guard;
   }
 
-  public void setGuard(final ExprConstructImpl guard) {
+  public void setGuard(final ExprConstruct guard) {
     this.guard = guard;
   }
 
-  public ExprConstructImpl getThen() {
+  public ExprConstruct getThen() {
     return _then;
   }
 
-  public void setThen(final ExprConstructImpl _then) {
+  public void setThen(final ExprConstruct _then) {
     this._then = _then;
   }
 
-  public ExprConstructImpl getElse() {
+  public ExprConstruct getElse() {
     return _else;
   }
 
-  public void setElse(final ExprConstructImpl _else) {
+  public void setElse(final ExprConstruct _else) {
     this._else = _else;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
index 73912bd..7779b55 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
@@ -20,6 +20,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = IsOfDeserializer.class)
 public class IsOf extends AnnotatedDynExprConstruct {
@@ -36,7 +37,7 @@ public class IsOf extends AnnotatedDynExprConstruct {
 
   private String srid;
 
-  private DynExprConstructImpl value;
+  private DynExprConstruct value;
 
   public String getType() {
     return type;
@@ -78,11 +79,11 @@ public class IsOf extends AnnotatedDynExprConstruct {
     this.srid = srid;
   }
 
-  public DynExprConstructImpl getValue() {
+  public DynExprConstruct getValue() {
     return value;
   }
 
-  public void setValue(final DynExprConstructImpl value) {
+  public void setValue(final DynExprConstruct value) {
     this.value = value;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
index 318347f..217c7df 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = LabeledElementDeserializer.class)
 public class LabeledElement extends AnnotatedDynExprConstruct {
@@ -27,7 +28,7 @@ public class LabeledElement extends AnnotatedDynExprConstruct {
 
   private String name;
 
-  private DynExprConstructImpl value;
+  private DynExprConstruct value;
 
   public String getName() {
     return name;
@@ -37,11 +38,11 @@ public class LabeledElement extends AnnotatedDynExprConstruct {
     this.name = name;
   }
 
-  public DynExprConstructImpl getValue() {
+  public DynExprConstruct getValue() {
     return value;
   }
 
-  public void setValue(final DynExprConstructImpl value) {
+  public void setValue(final DynExprConstruct value) {
     this.value = value;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
index fab3829..3abbd5f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = PropertyValueDeserializer.class)
 public class PropertyValue extends AnnotatedDynExprConstruct {
@@ -27,7 +28,7 @@ public class PropertyValue extends AnnotatedDynExprConstruct {
 
   private String property;
 
-  private ExprConstructImpl value;
+  private ExprConstruct value;
 
   public String getProperty() {
     return property;
@@ -37,11 +38,11 @@ public class PropertyValue extends AnnotatedDynExprConstruct {
     this.property = property;
   }
 
-  public ExprConstructImpl getValue() {
+  public ExprConstruct getValue() {
     return value;
   }
 
-  public void setValue(final ExprConstructImpl value) {
+  public void setValue(final ExprConstruct value) {
     this.value = value;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
index 5cc0f9b..91f52e7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
@@ -19,19 +19,20 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = UrlRefDeserializer.class)
 public class UrlRef extends DynExprConstructImpl {
 
   private static final long serialVersionUID = 3755101394647430897L;
 
-  private ExprConstructImpl value;
+  private ExprConstruct value;
 
-  public ExprConstructImpl getValue() {
+  public ExprConstruct getValue() {
     return value;
   }
 
-  public void setValue(final ExprConstructImpl value) {
+  public void setValue(final ExprConstruct value) {
     this.value = value;
   }
 


[3/3] git commit: [OLINGO-169] Making client-api Edm interfaces less dumb

Posted by il...@apache.org.
[OLINGO-169] Making client-api Edm interfaces less dumb


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

Branch: refs/heads/olingo169
Commit: df906e43c6f7213adc72d9cb38f00acb3427c1c3
Parents: 07400ab
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Feb 25 12:21:56 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Feb 25 12:21:56 2014 +0100

----------------------------------------------------------------------
 .../client/api/edm/AbstractAnnotations.java     | 30 +++++++
 .../client/api/edm/CommonFunctionImport.java    | 22 +++++
 .../api/edm/CommonNavigationProperty.java       | 22 +++++
 .../odata4/client/api/edm/CommonParameter.java  | 45 ++++++++++
 .../odata4/client/api/edm/CommonProperty.java   | 74 +++++++++++++++
 .../odata4/client/api/edm/ComplexType.java      | 10 +--
 .../odata4/client/api/edm/DataServices.java     |  4 +-
 .../odata4/client/api/edm/EntityContainer.java  | 33 ++++++-
 .../olingo/odata4/client/api/edm/EntityKey.java |  3 +
 .../olingo/odata4/client/api/edm/EntitySet.java |  6 +-
 .../odata4/client/api/edm/EntityType.java       | 22 ++++-
 .../olingo/odata4/client/api/edm/EnumType.java  |  6 +-
 .../odata4/client/api/edm/FunctionImport.java   | 26 ------
 .../olingo/odata4/client/api/edm/Named.java     | 26 ++++++
 .../client/api/edm/NavigationProperty.java      | 23 -----
 .../api/edm/NavigationPropertyBinding.java      | 23 -----
 .../olingo/odata4/client/api/edm/OnDelete.java  | 28 ++++++
 .../olingo/odata4/client/api/edm/Parameter.java | 23 -----
 .../olingo/odata4/client/api/edm/Property.java  | 24 -----
 .../odata4/client/api/edm/PropertyRef.java      |  5 +-
 .../olingo/odata4/client/api/edm/Schema.java    |  4 +-
 .../odata4/client/api/edm/v3/Annotations.java   | 11 ++-
 .../odata4/client/api/edm/v3/Association.java   | 11 ++-
 .../client/api/edm/v3/AssociationEnd.java       | 17 ++++
 .../client/api/edm/v3/AssociationSet.java       | 10 ++-
 .../client/api/edm/v3/AssociationSetEnd.java    |  7 ++
 .../client/api/edm/v3/FunctionImport.java       | 60 +++++++++++++
 .../client/api/edm/v3/NavigationProperty.java   | 34 +++++++
 .../odata4/client/api/edm/v3/Parameter.java     | 26 ++++++
 .../odata4/client/api/edm/v3/Property.java      | 50 +++++++++++
 .../odata4/client/api/edm/v3/PropertyValue.java | 36 ++++++++
 .../api/edm/v3/ReferentialConstraint.java       |  7 ++
 .../api/edm/v3/ReferentialConstraintRole.java   | 32 +++++++
 .../client/api/edm/v3/TypeAnnotation.java       | 12 +++
 .../olingo/odata4/client/api/edm/v3/Using.java  |  8 ++
 .../client/api/edm/v3/ValueAnnotation.java      | 40 +++++++++
 .../odata4/client/api/edm/v3/ValueTerm.java     |  7 +-
 .../olingo/odata4/client/api/edm/v4/Action.java | 22 ++++-
 .../odata4/client/api/edm/v4/ActionImport.java  |  5 +-
 .../client/api/edm/v4/AnnotatedEdmItem.java     | 26 ++++++
 .../odata4/client/api/edm/v4/Annotations.java   |  8 +-
 .../odata4/client/api/edm/v4/ComplexType.java   | 35 ++++++++
 .../olingo/odata4/client/api/edm/v4/Edmx.java   | 26 ++++++
 .../client/api/edm/v4/EntityContainer.java      | 43 +++++++++
 .../odata4/client/api/edm/v4/EntitySet.java     | 30 +++++++
 .../odata4/client/api/edm/v4/EntityType.java    | 23 +++++
 .../odata4/client/api/edm/v4/Function.java      | 26 ++++++
 .../client/api/edm/v4/FunctionImport.java       | 32 +++++++
 .../odata4/client/api/edm/v4/Include.java       |  7 ++
 .../client/api/edm/v4/IncludeAnnotations.java   | 11 +++
 .../client/api/edm/v4/NavigationProperty.java   | 49 ++++++++++
 .../api/edm/v4/NavigationPropertyBinding.java   | 31 +++++++
 .../odata4/client/api/edm/v4/OnDelete.java      | 26 ------
 .../client/api/edm/v4/OperationImport.java      | 28 ++++++
 .../odata4/client/api/edm/v4/Parameter.java     | 26 ++++++
 .../odata4/client/api/edm/v4/Property.java      | 25 ++++++
 .../odata4/client/api/edm/v4/Reference.java     | 12 +++
 .../api/edm/v4/ReferentialConstraint.java       |  8 ++
 .../odata4/client/api/edm/v4/ReturnType.java    | 25 ++++++
 .../odata4/client/api/edm/v4/Singleton.java     | 11 ++-
 .../olingo/odata4/client/api/edm/v4/Term.java   | 39 +++++++-
 .../client/api/edm/v4/TypeDefinition.java       | 31 ++++++-
 .../edm/v4/annotation/ConstExprConstruct.java   |  2 +-
 .../api/edm/v4/annotation/DynExprConstruct.java |  2 +-
 .../api/edm/v4/annotation/ExprConstruct.java    | 23 +++++
 .../odata4/client/api/op/ODataReader.java       |  2 -
 .../core/data/impl/v3/ODataReaderImpl.java      |  1 +
 .../client/core/edm/AbstractAnnotations.java    |  8 +-
 .../client/core/edm/AbstractComplexType.java    | 12 +++
 .../client/core/edm/AbstractDataServices.java   |  8 +-
 .../odata4/client/core/edm/AbstractEdmItem.java | 19 ++++
 .../core/edm/AbstractEntityContainer.java       | 38 ++++----
 .../client/core/edm/AbstractEntityType.java     | 14 ++-
 .../client/core/edm/AbstractFunctionImport.java | 27 ------
 .../core/edm/AbstractNavigationProperty.java    |  6 +-
 .../client/core/edm/AbstractParameter.java      | 16 +++-
 .../client/core/edm/AbstractProperty.java       | 94 ++++++--------------
 .../odata4/client/core/edm/AbstractSchema.java  | 24 +----
 .../odata4/client/core/edm/EntityKeyImpl.java   |  7 +-
 .../odata4/client/core/edm/EntitySetImpl.java   | 25 ------
 .../odata4/client/core/edm/OnDeleteImpl.java    |  2 +-
 .../odata4/client/core/edm/PropertyRefImpl.java |  4 +
 .../client/core/edm/v3/AnnotationsImpl.java     |  5 +-
 .../client/core/edm/v3/AssociationEndImpl.java  | 10 ++-
 .../client/core/edm/v3/AssociationImpl.java     | 12 +--
 .../core/edm/v3/AssociationSetEndImpl.java      |  4 +
 .../client/core/edm/v3/AssociationSetImpl.java  |  5 ++
 .../client/core/edm/v3/ComplexTypeImpl.java     | 28 +++---
 .../client/core/edm/v3/EntityTypeImpl.java      | 26 ++----
 .../client/core/edm/v3/FunctionImportImpl.java  | 21 ++++-
 .../odata4/client/core/edm/v3/MemberImpl.java   |  3 +-
 .../core/edm/v3/NavigationPropertyImpl.java     |  9 +-
 .../client/core/edm/v3/ParameterImpl.java       |  5 +-
 .../odata4/client/core/edm/v3/PropertyImpl.java | 71 ++++++++++++++-
 .../client/core/edm/v3/PropertyValueImpl.java   | 16 ++++
 .../core/edm/v3/ReferentialConstraintImpl.java  | 20 +++--
 .../core/edm/v3/ReferentialConstraintRole.java  | 51 -----------
 .../ReferentialConstraintRoleDeserializer.java  |  6 +-
 .../edm/v3/ReferentialConstraintRoleImpl.java   | 50 +++++++++++
 .../odata4/client/core/edm/v3/SchemaImpl.java   | 16 +---
 .../client/core/edm/v3/TypeAnnotationImpl.java  | 43 +++++----
 .../odata4/client/core/edm/v3/UsingImpl.java    |  4 +
 .../client/core/edm/v3/ValueAnnotationImpl.java | 21 ++++-
 .../client/core/edm/v3/ValueTermImpl.java       |  4 +
 .../core/edm/v4/AbstractAnnotatedEdmItem.java   |  1 +
 .../odata4/client/core/edm/v4/ActionImpl.java   | 29 +++---
 .../client/core/edm/v4/ActionImportImpl.java    |  9 +-
 .../client/core/edm/v4/AnnotatedEdmItem.java    | 28 ------
 .../client/core/edm/v4/AnnotationsImpl.java     |  3 +-
 .../client/core/edm/v4/ComplexTypeImpl.java     | 35 ++++----
 .../odata4/client/core/edm/v4/EdmxImpl.java     |  4 +-
 .../client/core/edm/v4/EntityContainerImpl.java | 28 ++----
 .../client/core/edm/v4/EntitySetImpl.java       | 13 +--
 .../client/core/edm/v4/EntityTypeImpl.java      | 29 ++----
 .../odata4/client/core/edm/v4/EnumTypeImpl.java |  1 +
 .../core/edm/v4/FunctionDeserializer.java       | 18 ++--
 .../odata4/client/core/edm/v4/FunctionImpl.java | 21 +++--
 .../client/core/edm/v4/FunctionImportImpl.java  | 10 ++-
 .../core/edm/v4/IncludeAnnotationsImpl.java     |  6 ++
 .../odata4/client/core/edm/v4/IncludeImpl.java  |  4 +
 .../odata4/client/core/edm/v4/MemberImpl.java   |  4 +-
 .../edm/v4/NavigationPropertyBindingImpl.java   |  6 +-
 .../core/edm/v4/NavigationPropertyImpl.java     | 19 +++-
 .../client/core/edm/v4/ParameterImpl.java       |  5 +-
 .../odata4/client/core/edm/v4/PropertyImpl.java |  3 +-
 .../client/core/edm/v4/ReferenceImpl.java       |  5 ++
 .../core/edm/v4/ReferentialConstraintImpl.java  |  4 +
 .../client/core/edm/v4/ReturnTypeImpl.java      | 12 +++
 .../odata4/client/core/edm/v4/SchemaImpl.java   | 17 +---
 .../client/core/edm/v4/SingletonImpl.java       |  5 ++
 .../odata4/client/core/edm/v4/TermImpl.java     | 19 ++++
 .../client/core/edm/v4/TypeDefinitionImpl.java  | 20 ++++-
 .../annotation/AnnotatedDynExprConstruct.java   |  2 +-
 .../client/core/edm/v4/annotation/Apply.java    |  5 +-
 .../client/core/edm/v4/annotation/Cast.java     |  7 +-
 .../core/edm/v4/annotation/Collection.java      |  5 +-
 .../edm/v4/annotation/DynExprDoubleParamOp.java | 14 +--
 .../edm/v4/annotation/DynExprSingleParamOp.java |  8 +-
 .../edm/v4/annotation/ExprConstructImpl.java    |  3 +-
 .../client/core/edm/v4/annotation/If.java       | 20 +++--
 .../client/core/edm/v4/annotation/IsOf.java     |  7 +-
 .../core/edm/v4/annotation/LabeledElement.java  |  7 +-
 .../core/edm/v4/annotation/PropertyValue.java   |  7 +-
 .../client/core/edm/v4/annotation/UrlRef.java   |  7 +-
 144 files changed, 1948 insertions(+), 698 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java
new file mode 100644
index 0000000..cf52cf4
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm;
+
+public abstract interface AbstractAnnotations {
+
+  String getTarget();
+
+  void setTarget(String target);
+
+  String getQualifier();
+
+  void setQualifier(String qualifier);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java
new file mode 100644
index 0000000..739d08a
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm;
+
+public interface CommonFunctionImport extends Named {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java
new file mode 100644
index 0000000..2637a0c
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm;
+
+public interface CommonNavigationProperty extends Named {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java
new file mode 100644
index 0000000..31f737f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm;
+
+import java.math.BigInteger;
+
+public interface CommonParameter extends Named {
+
+  String getType();
+
+  void setType(String type);
+
+  boolean isNullable();
+
+  void setNullable(boolean nullable);
+
+  String getMaxLength();
+
+  void setMaxLength(String maxLength);
+
+  BigInteger getPrecision();
+
+  void setPrecision(BigInteger precision);
+
+  BigInteger getScale();
+
+  void setScale(BigInteger scale);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java
new file mode 100644
index 0000000..16cc03a
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm;
+
+import java.math.BigInteger;
+import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
+import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
+
+public interface CommonProperty extends Named {
+
+  String getType();
+
+  void setType(String type);
+
+  boolean isNullable();
+
+  void setNullable(boolean nullable);
+
+  String getDefaultValue();
+
+  void setDefaultValue(String defaultValue);
+
+  String getMaxLength();
+
+  void setMaxLength(String maxLength);
+
+  boolean isFixedLength();
+
+  void setFixedLength(boolean fixedLength);
+
+  BigInteger getPrecision();
+
+  void setPrecision(BigInteger precision);
+
+  BigInteger getScale();
+
+  void setScale(BigInteger scale);
+
+  boolean isUnicode();
+
+  void setUnicode(boolean unicode);
+
+  String getCollation();
+
+  void setCollation(String collation);
+
+  String getSrid();
+
+  void setSrid(String srid);
+
+  ConcurrencyMode getConcurrencyMode();
+
+  void setConcurrencyMode(ConcurrencyMode concurrencyMode);
+
+  StoreGeneratedPattern getStoreGeneratedPattern();
+
+  void setStoreGeneratedPattern(StoreGeneratedPattern storeGeneratedPattern);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
index 3771d5c..929d1b8 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
@@ -20,13 +20,13 @@ package org.apache.olingo.odata4.client.api.edm;
 
 import java.util.List;
 
-public interface ComplexType {
+public interface ComplexType extends Named {
 
-  String getName();
+  CommonProperty getProperty(String name);
 
-  void setName(String name);
+  List<? extends CommonProperty> getProperties();
 
-  public abstract List<? extends Property> getProperties();
+  CommonNavigationProperty getNavigationProperty(String name);
 
-  public abstract Property getProperty(String name);
+  List<? extends CommonNavigationProperty> getNavigationProperties();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
index 9d72c7e..2972991 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
@@ -24,11 +24,11 @@ public interface DataServices {
 
   String getDataServiceVersion();
 
-  void setDataServiceVersion(String dataServiceVersion);
+  void setDataServiceVersion(String version);
 
   String getMaxDataServiceVersion();
 
-  void setMaxDataServiceVersion(String maxDataServiceVersion);
+  void setMaxDataServiceVersion(String version);
 
   List<? extends Schema> getSchemas();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
index a0a507d..c3eb080 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
@@ -20,12 +20,39 @@ package org.apache.olingo.odata4.client.api.edm;
 
 import java.util.List;
 
-public interface EntityContainer {
+public interface EntityContainer extends Named {
 
-  List<? extends EntitySet> getEntitySets();
+  String getExtends();
+
+  void setExtends(String _extends);
+
+  boolean isLazyLoadingEnabled();
+
+  void setLazyLoadingEnabled(boolean lazyLoadingEnabled);
+
+  boolean isDefaultEntityContainer();
+
+  void setDefaultEntityContainer(boolean defaultEntityContainer);
 
   EntitySet getEntitySet(String name);
 
-  List<? extends FunctionImport> getFunctionImports();
+  List<? extends EntitySet> getEntitySets();
+
+  /**
+   * Gets the first function import with given name.
+   *
+   * @param name name.
+   * @return function import.
+   */
+  CommonFunctionImport getFunctionImport(String name);
+
+  /**
+   * Gets all function imports with given name.
+   *
+   * @param name name.
+   * @return function imports.
+   */
+  List<? extends CommonFunctionImport> getFunctionImports(String name);
 
+  List<? extends CommonFunctionImport> getFunctionImports();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
index ca903e9..ee89a9a 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
@@ -18,6 +18,9 @@
  */
 package org.apache.olingo.odata4.client.api.edm;
 
+import java.util.List;
+
 public interface EntityKey {
 
+  List<? extends PropertyRef> getPropertyRefs();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
index 4c75e9f..98c854d 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
@@ -18,11 +18,7 @@
  */
 package org.apache.olingo.odata4.client.api.edm;
 
-public interface EntitySet {
-
-  String getName();
-
-  void setName(String name);
+public interface EntitySet extends Named {
 
   String getEntityType();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
index 5779fbe..37ebc35 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
@@ -18,11 +18,25 @@
  */
 package org.apache.olingo.odata4.client.api.edm;
 
-import java.util.List;
-
 public interface EntityType extends ComplexType {
 
-  List<? extends NavigationProperty> getNavigationProperties();
+  boolean isAbstractEntityType();
+
+  void setAbstractEntityType(boolean abstractEntityType);
+
+  String getBaseType();
+
+  void setBaseType(String baseType);
+
+  boolean isOpenType();
+
+  void setOpenType(boolean openType);
+
+  EntityKey getKey();
+
+  void setKey(EntityKey key);
+
+  boolean isHasStream();
 
-  NavigationProperty getNavigationProperty(String name);
+  void setHasStream(boolean hasStream);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
index 854da14..614c5e1 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
@@ -20,11 +20,7 @@ package org.apache.olingo.odata4.client.api.edm;
 
 import java.util.List;
 
-public interface EnumType {
-
-  String getName();
-
-  void setName(String name);
+public interface EnumType extends Named {
 
   String getUnderlyingType();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/FunctionImport.java
deleted file mode 100644
index 412b628..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/FunctionImport.java
+++ /dev/null
@@ -1,26 +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.odata4.client.api.edm;
-
-public interface FunctionImport {
-
-  String getName();
-
-  String getEntitySet();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java
new file mode 100644
index 0000000..5d90e2d
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm;
+
+public interface Named {
+
+  String getName();
+
+  void setName(String name);
+}

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

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java
new file mode 100644
index 0000000..1936328
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.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.odata4.client.api.edm;
+
+import org.apache.olingo.odata4.client.api.edm.v4.OnDeleteAction;
+
+public interface OnDelete {
+
+  OnDeleteAction getAction();
+
+  void setAction(OnDeleteAction action);
+}

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Property.java
deleted file mode 100644
index 6492f87..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Property.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.api.edm;
-
-public interface Property {
-
-  String getName();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
index e79ea84..02b4c6e 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
@@ -18,6 +18,9 @@
  */
 package org.apache.olingo.odata4.client.api.edm;
 
-public interface PropertyRef {
+public interface PropertyRef extends Named {
 
+  String getAlias();
+
+  void setAlias(String alias);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
index 83abf79..ac19d11 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
@@ -37,9 +37,9 @@ public interface Schema {
 
   EnumType getEnumType(String name);
 
-  List<? extends Annotations> getAnnotationsList();
+  List<? extends AbstractAnnotations> getAnnotationsList();
 
-  Annotations getAnnotationsList(String target);
+  AbstractAnnotations getAnnotationsList(String target);
 
   List<? extends ComplexType> getComplexTypes();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
index 893894c..30aa26a 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
@@ -16,9 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.olingo.odata4.client.api.edm.v3;
 
-public interface Annotations {
-  
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.AbstractAnnotations;
+
+public interface Annotations extends AbstractAnnotations {
+
+  List<? extends TypeAnnotation> getTypeAnnotations();
+
+  List<? extends ValueAnnotation> getValueAnnotations();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
index 598c268..0cb5b0e 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
@@ -18,6 +18,15 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
-public interface Association {
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.Named;
+
+public interface Association extends Named {
+
+  ReferentialConstraint getReferentialConstraint();
+
+  void setReferentialConstraint(ReferentialConstraint referentialConstraint);
+
+  List<? extends AssociationEnd> getEnds();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
index 486ce4b..8eb34e4 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
@@ -18,6 +18,23 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
+import org.apache.olingo.odata4.client.api.edm.OnDelete;
+
 public interface AssociationEnd {
 
+  String getType();
+
+  void setType(String type);
+
+  String getRole();
+
+  void setRole(String role);
+
+  String getMultiplicity();
+
+  void setMultiplicity(String multiplicity);
+
+  OnDelete getOnDelete();
+
+  void setOnDelete(OnDelete onDelete);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
index c186b4b..1915255 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
@@ -18,6 +18,14 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
-public interface AssociationSet {
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.Named;
 
+public interface AssociationSet extends Named {
+
+  String getAssociation();
+
+  void setAssociation(String association);
+
+  List<? extends AssociationSetEnd> getEnds();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
index e5da2cf..a3cd430 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
@@ -20,4 +20,11 @@ package org.apache.olingo.odata4.client.api.edm.v3;
 
 public interface AssociationSetEnd {
 
+  String getRole();
+
+  void setRole(String role);
+
+  String getEntitySet();
+
+  void setEntitySet(String entitySet);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java
new file mode 100644
index 0000000..359ba5b
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.CommonParameter;
+
+public interface FunctionImport extends org.apache.olingo.odata4.client.api.edm.CommonFunctionImport {
+
+  String getReturnType();
+
+  void setReturnType(String returnType);
+
+  String getEntitySet();
+
+  void setEntitySet(String entitySet);
+
+  String getEntitySetPath();
+
+  void setEntitySetPath(String entitySetPath);
+
+  boolean isComposable();
+
+  void setComposable(boolean composable);
+
+  boolean isSideEffecting();
+
+  void setSideEffecting(boolean sideEffecting);
+
+  boolean isBindable();
+
+  void setBindable(boolean bindable);
+
+  boolean isAlwaysBindable();
+
+  void setAlwaysBindable(boolean alwaysBindable);
+
+  String getHttpMethod();
+
+  void setHttpMethod(String httpMethod);
+
+  List<? extends CommonParameter> getParameters();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java
new file mode 100644
index 0000000..4b24887
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v3;
+
+public interface NavigationProperty extends org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty {
+
+  String getRelationship();
+
+  void setRelationship(String relationship);
+
+  String getToRole();
+
+  void setToRole(String toRole);
+
+  String getFromRole();
+
+  void setFromRole(String fromRole);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java
new file mode 100644
index 0000000..0d45df0
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v3;
+
+public interface Parameter extends org.apache.olingo.odata4.client.api.edm.CommonParameter {
+
+  ParameterMode getMode();
+
+  void setMode(ParameterMode mode);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java
new file mode 100644
index 0000000..042948f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v3;
+
+import org.apache.olingo.odata4.client.api.edm.CommonProperty;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
+
+public interface Property extends CommonProperty {
+
+  String getFcSourcePath();
+
+  void setFcSourcePath(String fcSourcePath);
+
+  String getFcTargetPath();
+
+  void setFcTargetPath(String fcTargetPath);
+
+  EdmContentKind getFcContentKind();
+
+  void setFcContentKind(EdmContentKind fcContentKind);
+
+  String getFcNSPrefix();
+
+  void setFcNSPrefix(String fcNSPrefix);
+
+  String getFcNSURI();
+
+  void setFcNSURI(String fcNSURI);
+
+  boolean isFcKeepInContent();
+
+  void setFcKeepInContent(boolean fcKeepInContent);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
index 7fc7ba2..cc29d03 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
@@ -18,6 +18,42 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+
 public interface PropertyValue {
 
+  String getProperty();
+
+  void setProperty(String property);
+
+  String getPath();
+
+  void setPath(String path);
+
+  String getString();
+
+  void setString(String string);
+
+  BigInteger getInt();
+
+  void setInt(BigInteger _int);
+
+  Double getFloat();
+
+  void setFloat(Double _float);
+
+  BigDecimal getDecimal();
+
+  void setDecimal(BigDecimal decimal);
+
+  Boolean getBool();
+
+  void setBool(Boolean bool);
+
+  Date getDateTime();
+
+  void setDateTime(Date dateTime);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
index 146ea4f..fd2f8a9 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
@@ -20,4 +20,11 @@ package org.apache.olingo.odata4.client.api.edm.v3;
 
 public interface ReferentialConstraint {
 
+  ReferentialConstraintRole getPrincipal();
+
+  void setPrincipal(ReferentialConstraintRole principal);
+
+  ReferentialConstraintRole getDependent();
+
+  void setDependent(ReferentialConstraintRole dependent);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java
new file mode 100644
index 0000000..0676086
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.PropertyRef;
+
+public interface ReferentialConstraintRole {
+
+  String getRole();
+
+  void setRole(final String role);
+
+  List<? extends PropertyRef> getPropertyRefs();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
index c72b663..e6344da 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
@@ -18,6 +18,18 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
+import java.util.List;
+
 public interface TypeAnnotation {
 
+  String getTerm();
+
+  void setTerm(String term);
+
+  String getQualifier();
+
+  void setQualifier(String qualifier);
+
+  List<? extends PropertyValue> getPropertyValues();
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
index d4d965c..479f7fe 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
@@ -20,4 +20,12 @@ package org.apache.olingo.odata4.client.api.edm.v3;
 
 public interface Using {
 
+  String getNamespace();
+
+  void setNamespace(String namespace);
+
+  String getAlias();
+
+  void setAlias(String alias);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
index 42e1a1c..6068119 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
@@ -18,6 +18,46 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+
 public interface ValueAnnotation {
 
+  Boolean getBool();
+
+  Date getDateTime();
+
+  BigDecimal getDecimal();
+
+  Double getFloat();
+
+  BigInteger getInt();
+
+  String getPath();
+
+  String getQualifier();
+
+  String getString();
+
+  String getTerm();
+
+  void setBool(Boolean bool);
+
+  void setDateTime(Date dateTime);
+
+  void setDecimal(BigDecimal decimal);
+
+  void setFloat(Double _float);
+
+  void setInt(BigInteger _int);
+
+  void setPath(String path);
+
+  void setQualifier(String qualifier);
+
+  void setString(String string);
+
+  void setTerm(String term);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
index 84cb65d..2c9e838 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
@@ -18,6 +18,11 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v3;
 
-public interface ValueTerm {
+import org.apache.olingo.odata4.client.api.edm.Named;
 
+public interface ValueTerm extends Named {
+
+  String getType();
+
+  void setType(String type);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java
index d967ec1..c32cb00 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java
@@ -18,6 +18,26 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
-public interface Action {
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.Named;
+import org.apache.olingo.odata4.client.api.edm.CommonParameter;
+
+public interface Action extends Named {
+
+  boolean isBound();
+
+  void setBound(boolean bound);
+
+  String getEntitySetPath();
+
+  void setEntitySetPath(String entitySetPath);
+
+  List<? extends CommonParameter> getParameters();
+
+  CommonParameter getParameter(String name);
+
+  ReturnType getReturnType();
+
+  void setReturnType(ReturnType returnType);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
index 23731f1..b1ebb52 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
@@ -18,6 +18,9 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
-public interface ActionImport {
+public interface ActionImport extends OperationImport {
 
+  String getAction();
+
+  void setAction(String action);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java
new file mode 100644
index 0000000..b123bb2
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+public interface AnnotatedEdmItem {
+
+  Annotation getAnnotation();
+
+  void setAnnotation(Annotation annotation);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
index b92b649..bc10f09 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
@@ -18,6 +18,12 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
-public interface Annotations {
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.AbstractAnnotations;
 
+public interface Annotations extends AbstractAnnotations {
+
+  List<? extends Annotation> getAnnotations();
+
+  Annotation getAnnotation(String term);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java
new file mode 100644
index 0000000..5e2357b
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+public interface ComplexType extends org.apache.olingo.odata4.client.api.edm.ComplexType, AnnotatedEdmItem {
+
+  boolean isAbstractEntityType();
+
+  void setAbstractEntityType(boolean abstractEntityType);
+
+  String getBaseType();
+
+  void setBaseType(String baseType);
+
+  boolean isOpenType();
+
+  void setOpenType(boolean openType);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java
new file mode 100644
index 0000000..24173ed
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+import java.util.List;
+
+public interface Edmx extends org.apache.olingo.odata4.client.api.edm.Edmx {
+
+  List<? extends Reference> getReferences();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.java
new file mode 100644
index 0000000..21b676f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.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.odata4.client.api.edm.v4;
+
+import java.util.List;
+
+public interface EntityContainer extends org.apache.olingo.odata4.client.api.edm.EntityContainer {
+
+  /**
+   * Gets the first action import with given name.
+   *
+   * @param name name.
+   * @return action import.
+   */
+  ActionImport getActionImport(String name);
+
+  /**
+   * Gets all action imports with given name.
+   *
+   * @param name name.
+   * @return action imports.
+   */
+  List<? extends ActionImport> getActionImports(String name);
+
+  List<? extends ActionImport> getActionImports();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java
new file mode 100644
index 0000000..703c0df
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+import java.util.List;
+
+public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.EntitySet, AnnotatedEdmItem {
+
+  boolean isIncludeInServiceDocument();
+
+  void setIncludeInServiceDocument(boolean includeInServiceDocument);
+
+  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java
new file mode 100644
index 0000000..3e39e41
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+public interface EntityType extends org.apache.olingo.odata4.client.api.edm.EntityType, ComplexType {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java
new file mode 100644
index 0000000..bb9a817
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+public interface Function extends Action {
+
+  boolean isComposable();
+
+  void setComposable(boolean composable);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java
new file mode 100644
index 0000000..118edcc
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+import org.apache.olingo.odata4.client.api.edm.CommonFunctionImport;
+
+public interface FunctionImport extends OperationImport, CommonFunctionImport {
+
+  String getFunction();
+
+  void setFunction(String function);
+
+  boolean isIncludeInServiceDocument();
+
+  void setIncludeInServiceDocument(boolean includeInServiceDocument);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
index 7a777b9..1c3c1ce 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
@@ -20,4 +20,11 @@ package org.apache.olingo.odata4.client.api.edm.v4;
 
 public interface Include {
 
+  String getAlias();
+
+  String getNamespace();
+
+  void setAlias(final String alias);
+
+  void setNamespace(final String namespace);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
index 0458260..88ed162 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
@@ -20,4 +20,15 @@ package org.apache.olingo.odata4.client.api.edm.v4;
 
 public interface IncludeAnnotations {
 
+  String getQualifier();
+
+  String getTargeyNamespace();
+
+  String getTermNamespace();
+
+  void setQualifier(String qualifier);
+
+  void setTargeyNamespace(String targeyNamespace);
+
+  void setTermNamespace(String termNamespace);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java
new file mode 100644
index 0000000..9f34dc1
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+import org.apache.olingo.odata4.client.api.edm.OnDelete;
+import java.util.List;
+
+public interface NavigationProperty
+        extends org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty, AnnotatedEdmItem {
+
+  String getType();
+
+  void setType(String type);
+
+  boolean isNullable();
+
+  void setNullable(boolean nullable);
+
+  String getPartner();
+
+  void setPartner(String partner);
+
+  boolean isContainsTarget();
+
+  void setContainsTarget(boolean containsTarget);
+
+  List<? extends ReferentialConstraint> getReferentialConstraints();
+
+  OnDelete getOnDelete();
+
+  void setOnDelete(OnDelete onDelete);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java
new file mode 100644
index 0000000..650cbd9
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+public interface NavigationPropertyBinding {
+
+  String getPath();
+
+  void setPath(String path);
+
+  String getTarget();
+
+  void setTarget(String target);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDelete.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDelete.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDelete.java
deleted file mode 100644
index c1c10b2..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDelete.java
+++ /dev/null
@@ -1,26 +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.odata4.client.api.edm.v4;
-
-public interface OnDelete {
-
-  OnDeleteAction getAction();
-
-  void setAction(OnDeleteAction action);
-}


[2/3] [OLINGO-169] Making client-api Edm interfaces less dumb

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java
new file mode 100644
index 0000000..d7fa80d
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.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.odata4.client.api.edm.v4;
+
+import org.apache.olingo.odata4.client.api.edm.Named;
+
+public interface OperationImport extends Named, AnnotatedEdmItem {
+
+  String getEntitySet();
+
+  void setEntitySet(String entitySet);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java
new file mode 100644
index 0000000..81a70c1
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+public interface Parameter extends org.apache.olingo.odata4.client.api.edm.CommonParameter {
+
+  String getSrid();
+
+  void setSrid(final String srid);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java
new file mode 100644
index 0000000..a9ea6b6
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4;
+
+import org.apache.olingo.odata4.client.api.edm.CommonProperty;
+
+public interface Property extends CommonProperty, AnnotatedEdmItem {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
index 9ef0556..ac6e520 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
@@ -18,6 +18,18 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
+import java.net.URI;
+import java.util.List;
+
 public interface Reference {
 
+  URI getUri();
+
+  void setUri(URI uri);
+
+  List<? extends Include> getIncludes();
+
+  List<? extends IncludeAnnotations> getIncludeAnnotations();
+
+  List<? extends Annotation> getAnnotations();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
index f6aa5a6..4f0bd60 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
@@ -20,4 +20,12 @@ package org.apache.olingo.odata4.client.api.edm.v4;
 
 public interface ReferentialConstraint {
 
+  String getProperty();
+
+  void setProperty(String property);
+
+  String getReferencedProperty();
+
+  void setReferencedProperty(String referencedProperty);
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java
index b2dbc2b..254f81e 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java
@@ -18,6 +18,31 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
+import java.math.BigInteger;
+
 public interface ReturnType {
 
+  String getMaxLength();
+
+  BigInteger getPrecision();
+
+  BigInteger getScale();
+
+  String getSrid();
+
+  String getType();
+
+  boolean isNullable();
+
+  void setMaxLength(String maxLength);
+
+  void setNullable(boolean nullable);
+
+  void setPrecision(BigInteger precision);
+
+  void setScale(BigInteger scale);
+
+  void setSrid(String srid);
+
+  void setType(String type);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
index 154303a..e443d6b 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
@@ -18,6 +18,15 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
-public interface Singleton {
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.Named;
+
+public interface Singleton extends Named {
+
+  String getType();
+
+  void setType(String type);
+
+  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
index 6c01571..4df1d53 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
@@ -18,6 +18,43 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
-public interface Term {
+import java.math.BigInteger;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.Named;
 
+public interface Term extends Named {
+
+  List<CSDLElement> getAppliesTo();
+
+  String getBaseTerm();
+
+  String getDefaultValue();
+
+  String getMaxLength();
+
+  BigInteger getPrecision();
+
+  BigInteger getScale();
+
+  String getSrid();
+
+  String getType();
+
+  boolean isNullable();
+
+  void setBaseTerm(String baseTerm);
+
+  void setDefaultValue(String defaultValue);
+
+  void setMaxLength(String maxLength);
+
+  void setNullable(boolean nullable);
+
+  void setPrecision(BigInteger precision);
+
+  void setScale(BigInteger scale);
+
+  void setSrid(String srid);
+
+  void setType(String type);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
index 128507c..063d8ee 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
@@ -18,6 +18,35 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4;
 
-public interface TypeDefinition {
+import java.math.BigInteger;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.Named;
 
+public interface TypeDefinition extends Named {
+
+  List<? extends Annotation> getAnnotations();
+
+  String getMaxLength();
+
+  BigInteger getPrecision();
+
+  BigInteger getScale();
+
+  String getSrid();
+
+  String getUnderlyingType();
+
+  boolean isUnicode();
+
+  void setMaxLength(String maxLength);
+
+  void setPrecision(BigInteger precision);
+
+  void setScale(BigInteger scale);
+
+  void setSrid(String srid);
+
+  void setUnderlyingType(String underlyingType);
+
+  void setUnicode(boolean unicode);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
index 21f1719..bbb0a55 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4.annotation;
 
-public interface ConstExprConstruct {
+public interface ConstExprConstruct extends ExprConstruct {
 
   public enum Type {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
index b409059..cc731dc 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
@@ -18,6 +18,6 @@
  */
 package org.apache.olingo.odata4.client.api.edm.v4.annotation;
 
-public interface DynExprConstruct {
+public interface DynExprConstruct extends ExprConstruct {
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java
new file mode 100644
index 0000000..3f13616
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.v4.annotation;
+
+public interface ExprConstruct {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
index b8c2dd5..e6f59db 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.client.api.op;
 
 import java.io.InputStream;
 import java.io.Serializable;
-import org.apache.olingo.odata4.client.api.ODataError;
 import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
 
 /**
@@ -88,7 +87,6 @@ public interface ODataReader extends Serializable {
    * @return OData error.
    */
 //  ODataError readError(InputStream inputStream, boolean isXML);
-
   /**
    * Parses a stream into the object type specified by the given reference.
    *

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
index 1be5f4b..180a8a0 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.client.core.data.impl.v3;
 
 import java.io.InputStream;
+import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
 import org.apache.olingo.odata4.client.core.ODataV3Client;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractODataReader;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmMetadataImpl;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
index 5d1d7a4..63f272a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
@@ -19,9 +19,9 @@
 package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.Annotations;
 
-public abstract class AbstractAnnotations extends AbstractEdmItem implements Annotations {
+public abstract class AbstractAnnotations extends AbstractEdmItem
+        implements org.apache.olingo.odata4.client.api.edm.AbstractAnnotations {
 
   private static final long serialVersionUID = 4926640428016042620L;
 
@@ -31,18 +31,22 @@ public abstract class AbstractAnnotations extends AbstractEdmItem implements Ann
   @JsonProperty("Qualifier")
   private String qualifier;
 
+  @Override
   public String getTarget() {
     return target;
   }
 
+  @Override
   public void setTarget(final String target) {
     this.target = target;
   }
 
+  @Override
   public String getQualifier() {
     return qualifier;
   }
 
+  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
index f3861c8..926db3a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
@@ -20,6 +20,8 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.CommonProperty;
 import org.apache.olingo.odata4.client.core.op.impl.ComplexTypeDeserializer;
 
 @JsonDeserialize(using = ComplexTypeDeserializer.class)
@@ -38,4 +40,14 @@ public abstract class AbstractComplexType extends AbstractEdmItem implements Com
   public void setName(final String name) {
     this.name = name;
   }
+
+  @Override
+  public CommonProperty getProperty(final String name) {
+    return getOneByName(name, getProperties());
+  }
+
+  @Override
+  public CommonNavigationProperty getNavigationProperty(final String name) {
+    return getOneByName(name, getNavigationProperties());
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
index ab1ad1d..378ff01 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
@@ -36,8 +36,8 @@ public abstract class AbstractDataServices extends AbstractEdmItem implements Da
   }
 
   @Override
-  public void setDataServiceVersion(final String dataServiceVersion) {
-    this.dataServiceVersion = dataServiceVersion;
+  public void setDataServiceVersion(final String version) {
+    this.dataServiceVersion = version;
   }
 
   @Override
@@ -46,7 +46,7 @@ public abstract class AbstractDataServices extends AbstractEdmItem implements Da
   }
 
   @Override
-  public void setMaxDataServiceVersion(final String maxDataServiceVersion) {
-    this.maxDataServiceVersion = maxDataServiceVersion;
+  public void setMaxDataServiceVersion(final String version) {
+    this.maxDataServiceVersion = version;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
index da6dca9..f359a04 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
@@ -18,13 +18,32 @@
  */
 package org.apache.olingo.odata4.client.core.edm;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.odata4.client.api.edm.Named;
 
 public abstract class AbstractEdmItem {
 
+  protected <T extends Named> T getOneByName(final String name, final Collection<T> items) {
+    final List<T> result = getAllByName(name, items);
+    return result.isEmpty() ? null : result.get(0);
+  }
+
+  protected <T extends Named> List<T> getAllByName(final String name, final Collection<T> items) {
+    final List<T> result = new ArrayList<T>();
+    for (T type : items) {
+      if (name.equals(type.getName())) {
+        result.add(type);
+      }
+    }
+    return result;
+  }
+
   @Override
   public boolean equals(final Object obj) {
     return EqualsBuilder.reflectionEquals(this, obj);

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
index e9c3810..15789a7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
@@ -19,11 +19,10 @@
 package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.EntityContainer;
 import org.apache.olingo.odata4.client.api.edm.EntitySet;
-import org.apache.olingo.odata4.client.api.edm.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.CommonFunctionImport;
 import org.apache.olingo.odata4.client.core.op.impl.EntityContainerDeserializer;
 
 @JsonDeserialize(using = EntityContainerDeserializer.class)
@@ -39,47 +38,49 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
 
   private boolean defaultEntityContainer;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getExtends() {
     return _extends;
   }
 
+  @Override
   public void setExtends(final String _extends) {
     this._extends = _extends;
   }
 
+  @Override
   public boolean isLazyLoadingEnabled() {
     return lazyLoadingEnabled;
   }
 
+  @Override
   public void setLazyLoadingEnabled(final boolean lazyLoadingEnabled) {
     this.lazyLoadingEnabled = lazyLoadingEnabled;
   }
 
+  @Override
   public boolean isDefaultEntityContainer() {
     return defaultEntityContainer;
   }
 
+  @Override
   public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
     this.defaultEntityContainer = defaultEntityContainer;
   }
 
   @Override
   public EntitySet getEntitySet(final String name) {
-    EntitySet result = null;
-    for (EntitySet entitySet : getEntitySets()) {
-      if (name.equals(entitySet.getName())) {
-        result = entitySet;
-      }
-    }
-    return result;
+    return getOneByName(name, getEntitySets());
   }
 
   /**
@@ -88,11 +89,9 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
    * @param name name.
    * @return function import.
    */
-  public FunctionImport getFunctionImport(final String name) {
-    final List<? extends FunctionImport> funcImps = getFunctionImports(name);
-    return funcImps.isEmpty()
-            ? null
-            : funcImps.get(0);
+  @Override
+  public CommonFunctionImport getFunctionImport(final String name) {
+    return getOneByName(name, getFunctionImports());
   }
 
   /**
@@ -101,13 +100,8 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
    * @param name name.
    * @return function imports.
    */
-  public List<? extends FunctionImport> getFunctionImports(final String name) {
-    final List<FunctionImport> result = new ArrayList<FunctionImport>();
-    for (FunctionImport functionImport : getFunctionImports()) {
-      if (name.equals(functionImport.getName())) {
-        result.add(functionImport);
-      }
-    }
-    return result;
+  @Override
+  public List<? extends CommonFunctionImport> getFunctionImports(final String name) {
+    return getAllByName(name, getFunctionImports());
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
index 741bb3d..27eeabb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.EntityKey;
 import org.apache.olingo.odata4.client.api.edm.EntityType;
 import org.apache.olingo.odata4.client.core.op.impl.EntityTypeDeserializer;
 
@@ -37,42 +38,51 @@ public abstract class AbstractEntityType extends AbstractComplexType implements
 
   private EntityKeyImpl key;
 
+  @Override
   public boolean isAbstractEntityType() {
     return abstractEntityType;
   }
 
+  @Override
   public void setAbstractEntityType(final boolean abstractEntityType) {
     this.abstractEntityType = abstractEntityType;
   }
 
+  @Override
   public String getBaseType() {
     return baseType;
   }
 
+  @Override
   public void setBaseType(final String baseType) {
     this.baseType = baseType;
   }
 
+  @Override
   public boolean isOpenType() {
     return openType;
   }
 
+  @Override
   public void setOpenType(final boolean openType) {
     this.openType = openType;
   }
 
+  @Override
   public EntityKeyImpl getKey() {
     return key;
   }
 
-  public void setKey(final EntityKeyImpl key) {
-    this.key = key;
+  public void setKey(final EntityKey key) {
+    this.key = (EntityKeyImpl) key;
   }
 
+  @Override
   public boolean isHasStream() {
     return hasStream;
   }
 
+  @Override
   public void setHasStream(final boolean hasStream) {
     this.hasStream = hasStream;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractFunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractFunctionImport.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractFunctionImport.java
deleted file mode 100644
index 9f6200d..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractFunctionImport.java
+++ /dev/null
@@ -1,27 +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.odata4.client.core.edm;
-
-import org.apache.olingo.odata4.client.api.edm.FunctionImport;
-
-public abstract class AbstractFunctionImport extends AbstractEdmItem implements FunctionImport {
-
-  private static final long serialVersionUID = 4154308065211315663L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
index b02bbda..c369887 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
@@ -19,19 +19,21 @@
 package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.NavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty;
 
-public class AbstractNavigationProperty extends AbstractEdmItem implements NavigationProperty {
+public class AbstractNavigationProperty extends AbstractEdmItem implements CommonNavigationProperty {
 
   private static final long serialVersionUID = 3112463683071069594L;
 
   @JsonProperty(value = "Name", required = true)
   private String name;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
index 7be7977..f709d50 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
@@ -20,9 +20,9 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.Parameter;
+import org.apache.olingo.odata4.client.api.edm.CommonParameter;
 
-public abstract class AbstractParameter extends AbstractEdmItem implements Parameter {
+public abstract class AbstractParameter extends AbstractEdmItem implements CommonParameter {
 
   private static final long serialVersionUID = -4305016554930334342L;
 
@@ -44,50 +44,62 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Param
   @JsonProperty("Scale")
   private BigInteger scale;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public boolean isNullable() {
     return nullable;
   }
 
+  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
 
+  @Override
   public String getMaxLength() {
     return maxLength;
   }
 
+  @Override
   public void setMaxLength(final String maxLength) {
     this.maxLength = maxLength;
   }
 
+  @Override
   public BigInteger getPrecision() {
     return precision;
   }
 
+  @Override
   public void setPrecision(final BigInteger precision) {
     this.precision = precision;
   }
 
+  @Override
   public BigInteger getScale() {
     return scale;
   }
 
+  @Override
   public void setScale(final BigInteger scale) {
     this.scale = scale;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
index 0cf68bb..893504a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
@@ -20,12 +20,11 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.Property;
+import org.apache.olingo.odata4.client.api.edm.CommonProperty;
 import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
 import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
 
-public abstract class AbstractProperty extends AbstractEdmItem implements Property {
+public abstract class AbstractProperty extends AbstractEdmItem implements CommonProperty {
 
   private static final long serialVersionUID = -6004492361142315153L;
 
@@ -65,24 +64,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Proper
   @JsonProperty(value = "ConcurrencyMode")
   private ConcurrencyMode concurrencyMode;
 
-  @JsonProperty("FC_SourcePath")
-  private String fcSourcePath;
-
-  @JsonProperty("FC_TargetPath")
-  private String fcTargetPath;
-
-  @JsonProperty("FC_ContentKind")
-  private EdmContentKind fcContentKind = EdmContentKind.text;
-
-  @JsonProperty("FC_NsPrefix")
-  private String fcNSPrefix;
-
-  @JsonProperty("FC_NsUri")
-  private String fcNSURI;
-
-  @JsonProperty("FC_KeepInContent")
-  private boolean fcKeepInContent = true;
-
   @JsonProperty("StoreGeneratedPattern")
   private StoreGeneratedPattern storeGeneratedPattern = StoreGeneratedPattern.None;
 
@@ -91,146 +72,121 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Proper
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public boolean isNullable() {
     return nullable;
   }
 
+  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
 
+  @Override
   public String getDefaultValue() {
     return defaultValue;
   }
 
+  @Override
   public void setDefaultValue(final String defaultValue) {
     this.defaultValue = defaultValue;
   }
 
+  @Override
   public String getMaxLength() {
     return maxLength;
   }
 
+  @Override
   public void setMaxLength(final String maxLength) {
     this.maxLength = maxLength;
   }
 
+  @Override
   public boolean isFixedLength() {
     return fixedLength;
   }
 
+  @Override
   public void setFixedLength(final boolean fixedLength) {
     this.fixedLength = fixedLength;
   }
 
+  @Override
   public BigInteger getPrecision() {
     return precision;
   }
 
+  @Override
   public void setPrecision(final BigInteger precision) {
     this.precision = precision;
   }
 
+  @Override
   public BigInteger getScale() {
     return scale;
   }
 
+  @Override
   public void setScale(final BigInteger scale) {
     this.scale = scale;
   }
 
+  @Override
   public boolean isUnicode() {
     return unicode;
   }
 
+  @Override
   public void setUnicode(final boolean unicode) {
     this.unicode = unicode;
   }
 
+  @Override
   public String getCollation() {
     return collation;
   }
 
+  @Override
   public void setCollation(final String collation) {
     this.collation = collation;
   }
 
+  @Override
   public String getSrid() {
     return srid;
   }
 
+  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }
 
+  @Override
   public ConcurrencyMode getConcurrencyMode() {
     return concurrencyMode;
   }
 
+  @Override
   public void setConcurrencyMode(final ConcurrencyMode concurrencyMode) {
     this.concurrencyMode = concurrencyMode;
   }
 
-  public String getFcSourcePath() {
-    return fcSourcePath;
-  }
-
-  public void setFcSourcePath(final String fcSourcePath) {
-    this.fcSourcePath = fcSourcePath;
-  }
-
-  public String getFcTargetPath() {
-    return fcTargetPath;
-  }
-
-  public void setFcTargetPath(final String fcTargetPath) {
-    this.fcTargetPath = fcTargetPath;
-  }
-
-  public EdmContentKind getFcContentKind() {
-    return fcContentKind;
-  }
-
-  public void setFcContentKind(final EdmContentKind fcContentKind) {
-    this.fcContentKind = fcContentKind;
-  }
-
-  public String getFcNSPrefix() {
-    return fcNSPrefix;
-  }
-
-  public void setFcNSPrefix(final String fcNSPrefix) {
-    this.fcNSPrefix = fcNSPrefix;
-  }
-
-  public String getFcNSURI() {
-    return fcNSURI;
-  }
-
-  public void setFcNSURI(final String fcNSURI) {
-    this.fcNSURI = fcNSURI;
-  }
-
-  public boolean isFcKeepInContent() {
-    return fcKeepInContent;
-  }
-
-  public void setFcKeepInContent(final boolean fcKeepInContent) {
-    this.fcKeepInContent = fcKeepInContent;
-  }
-
   public StoreGeneratedPattern getStoreGeneratedPattern() {
     return storeGeneratedPattern;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
index 5aee6e2..809bc8d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
@@ -56,34 +56,16 @@ public abstract class AbstractSchema extends AbstractEdmItem implements Schema {
 
   @Override
   public EnumType getEnumType(final String name) {
-    EnumType result = null;
-    for (EnumType type : getEnumTypes()) {
-      if (name.equals(type.getName())) {
-        result = type;
-      }
-    }
-    return result;
+    return getOneByName(name, getEnumTypes());
   }
 
   @Override
   public ComplexType getComplexType(final String name) {
-    ComplexType result = null;
-    for (ComplexType type : getComplexTypes()) {
-      if (name.equals(type.getName())) {
-        result = type;
-      }
-    }
-    return result;
+    return getOneByName(name, getComplexTypes());
   }
 
   @Override
   public EntityType getEntityType(final String name) {
-    EntityType result = null;
-    for (EntityType type : getEntityTypes()) {
-      if (name.equals(type.getName())) {
-        result = type;
-      }
-    }
-    return result;
+    return getOneByName(name, getEntityTypes());
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
index 75662a4..7d5de43 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
@@ -29,13 +29,10 @@ public class EntityKeyImpl extends AbstractEdmItem implements EntityKey {
 
   private static final long serialVersionUID = 2586047015894794685L;
 
-  private List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
+  private final List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
 
+  @Override
   public List<PropertyRefImpl> getPropertyRefs() {
     return propertyRefs;
   }
-
-  public void setPropertyRefs(final List<PropertyRefImpl> propertyRefs) {
-    this.propertyRefs = propertyRefs;
-  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntitySetImpl.java
deleted file mode 100644
index e65e3d2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntitySetImpl.java
+++ /dev/null
@@ -1,25 +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.odata4.client.core.edm;
-
-public class EntitySetImpl extends AbstractEntitySet {
-
-  private static final long serialVersionUID = 5570833733884884012L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
index 5bf83b6..98f3a8a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import org.apache.olingo.odata4.client.api.edm.v4.OnDeleteAction;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.OnDelete;
+import org.apache.olingo.odata4.client.api.edm.OnDelete;
 
 public class OnDeleteImpl extends AbstractEdmItem implements OnDelete {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
index f31b1a1..f34d0d4 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
@@ -31,18 +31,22 @@ public class PropertyRefImpl extends AbstractEdmItem implements PropertyRef {
   @JsonProperty(value = "Alias")
   private String alias;
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getAlias() {
     return alias;
   }
 
+  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
index 0057dca..7b68771 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
@@ -21,10 +21,11 @@ package org.apache.olingo.odata4.client.core.edm.v3;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.v3.Annotations;
 import org.apache.olingo.odata4.client.core.edm.AbstractAnnotations;
 
 @JsonDeserialize(using = AnnotationsDeserializer.class)
-public class AnnotationsImpl extends AbstractAnnotations {
+public class AnnotationsImpl extends AbstractAnnotations implements Annotations {
 
   private static final long serialVersionUID = 3877353656301805410L;
 
@@ -32,10 +33,12 @@ public class AnnotationsImpl extends AbstractAnnotations {
 
   private final List<ValueAnnotationImpl> valueAnnotations = new ArrayList<ValueAnnotationImpl>();
 
+  @Override
   public List<TypeAnnotationImpl> getTypeAnnotations() {
     return typeAnnotations;
   }
 
+  @Override
   public List<ValueAnnotationImpl> getValueAnnotations() {
     return valueAnnotations;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
index fd235ad..0b41ff7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v3;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.OnDelete;
+import org.apache.olingo.odata4.client.api.edm.OnDelete;
 import org.apache.olingo.odata4.client.api.edm.v3.AssociationEnd;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
@@ -39,34 +39,42 @@ public class AssociationEndImpl extends AbstractEdmItem implements AssociationEn
   @JsonProperty(value = "OnDelete")
   private OnDelete onDelete;
 
+  @Override
   public String getType() {
     return type;
   }
 
+  @Override
   public void setType(final String type) {
     this.type = type;
   }
 
+  @Override
   public String getRole() {
     return role;
   }
 
+  @Override
   public void setRole(final String role) {
     this.role = role;
   }
 
+  @Override
   public String getMultiplicity() {
     return multiplicity;
   }
 
+  @Override
   public void setMultiplicity(final String multiplicity) {
     this.multiplicity = multiplicity;
   }
 
+  @Override
   public OnDelete getOnDelete() {
     return onDelete;
   }
 
+  @Override
   public void setOnDelete(final OnDelete onDelete) {
     this.onDelete = onDelete;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
index edd69a9..f7e2a31 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
@@ -21,11 +21,12 @@ package org.apache.olingo.odata4.client.core.edm.v3;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.v3.Association;
 import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraint;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
 @JsonDeserialize(using = AssociationDeserializer.class)
-public class AssociationImpl extends AbstractEdmItem {
+public class AssociationImpl extends AbstractEdmItem implements Association {
 
   private static final long serialVersionUID = 73763231919532482L;
 
@@ -35,27 +36,28 @@ public class AssociationImpl extends AbstractEdmItem {
 
   private List<AssociationEndImpl> ends = new ArrayList<AssociationEndImpl>();
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public ReferentialConstraint getReferentialConstraint() {
     return referentialConstraint;
   }
 
+  @Override
   public void setReferentialConstraint(final ReferentialConstraint referentialConstraint) {
     this.referentialConstraint = referentialConstraint;
   }
 
+  @Override
   public List<AssociationEndImpl> getEnds() {
     return ends;
   }
-
-  public void setEnds(final List<AssociationEndImpl> ends) {
-    this.ends = ends;
-  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
index 8eca2a6..13abf06 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
@@ -32,18 +32,22 @@ public class AssociationSetEndImpl extends AbstractEdmItem implements Associatio
   @JsonProperty(value = "EntitySet", required = true)
   private String entitySet;
 
+  @Override
   public String getRole() {
     return role;
   }
 
+  @Override
   public void setRole(final String role) {
     this.role = role;
   }
 
+  @Override
   public String getEntitySet() {
     return entitySet;
   }
 
+  @Override
   public void setEntitySet(final String entitySet) {
     this.entitySet = entitySet;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
index 06a603a..557c766 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
@@ -35,22 +35,27 @@ public class AssociationSetImpl extends AbstractEdmItem implements AssociationSe
 
   private List<AssociationSetEndImpl> ends = new ArrayList<AssociationSetEndImpl>();
 
+  @Override
   public String getName() {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getAssociation() {
     return association;
   }
 
+  @Override
   public void setAssociation(final String association) {
     this.association = association;
   }
 
+  @Override
   public List<AssociationSetEndImpl> getEnds() {
     return ends;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
index 044afa2..e755581 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
@@ -21,28 +21,34 @@ package org.apache.olingo.odata4.client.core.edm.v3;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.ComplexType;
-import org.apache.olingo.odata4.client.api.edm.Property;
 import org.apache.olingo.odata4.client.core.edm.AbstractComplexType;
 
 public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
 
   private static final long serialVersionUID = -1251230308269425962L;
 
-  private final List<Property> properties = new ArrayList<Property>();
+  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+
+  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+
+  @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
 
   @Override
-  public List<Property> getProperties() {
+  public List<PropertyImpl> getProperties() {
     return properties;
   }
 
   @Override
-  public Property getProperty(final String name) {
-    Property result = null;
-    for (Property property : getProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
+  public NavigationPropertyImpl getNavigationProperty(String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
   }
+
+  @Override
+  public List<NavigationPropertyImpl> getNavigationProperties() {
+    return navigationProperties;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
index 7622f04..1fc2da2 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
@@ -31,19 +31,18 @@ public class EntityTypeImpl extends AbstractEntityType {
   private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
 
   @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
   public List<PropertyImpl> getProperties() {
     return properties;
   }
 
   @Override
-  public PropertyImpl getProperty(final String name) {
-    PropertyImpl result = null;
-    for (PropertyImpl property : getProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
+  public NavigationPropertyImpl getNavigationProperty(final String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
   }
 
   @Override
@@ -51,15 +50,4 @@ public class EntityTypeImpl extends AbstractEntityType {
     return navigationProperties;
   }
 
-  @Override
-  public NavigationPropertyImpl getNavigationProperty(final String name) {
-    NavigationPropertyImpl result = null;
-    for (NavigationPropertyImpl property : getNavigationProperties()) {
-      if (name.equals(property.getName())) {
-        result = property;
-      }
-    }
-    return result;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
index bbdc314..621e919 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
@@ -21,10 +21,10 @@ package org.apache.olingo.odata4.client.core.edm.v3;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.olingo.odata4.client.core.edm.AbstractFunctionImport;
+import org.apache.olingo.odata4.client.api.edm.v3.FunctionImport;
 
 @JsonDeserialize(using = FunctionImportDeserializer.class)
-public class FunctionImportImpl extends AbstractFunctionImport {
+public class FunctionImportImpl implements FunctionImport {
 
   private static final long serialVersionUID = -6214472528425935461L;
 
@@ -53,14 +53,17 @@ public class FunctionImportImpl extends AbstractFunctionImport {
     return name;
   }
 
+  @Override
   public void setName(final String name) {
     this.name = name;
   }
 
+  @Override
   public String getReturnType() {
     return returnType;
   }
 
+  @Override
   public void setReturnType(final String returnType) {
     this.returnType = returnType;
   }
@@ -70,58 +73,72 @@ public class FunctionImportImpl extends AbstractFunctionImport {
     return entitySet;
   }
 
+  @Override
   public void setEntitySet(final String entitySet) {
     this.entitySet = entitySet;
   }
 
+  @Override
   public String getEntitySetPath() {
     return entitySetPath;
   }
 
+  @Override
   public void setEntitySetPath(final String entitySetPath) {
     this.entitySetPath = entitySetPath;
   }
 
+  @Override
   public boolean isComposable() {
     return composable;
   }
 
+  @Override
   public void setComposable(final boolean composable) {
     this.composable = composable;
   }
 
+  @Override
   public boolean isSideEffecting() {
     return sideEffecting;
   }
 
+  @Override
   public void setSideEffecting(final boolean sideEffecting) {
     this.sideEffecting = sideEffecting;
   }
 
+  @Override
   public boolean isBindable() {
     return bindable;
   }
 
+  @Override
   public void setBindable(final boolean bindable) {
     this.bindable = bindable;
   }
 
+  @Override
   public boolean isAlwaysBindable() {
     return alwaysBindable;
   }
 
+  @Override
   public void setAlwaysBindable(final boolean alwaysBindable) {
     this.alwaysBindable = alwaysBindable;
   }
 
+  @Override
   public String getHttpMethod() {
     return httpMethod;
   }
 
+  @Override
   public void setHttpMethod(final String httpMethod) {
     this.httpMethod = httpMethod;
   }
 
+  @Override
   public List<ParameterImpl> getParameters() {
     return parameters;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
index f1092e5..64ed274 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
@@ -18,10 +18,9 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v3;
 
-import org.apache.olingo.odata4.client.api.edm.Member;
 import org.apache.olingo.odata4.client.core.edm.AbstractMember;
 
-public class MemberImpl extends AbstractMember implements Member {
+public class MemberImpl extends AbstractMember {
 
   private static final long serialVersionUID = 6605381518349837929L;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java
index 306950e..1371177 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java
@@ -19,9 +19,10 @@
 package org.apache.olingo.odata4.client.core.edm.v3;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.v3.NavigationProperty;
 import org.apache.olingo.odata4.client.core.edm.AbstractNavigationProperty;
 
-public class NavigationPropertyImpl extends AbstractNavigationProperty {
+public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty {
 
   private static final long serialVersionUID = -2889417442815563307L;
 
@@ -34,26 +35,32 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty {
   @JsonProperty(value = "FromRole", required = true)
   private String fromRole;
 
+  @Override
   public String getRelationship() {
     return relationship;
   }
 
+  @Override
   public void setRelationship(final String relationship) {
     this.relationship = relationship;
   }
 
+  @Override
   public String getToRole() {
     return toRole;
   }
 
+  @Override
   public void setToRole(final String toRole) {
     this.toRole = toRole;
   }
 
+  @Override
   public String getFromRole() {
     return fromRole;
   }
 
+  @Override
   public void setFromRole(final String fromRole) {
     this.fromRole = fromRole;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java
index 55fb720..cf3d96e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java
@@ -20,19 +20,22 @@ package org.apache.olingo.odata4.client.core.edm.v3;
 
 import org.apache.olingo.odata4.client.api.edm.v3.ParameterMode;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.v3.Parameter;
 import org.apache.olingo.odata4.client.core.edm.AbstractParameter;
 
-public class ParameterImpl extends AbstractParameter {
+public class ParameterImpl extends AbstractParameter implements Parameter {
 
   private static final long serialVersionUID = 7596724999614891358L;
 
   @JsonProperty("Mode")
   private ParameterMode mode;
 
+  @Override
   public ParameterMode getMode() {
     return mode;
   }
 
+  @Override
   public void setMode(final ParameterMode mode) {
     this.mode = mode;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
index f7b8f5c..b90f4b9 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
@@ -18,10 +18,79 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v3;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.v3.Property;
 import org.apache.olingo.odata4.client.core.edm.AbstractProperty;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
 
-public class PropertyImpl extends AbstractProperty {
+public class PropertyImpl extends AbstractProperty implements Property {
 
   private static final long serialVersionUID = 6224524803474652100L;
 
+  @JsonProperty("FC_SourcePath")
+  private String fcSourcePath;
+
+  @JsonProperty("FC_TargetPath")
+  private String fcTargetPath;
+
+  @JsonProperty("FC_ContentKind")
+  private EdmContentKind fcContentKind = EdmContentKind.text;
+
+  @JsonProperty("FC_NsPrefix")
+  private String fcNSPrefix;
+
+  @JsonProperty("FC_NsUri")
+  private String fcNSURI;
+
+  @JsonProperty("FC_KeepInContent")
+  private boolean fcKeepInContent = true;
+
+  public String getFcSourcePath() {
+    return fcSourcePath;
+  }
+
+  public void setFcSourcePath(final String fcSourcePath) {
+    this.fcSourcePath = fcSourcePath;
+  }
+
+  public String getFcTargetPath() {
+    return fcTargetPath;
+  }
+
+  public void setFcTargetPath(final String fcTargetPath) {
+    this.fcTargetPath = fcTargetPath;
+  }
+
+  public EdmContentKind getFcContentKind() {
+    return fcContentKind;
+  }
+
+  public void setFcContentKind(final EdmContentKind fcContentKind) {
+    this.fcContentKind = fcContentKind;
+  }
+
+  public String getFcNSPrefix() {
+    return fcNSPrefix;
+  }
+
+  public void setFcNSPrefix(final String fcNSPrefix) {
+    this.fcNSPrefix = fcNSPrefix;
+  }
+
+  public String getFcNSURI() {
+    return fcNSURI;
+  }
+
+  public void setFcNSURI(final String fcNSURI) {
+    this.fcNSURI = fcNSURI;
+  }
+
+  public boolean isFcKeepInContent() {
+    return fcKeepInContent;
+  }
+
+  public void setFcKeepInContent(final boolean fcKeepInContent) {
+    this.fcKeepInContent = fcKeepInContent;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
index a3607a6..0d8b5d7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
@@ -53,66 +53,82 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
   @JsonProperty("DateTime")
   private Date dateTime;
 
+  @Override
   public String getProperty() {
     return property;
   }
 
+  @Override
   public void setProperty(final String property) {
     this.property = property;
   }
 
+  @Override
   public String getPath() {
     return path;
   }
 
+  @Override
   public void setPath(final String path) {
     this.path = path;
   }
 
+  @Override
   public String getString() {
     return string;
   }
 
+  @Override
   public void setString(final String string) {
     this.string = string;
   }
 
+  @Override
   public BigInteger getInt() {
     return _int;
   }
 
+  @Override
   public void setInt(final BigInteger _int) {
     this._int = _int;
   }
 
+  @Override
   public Double getFloat() {
     return _float;
   }
 
+  @Override
   public void setFloat(final Double _float) {
     this._float = _float;
   }
 
+  @Override
   public BigDecimal getDecimal() {
     return decimal;
   }
 
+  @Override
   public void setDecimal(final BigDecimal decimal) {
     this.decimal = decimal;
   }
 
+  @Override
   public Boolean getBool() {
     return bool;
   }
 
+  @Override
   public void setBool(final Boolean bool) {
     this.bool = bool;
   }
 
+  @Override
   public Date getDateTime() {
     return dateTime;
   }
 
+  @Override
   public void setDateTime(final Date dateTime) {
     this.dateTime = dateTime;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
index c03bea7..a399c2f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
@@ -18,8 +18,10 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v3;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraint;
+import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraintRole;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 
 public class ReferentialConstraintImpl extends AbstractEdmItem implements ReferentialConstraint {
@@ -27,24 +29,30 @@ public class ReferentialConstraintImpl extends AbstractEdmItem implements Refere
   private static final long serialVersionUID = 9067893732765127269L;
 
   @JsonProperty(value = "Principal", required = true)
-  private ReferentialConstraintRole principal;
+  private ReferentialConstraintRoleImpl principal;
 
   @JsonProperty(value = "Dependent", required = true)
-  private ReferentialConstraintRole dependent;
+  private ReferentialConstraintRoleImpl dependent;
 
-  public ReferentialConstraintRole getPrincipal() {
+  @Override
+  public ReferentialConstraintRoleImpl getPrincipal() {
     return principal;
   }
 
+  @JsonIgnore
+  @Override
   public void setPrincipal(final ReferentialConstraintRole principal) {
-    this.principal = principal;
+    this.principal = (ReferentialConstraintRoleImpl) principal;
   }
 
-  public ReferentialConstraintRole getDependent() {
+  @Override
+  public ReferentialConstraintRoleImpl getDependent() {
     return dependent;
   }
 
+  @JsonIgnore
+  @Override
   public void setDependent(final ReferentialConstraintRole dependent) {
-    this.dependent = dependent;
+    this.dependent = (ReferentialConstraintRoleImpl) dependent;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRole.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRole.java
deleted file mode 100644
index d274115..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRole.java
+++ /dev/null
@@ -1,51 +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.odata4.client.core.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.PropertyRef;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-@JsonDeserialize(using = ReferentialConstraintRoleDeserializer.class)
-public class ReferentialConstraintRole extends AbstractEdmItem {
-
-  private static final long serialVersionUID = -3712887115248634164L;
-
-  private String role;
-
-  private List<PropertyRef> propertyRefs = new ArrayList<PropertyRef>();
-
-  public String getRole() {
-    return role;
-  }
-
-  public void setRole(final String role) {
-    this.role = role;
-  }
-
-  public List<PropertyRef> getPropertyRefs() {
-    return propertyRefs;
-  }
-
-  public void setPropertyRefs(final List<PropertyRef> propertyRefs) {
-    this.propertyRefs = propertyRefs;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
index 3de9321..e09e94e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
@@ -26,13 +26,13 @@ import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 import org.apache.olingo.odata4.client.core.edm.PropertyRefImpl;
 
-public class ReferentialConstraintRoleDeserializer extends AbstractEdmDeserializer<ReferentialConstraintRole> {
+public class ReferentialConstraintRoleDeserializer extends AbstractEdmDeserializer<ReferentialConstraintRoleImpl> {
 
   @Override
-  protected ReferentialConstraintRole doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+  protected ReferentialConstraintRoleImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
           throws IOException, JsonProcessingException {
 
-    final ReferentialConstraintRole refConstRole = new ReferentialConstraintRole();
+    final ReferentialConstraintRoleImpl refConstRole = new ReferentialConstraintRoleImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java
new file mode 100644
index 0000000..bb2e0f2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraintRole;
+import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
+import org.apache.olingo.odata4.client.core.edm.PropertyRefImpl;
+
+@JsonDeserialize(using = ReferentialConstraintRoleDeserializer.class)
+public class ReferentialConstraintRoleImpl extends AbstractEdmItem implements ReferentialConstraintRole {
+
+  private static final long serialVersionUID = -3712887115248634164L;
+
+  private String role;
+
+  private List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
+
+  @Override
+  public String getRole() {
+    return role;
+  }
+
+  @Override
+  public void setRole(final String role) {
+    this.role = role;
+  }
+
+  public List<PropertyRefImpl> getPropertyRefs() {
+    return propertyRefs;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
index a9f699b..8ff28ca 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
@@ -44,13 +44,7 @@ public class SchemaImpl extends AbstractSchema implements Schema {
   private final List<ValueTermImpl> valueTerms = new ArrayList<ValueTermImpl>();
 
   public AssociationImpl getAssociation(final String name) {
-    AssociationImpl result = null;
-    for (AssociationImpl association : getAssociations()) {
-      if (name.equals(association.getName())) {
-        result = association;
-      }
-    }
-    return result;
+    return getOneByName(name, getAssociations());
   }
 
   @Override
@@ -99,13 +93,7 @@ public class SchemaImpl extends AbstractSchema implements Schema {
 
   @Override
   public EntityContainerImpl getEntityContainer(final String name) {
-    EntityContainerImpl result = null;
-    for (EntityContainerImpl container : getEntityContainers()) {
-      if (name.equals(container.getName())) {
-        result = container;
-      }
-    }
-    return result;
+    return getOneByName(name, getEntityContainers());
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df906e43/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
index 23a2586..a2cb890 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
@@ -27,32 +27,37 @@ import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
 @JsonDeserialize(using = TypeAnnotationDeserializer.class)
 public class TypeAnnotationImpl extends AbstractEdmItem implements TypeAnnotation {
 
-    private static final long serialVersionUID = -7585489230017331877L;
+  private static final long serialVersionUID = -7585489230017331877L;
 
-    private String term;
+  private String term;
 
-    private String qualifier;
+  private String qualifier;
 
-    private List<PropertyValueImpl> propertyValues = new ArrayList<PropertyValueImpl>();
+  private List<PropertyValueImpl> propertyValues = new ArrayList<PropertyValueImpl>();
 
-    public String getTerm() {
-        return term;
-    }
+  @Override
+  public String getTerm() {
+    return term;
+  }
 
-    public void setTerm(final String term) {
-        this.term = term;
-    }
+  @Override
+  public void setTerm(final String term) {
+    this.term = term;
+  }
 
-    public String getQualifier() {
-        return qualifier;
-    }
+  @Override
+  public String getQualifier() {
+    return qualifier;
+  }
 
-    public void setQualifier(final String qualifier) {
-        this.qualifier = qualifier;
-    }
+  @Override
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
 
-    public List<PropertyValueImpl> getPropertyValues() {
-        return propertyValues;
-    }
+  @Override
+  public List<PropertyValueImpl> getPropertyValues() {
+    return propertyValues;
+  }
 
 }