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

[1/7] git commit: Upgrading commons lang to 3.3

Repository: incubator-olingo-odata4
Updated Branches:
  refs/heads/olingo169 c4239fc93 -> 31b6c8c09


Upgrading commons lang to 3.3


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

Branch: refs/heads/olingo169
Commit: 5fc405bfd14f99bce6c0c8947c1a038812ed1dbc
Parents: c4239fc
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 6 11:15:24 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 6 11:15:24 2014 +0100

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/5fc405bf/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b458284..c60acda 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,7 +64,7 @@
   <properties>
     <commons.codec.version>1.9</commons.codec.version>
     <commons.io.version>2.4</commons.io.version>
-    <commons.lang3.version>3.2.1</commons.lang3.version>
+    <commons.lang3.version>3.3</commons.lang3.version>
 
     <hc.client.version>4.2.6</hc.client.version>
     <jackson.version>2.3.2</jackson.version>


[4/7] [OLINGO-169] client-api interface refinements + proxy of Edm interfaces for V3 functionImport

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
index 45c15d3..25a6c27 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
@@ -33,14 +33,18 @@ import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
 import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
 import org.apache.olingo.odata4.client.api.edm.xml.Schema;
 import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
 import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
 import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.ActionImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
+import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Action;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Function;
+import org.apache.olingo.odata4.client.api.http.HttpMethod;
+import org.apache.olingo.odata4.client.core.edm.v3.EdmActionProxy;
+import org.apache.olingo.odata4.client.core.edm.v3.EdmFunctionProxy;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
@@ -121,11 +125,14 @@ public class EdmClientImpl extends AbstractEdmImpl {
     EdmTypeDefinition result = null;
 
     final Schema schema = xmlMetadata.getSchema(typeDefinitionName.getNamespace());
-    if (schema instanceof SchemaImpl) {
-      final TypeDefinition xmlTypeDefinition = ((SchemaImpl) schema).getTypeDefinition(typeDefinitionName.getName());
+    if (schema instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) {
+      final TypeDefinition xmlTypeDefinition = ((org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) schema).
+              getTypeDefinition(typeDefinitionName.getName());
       if (xmlTypeDefinition != null) {
         result = new EdmTypeDefinitionImpl(this, typeDefinitionName, xmlTypeDefinition);
       }
+    } else {
+      throw new UnsupportedInV3Exception();
     }
 
     return result;
@@ -149,31 +156,50 @@ public class EdmClientImpl extends AbstractEdmImpl {
     EdmComplexType result = null;
 
     final Schema schema = xmlMetadata.getSchema(complexTypeName.getNamespace());
-    if (schema instanceof SchemaImpl) {
-      final ComplexType xmlComplexType = ((SchemaImpl) schema).getComplexType(complexTypeName.getName());
-      if (xmlComplexType != null) {
-        result = EdmComplexTypeImpl.getInstance(this, complexTypeName, xmlComplexType);
-      }
+    final ComplexType xmlComplexType = schema.getComplexType(complexTypeName.getName());
+    if (xmlComplexType != null) {
+      result = EdmComplexTypeImpl.getInstance(this, complexTypeName, xmlComplexType);
     }
 
     return result;
   }
 
+  private boolean canProxyFunction(final FunctionImport functionImport) {
+    return functionImport.getHttpMethod() == null
+            ? !functionImport.isSideEffecting()
+            : HttpMethod.GET.name().equals(functionImport.getHttpMethod());
+  }
+
   @Override
   protected EdmAction createUnboundAction(final FullQualifiedName actionName) {
     EdmAction result = null;
 
     final Schema schema = xmlMetadata.getSchema(actionName.getNamespace());
-    if (schema instanceof SchemaImpl) {
-      final List<ActionImpl> actions = ((SchemaImpl) schema).getActions(actionName.getName());
+    if (schema instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) {
+      final List<Action> actions = ((org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) schema).
+              getActions(actionName.getName());
       boolean found = false;
-      for (Iterator<ActionImpl> itor = actions.iterator(); itor.hasNext() && !found;) {
-        final ActionImpl action = itor.next();
+      for (final Iterator<Action> itor = actions.iterator(); itor.hasNext() && !found;) {
+        final Action action = itor.next();
         if (!action.isBound()) {
           found = true;
           result = EdmActionImpl.getInstance(this, actionName, action);
         }
       }
+    } else {
+      for (EntityContainer entityContainer : schema.getEntityContainers()) {
+        @SuppressWarnings("unchecked")
+        final List<FunctionImport> functionImports = (List<FunctionImport>) entityContainer.
+                getFunctionImports(actionName.getName());
+        boolean found = false;
+        for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
+          final FunctionImport functionImport = itor.next();
+          if (!canProxyFunction(functionImport) && !functionImport.isBindable()) {
+            found = functionImport.getParameters().isEmpty();
+            result = EdmActionProxy.getInstance(this, actionName, functionImport);
+          }
+        }
+      }
     }
 
     return result;
@@ -184,11 +210,12 @@ public class EdmClientImpl extends AbstractEdmImpl {
     EdmFunction result = null;
 
     final Schema schema = xmlMetadata.getSchema(functionName.getNamespace());
-    if (schema instanceof SchemaImpl) {
-      final List<FunctionImpl> functions = ((SchemaImpl) schema).getFunctions(functionName.getName());
+    if (schema instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) {
+      final List<Function> functions = ((org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) schema).
+              getFunctions(functionName.getName());
       boolean found = false;
-      for (Iterator<FunctionImpl> itor = functions.iterator(); itor.hasNext() && !found;) {
-        final FunctionImpl function = itor.next();
+      for (final Iterator<Function> itor = functions.iterator(); itor.hasNext() && !found;) {
+        final Function function = itor.next();
         if (!function.isBound()) {
           final Set<String> functionParamNames = new HashSet<String>();
           for (CommonParameter param : function.getParameters()) {
@@ -200,6 +227,26 @@ public class EdmClientImpl extends AbstractEdmImpl {
           result = EdmFunctionImpl.getInstance(this, functionName, function);
         }
       }
+    } else {
+      for (EntityContainer entityContainer : schema.getEntityContainers()) {
+        @SuppressWarnings("unchecked")
+        final List<FunctionImport> functionImports = (List<FunctionImport>) entityContainer.
+                getFunctionImports(functionName.getName());
+        boolean found = false;
+        for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
+          final FunctionImport functionImport = itor.next();
+          if (canProxyFunction(functionImport) && !functionImport.isBindable()) {
+            final Set<String> functionParamNames = new HashSet<String>();
+            for (CommonParameter param : functionImport.getParameters()) {
+              functionParamNames.add(param.getName());
+            }
+            found = parameterNames == null
+                    ? functionParamNames.isEmpty()
+                    : functionParamNames.containsAll(parameterNames);
+            result = EdmFunctionProxy.getInstance(this, functionName, functionImport);
+          }
+        }
+      }
     }
 
     return result;
@@ -212,11 +259,12 @@ public class EdmClientImpl extends AbstractEdmImpl {
     EdmAction result = null;
 
     final Schema schema = xmlMetadata.getSchema(actionName.getNamespace());
-    if (schema instanceof SchemaImpl) {
-      final List<ActionImpl> actions = ((SchemaImpl) schema).getActions(actionName.getName());
+    if (schema instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) {
+      final List<Action> actions = ((org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) schema).
+              getActions(actionName.getName());
       boolean found = false;
-      for (Iterator<ActionImpl> itor = actions.iterator(); itor.hasNext() && !found;) {
-        final ActionImpl action = itor.next();
+      for (final Iterator<Action> itor = actions.iterator(); itor.hasNext() && !found;) {
+        final Action action = itor.next();
         if (action.isBound()) {
           final EdmTypeInfo boundParam = new EdmTypeInfo(action.getParameters().get(0).getType());
           if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
@@ -227,6 +275,25 @@ public class EdmClientImpl extends AbstractEdmImpl {
           }
         }
       }
+    } else {
+      for (EntityContainer entityContainer : schema.getEntityContainers()) {
+        @SuppressWarnings("unchecked")
+        final List<FunctionImport> functionImports = (List<FunctionImport>) entityContainer.
+                getFunctionImports(actionName.getName());
+        boolean found = false;
+        for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
+          final FunctionImport functionImport = itor.next();
+          if (!canProxyFunction(functionImport) && functionImport.isBindable()) {
+            final EdmTypeInfo boundParam = new EdmTypeInfo(functionImport.getParameters().get(0).getType());
+            if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
+                    && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+
+              found = true;
+              result = EdmActionProxy.getInstance(this, actionName, functionImport);
+            }
+          }
+        }
+      }
     }
 
     return result;
@@ -240,11 +307,12 @@ public class EdmClientImpl extends AbstractEdmImpl {
     EdmFunction result = null;
 
     final Schema schema = xmlMetadata.getSchema(functionName.getNamespace());
-    if (schema instanceof SchemaImpl) {
-      final List<FunctionImpl> functions = ((SchemaImpl) schema).getFunctions(functionName.getName());
+    if (schema instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) {
+      final List<Function> functions = ((org.apache.olingo.odata4.client.api.edm.xml.v4.Schema) schema).
+              getFunctions(functionName.getName());
       boolean found = false;
-      for (Iterator<FunctionImpl> itor = functions.iterator(); itor.hasNext() && !found;) {
-        final FunctionImpl function = itor.next();
+      for (final Iterator<Function> itor = functions.iterator(); itor.hasNext() && !found;) {
+        final Function function = itor.next();
         if (function.isBound()) {
           final EdmTypeInfo boundParam = new EdmTypeInfo(function.getParameters().get(0).getType());
           if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
@@ -261,6 +329,31 @@ public class EdmClientImpl extends AbstractEdmImpl {
           }
         }
       }
+    } else {
+      for (EntityContainer entityContainer : schema.getEntityContainers()) {
+        @SuppressWarnings("unchecked")
+        final List<FunctionImport> functionImports = (List<FunctionImport>) entityContainer.
+                getFunctionImports(functionName.getName());
+        boolean found = false;
+        for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
+          final FunctionImport functionImport = itor.next();
+          if (!canProxyFunction(functionImport) && functionImport.isBindable()) {
+            final EdmTypeInfo boundParam = new EdmTypeInfo(functionImport.getParameters().get(0).getType());
+            if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
+                    && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+
+              final Set<String> functionParamNames = new HashSet<String>();
+              for (CommonParameter param : functionImport.getParameters()) {
+                functionParamNames.add(param.getName());
+              }
+              found = parameterNames == null
+                      ? functionParamNames.isEmpty()
+                      : functionParamNames.containsAll(parameterNames);
+              result = EdmFunctionProxy.getInstance(this, functionName, functionImport);
+            }
+          }
+        }
+      }
     }
 
     return result;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java
index c036172..b10bf79 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm;
 
 import java.util.Map;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
 import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
@@ -35,8 +35,12 @@ public class EdmComplexTypeImpl extends AbstractEdmComplexType {
   public static EdmComplexTypeImpl getInstance(final Edm edm, final FullQualifiedName fqn,
           final ComplexType complexType) {
 
-    final FullQualifiedName baseTypeName = complexType.getBaseType() == null
-            ? null : new EdmTypeInfo(complexType.getBaseType()).getFullQualifiedName();
+    FullQualifiedName baseTypeName = null;
+    if (complexType instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType) {
+      final String baseType = ((org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType) complexType).getBaseType();
+      baseTypeName = baseType == null
+              ? null : new EdmTypeInfo(baseType).getFullQualifiedName();
+    }
     final EdmComplexTypeImpl instance = new EdmComplexTypeImpl(edm, fqn, baseTypeName, complexType);
     instance.baseType = instance.buildBaseType(baseTypeName);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
index 31269a2..2f9ac88 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
@@ -19,11 +19,15 @@
 package org.apache.olingo.odata4.client.core.edm;
 
 import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
 import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.core.edm.v3.EdmActionImportProxy;
+import org.apache.olingo.odata4.client.core.edm.v3.EdmFunctionImportProxy;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
@@ -46,7 +50,12 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
 
   @Override
   protected EdmSingleton createSingleton(final String singletonName) {
-    final Singleton singleton = xmlEntityContainer.getSingleton(singletonName);
+    if (!(xmlEntityContainer instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer)) {
+      throw new UnsupportedInV3Exception();
+    }
+
+    final Singleton singleton = ((org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer) xmlEntityContainer).
+            getSingleton(singletonName);
     if (singleton == null) {
       throw new EdmException("Singleton named '" + singletonName + "' not found in " + entityContainerName);
     }
@@ -57,7 +66,7 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
 
   @Override
   protected EdmEntitySet createEntitySet(final String entitySetName) {
-    final EntitySet entitySet = (EntitySet) xmlEntityContainer.getEntitySet(entitySetName);
+    final EntitySet entitySet = xmlEntityContainer.getEntitySet(entitySetName);
     if (entitySet == null) {
       throw new EdmException("EntitySet named '" + entitySetName + "' not found in " + entityContainerName);
     }
@@ -68,20 +77,36 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
 
   @Override
   protected EdmActionImport createActionImport(final String actionImportName) {
-    final ActionImport actionImport = xmlEntityContainer.getActionImport(actionImportName);
-    if (actionImport == null) {
-      throw new EdmException("ActionImport named '" + actionImportName + "' not found in " + entityContainerName);
+    if (xmlEntityContainer instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer) {
+      final ActionImport actionImport
+              = ((org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer) xmlEntityContainer).
+              getActionImport(actionImportName);
+      if (actionImport == null) {
+        throw new EdmException("ActionImport named '" + actionImportName + "' not found in " + entityContainerName);
+      }
+      return new EdmActionImportImpl(edm, this, actionImportName, actionImport);
+    } else {
+      final FunctionImport functionImport = (FunctionImport) xmlEntityContainer.getFunctionImport(actionImportName);
+      if (functionImport == null) {
+        throw new EdmException("FunctionImport named '" + actionImportName + "' not found in " + entityContainerName);
+      }
+      return new EdmActionImportProxy(edm, this, actionImportName, (FunctionImport) functionImport);
     }
-    return new EdmActionImportImpl(edm, this, actionImportName, actionImport);
   }
 
   @Override
   protected EdmFunctionImport createFunctionImport(final String functionImportName) {
-    final FunctionImport functionImport = (FunctionImport) xmlEntityContainer.getFunctionImport(functionImportName);
+    final CommonFunctionImport functionImport = xmlEntityContainer.getFunctionImport(functionImportName);
     if (functionImport == null) {
       throw new EdmException("FunctionImport named '" + functionImportName + "' not found in " + entityContainerName);
     }
-    return new EdmFunctionImportImpl(edm, this, functionImportName, functionImport);
-  }
 
+    if (functionImport instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport) {
+      return new EdmFunctionImportImpl(edm, this, functionImportName,
+              (org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport) functionImport);
+    } else {
+      return new EdmFunctionImportProxy(edm, this, functionImportName, 
+              (org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport) functionImport);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
index 669e431..14e1eb4 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm;
 
-import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
index 8c65d59..8a7ef6d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
@@ -33,7 +33,7 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
   public EdmFunctionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
           final FunctionImport functionImport) {
 
-    super(edm, container, name, functionImport);
+    super(edm, container, name, functionImport.getEntitySet());
     this.functionImport = functionImport;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java
index 932fe57..0fac59c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java
@@ -33,15 +33,12 @@ public abstract class EdmOperationImpl extends AbstractEdmOperation {
   protected final Action operation;
 
   protected static <T extends EdmOperationImpl> T getInstance(final T instance) {
-
     final List<? extends CommonParameter> parameters = instance.operation.getParameters();
-    if (parameters != null) {
-      final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(parameters.size());
-      for (CommonParameter parameter : parameters) {
-        _parameters.add(EdmParameterImpl.getInstance(instance.edm, parameter));
-      }
-      instance.setParameters(_parameters);
+    final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(parameters.size());
+    for (CommonParameter parameter : parameters) {
+      _parameters.add(EdmParameterImpl.getInstance(instance.edm, parameter));
     }
+    instance.setParameters(_parameters);
 
     instance.setEntitySetPath(instance.operation.getEntitySetPath());
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java
index 450ebc2..d73b8fb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.core.edm;
 
-import org.apache.olingo.odata4.client.api.edm.xml.v4.OperationImport;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.Target;
@@ -27,9 +26,9 @@ import org.apache.olingo.odata4.commons.core.edm.AbstractEdmOperationImport;
 public abstract class EdmOperationImportImpl extends AbstractEdmOperationImport {
 
   protected EdmOperationImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
-          final OperationImport operationImport) {
+          final String entitySet) {
 
-    super(edm, container, name, new Target.Builder(operationImport.getEntitySet(), container).build());
+    super(edm, container, name, entitySet == null ? null : new Target.Builder(entitySet, container).build());
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionImportProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionImportProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionImportProxy.java
new file mode 100644
index 0000000..ddf1b7c
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionImportProxy.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.core.edm.v3;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.client.core.edm.EdmOperationImportImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+
+public class EdmActionImportProxy extends EdmOperationImportImpl implements EdmActionImport {
+
+  private final FunctionImport functionImport;
+
+  public EdmActionImportProxy(final Edm edm, final EdmEntityContainer container, final String name,
+          final FunctionImport functionImport) {
+
+    super(edm, container, name, functionImport.getEntitySet());
+    this.functionImport = functionImport;
+  }
+
+  @Override
+  public EdmAction getAction() {
+    return edm.getAction(
+            new EdmTypeInfo(functionImport.getName(), container.getNamespace()).getFullQualifiedName(), null, null);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionProxy.java
new file mode 100644
index 0000000..9bb0ac7
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmActionProxy.java
@@ -0,0 +1,39 @@
+/*
+ * 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 org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public class EdmActionProxy extends EdmOperationProxy implements EdmAction {
+
+  public static EdmActionProxy getInstance(final Edm edm, final FullQualifiedName name,
+          final FunctionImport functionImport) {
+
+    return EdmActionProxy.getInstance(new EdmActionProxy(edm, name, functionImport));
+  }
+
+  private EdmActionProxy(final Edm edm, final FullQualifiedName name, final FunctionImport functionImport) {
+    super(edm, name, functionImport, EdmTypeKind.ACTION);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionImportProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionImportProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionImportProxy.java
new file mode 100644
index 0000000..345dd6d
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionImportProxy.java
@@ -0,0 +1,47 @@
+/*
+ * 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 java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.client.core.edm.EdmOperationImportImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
+
+public class EdmFunctionImportProxy extends EdmOperationImportImpl implements EdmFunctionImport {
+
+  private final FunctionImport functionImport;
+
+  public EdmFunctionImportProxy(final Edm edm, final EdmEntityContainer container, final String name,
+          final FunctionImport functionImport) {
+
+    super(edm, container, name, functionImport.getEntitySet());
+    this.functionImport = functionImport;
+  }
+
+  @Override
+  public EdmFunction getFunction(final List<String> parameterNames) {
+    return edm.getFunction(
+            new EdmTypeInfo(functionImport.getName(), container.getNamespace()).getFullQualifiedName(),
+            null, null, parameterNames);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionProxy.java
new file mode 100644
index 0000000..db130a5
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmFunctionProxy.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.core.edm.v3;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public class EdmFunctionProxy extends EdmOperationProxy implements EdmFunction {
+
+  public static EdmFunctionProxy getInstance(final Edm edm, final FullQualifiedName name,
+          final FunctionImport functionImport) {
+
+    return EdmFunctionProxy.getInstance(new EdmFunctionProxy(edm, name, functionImport));
+  }
+
+  private EdmFunctionProxy(final Edm edm, final FullQualifiedName name, final FunctionImport functionImport) {
+    super(edm, name, functionImport, EdmTypeKind.FUNCTION);
+  }
+
+  @Override
+  public boolean isComposable() {
+    return functionImport.isComposable();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmOperationProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmOperationProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmOperationProxy.java
new file mode 100644
index 0000000..c81d6a9
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmOperationProxy.java
@@ -0,0 +1,64 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Parameter;
+import org.apache.olingo.odata4.client.core.edm.EdmParameterImpl;
+import org.apache.olingo.odata4.client.core.edm.EdmReturnTypeImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmParameter;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmOperation;
+
+public class EdmOperationProxy extends AbstractEdmOperation {
+
+  protected final FunctionImport functionImport;
+
+  protected static <T extends EdmOperationProxy> T getInstance(final T instance) {
+    final List<Parameter> parameters = instance.functionImport.getParameters();
+    final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(parameters.size());
+    for (CommonParameter parameter : parameters) {
+      _parameters.add(EdmParameterImpl.getInstance(instance.edm, parameter));
+    }
+    instance.setParameters(_parameters);
+
+    instance.setEntitySetPath(instance.functionImport.getEntitySetPath());
+
+    instance.setIsBound(instance.functionImport.isBindable());
+
+    if (instance.functionImport.getReturnType() != null) {
+      instance.setReturnType(EdmReturnTypeImpl.getInstance(instance.edm, new ReturnTypeProxy(instance.functionImport)));
+    }
+
+    return instance;
+  }
+
+  protected EdmOperationProxy(final Edm edm, final FullQualifiedName fqn, final FunctionImport functionImport,
+          final EdmTypeKind kind) {
+
+    super(edm, fqn, kind);
+    this.functionImport = functionImport;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
index 1b84dcb..cb0b84a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
@@ -18,8 +18,8 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v3;
 
-import java.util.Collections;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmServiceMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
@@ -41,12 +41,12 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
 
   @Override
   public List<EdmSingletonInfo> getSingletonInfos() {
-    return Collections.<EdmSingletonInfo>emptyList();
+    throw new UnsupportedInV3Exception();
   }
 
   @Override
   public List<EdmActionImportInfo> getActionImportInfos() {
-    return Collections.<EdmActionImportInfo>emptyList();
+    throw new UnsupportedInV3Exception();
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReturnTypeProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReturnTypeProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReturnTypeProxy.java
new file mode 100644
index 0000000..b212e86
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReturnTypeProxy.java
@@ -0,0 +1,62 @@
+/*
+ * 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 org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ReturnType;
+
+public class ReturnTypeProxy implements ReturnType {
+
+  private final FunctionImport functionImport;
+
+  public ReturnTypeProxy(final FunctionImport functionImport) {
+    this.functionImport = functionImport;
+  }
+
+  @Override
+  public Integer getMaxLength() {
+    return null;
+  }
+
+  @Override
+  public Integer getPrecision() {
+    return null;
+  }
+
+  @Override
+  public Integer getScale() {
+    return null;
+  }
+
+  @Override
+  public String getSrid() {
+    return null;
+  }
+
+  @Override
+  public String getType() {
+    return functionImport.getReturnType();
+  }
+
+  @Override
+  public boolean isNullable() {
+    return false;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
index 07a069a..33c8ac8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
@@ -21,7 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.xml;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 public abstract class AbstractAnnotations extends AbstractEdmItem
-        implements org.apache.olingo.odata4.client.api.edm.xml.AbstractAnnotations {
+        implements org.apache.olingo.odata4.client.api.edm.xml.CommonAnnotations {
 
   private static final long serialVersionUID = 4926640428016042620L;
 
@@ -36,7 +36,6 @@ public abstract class AbstractAnnotations extends AbstractEdmItem
     return target;
   }
 
-  @Override
   public void setTarget(final String target) {
     this.target = target;
   }
@@ -46,7 +45,6 @@ public abstract class AbstractAnnotations extends AbstractEdmItem
     return qualifier;
   }
 
-  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
index 37f50e6..158fb05 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
@@ -36,7 +36,6 @@ public abstract class AbstractComplexType extends AbstractEdmItem implements Com
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java
index 4af14e5..e905b5f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java
@@ -35,7 +35,6 @@ public abstract class AbstractDataServices extends AbstractEdmItem implements Da
     return dataServiceVersion;
   }
 
-  @Override
   public void setDataServiceVersion(final String version) {
     this.dataServiceVersion = version;
   }
@@ -45,7 +44,6 @@ public abstract class AbstractDataServices extends AbstractEdmItem implements Da
     return maxDataServiceVersion;
   }
 
-  @Override
   public void setMaxDataServiceVersion(final String version) {
     this.maxDataServiceVersion = version;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
index 31c478e..5a067e1 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
@@ -36,7 +36,6 @@ public abstract class AbstractEdmx extends AbstractEdmItem implements Edmx {
     return version;
   }
 
-  @Override
   public void setVersion(final String version) {
     this.version = version;
   }
@@ -46,7 +45,6 @@ public abstract class AbstractEdmx extends AbstractEdmItem implements Edmx {
     return dataServices;
   }
 
-  @Override
   public void setDataServices(final DataServices dataServices) {
     this.dataServices = dataServices;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
index 1d9e179..285095d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
@@ -20,9 +20,9 @@ package org.apache.olingo.odata4.client.core.edm.xml;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
 import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
 import org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
 import org.apache.olingo.odata4.client.core.op.impl.EntityContainerDeserializer;
 
 @JsonDeserialize(using = EntityContainerDeserializer.class)
@@ -43,7 +43,6 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -53,7 +52,6 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
     return _extends;
   }
 
-  @Override
   public void setExtends(final String _extends) {
     this._extends = _extends;
   }
@@ -63,7 +61,6 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
     return lazyLoadingEnabled;
   }
 
-  @Override
   public void setLazyLoadingEnabled(final boolean lazyLoadingEnabled) {
     this.lazyLoadingEnabled = lazyLoadingEnabled;
   }
@@ -73,7 +70,6 @@ public abstract class AbstractEntityContainer extends AbstractEdmItem implements
     return defaultEntityContainer;
   }
 
-  @Override
   public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
     this.defaultEntityContainer = defaultEntityContainer;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
index 8eff752..eba7c81 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
@@ -36,7 +36,6 @@ public abstract class AbstractEntitySet extends AbstractEdmItem implements Entit
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -46,7 +45,6 @@ public abstract class AbstractEntitySet extends AbstractEdmItem implements Entit
     return entityType;
   }
 
-  @Override
   public void setEntityType(final String entityType) {
     this.entityType = entityType;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
index 9ddcc09..e5490de 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
@@ -43,7 +43,6 @@ public abstract class AbstractEntityType extends AbstractComplexType implements
     return abstractEntityType;
   }
 
-  @Override
   public void setAbstractEntityType(final boolean abstractEntityType) {
     this.abstractEntityType = abstractEntityType;
   }
@@ -53,7 +52,6 @@ public abstract class AbstractEntityType extends AbstractComplexType implements
     return baseType;
   }
 
-  @Override
   public void setBaseType(final String baseType) {
     this.baseType = baseType;
   }
@@ -63,7 +61,6 @@ public abstract class AbstractEntityType extends AbstractComplexType implements
     return openType;
   }
 
-  @Override
   public void setOpenType(final boolean openType) {
     this.openType = openType;
   }
@@ -82,7 +79,6 @@ public abstract class AbstractEntityType extends AbstractComplexType implements
     return hasStream;
   }
 
-  @Override
   public void setHasStream(final boolean hasStream) {
     this.hasStream = hasStream;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
index 0d54f18..49a1c66 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
@@ -19,6 +19,8 @@
 package org.apache.olingo.odata4.client.core.edm.xml;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
 import org.apache.olingo.odata4.client.api.edm.xml.Member;
 import org.apache.olingo.odata4.client.core.op.impl.EnumTypeDeserializer;
@@ -34,12 +36,13 @@ public abstract class AbstractEnumType extends AbstractEdmItem implements EnumTy
 
   private boolean flags;
 
+  private final List<Member> members = new ArrayList<Member>();
+
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -49,7 +52,6 @@ public abstract class AbstractEnumType extends AbstractEdmItem implements EnumTy
     return underlyingType;
   }
 
-  @Override
   public void setUnderlyingType(final String underlyingType) {
     this.underlyingType = underlyingType;
   }
@@ -59,7 +61,6 @@ public abstract class AbstractEnumType extends AbstractEdmItem implements EnumTy
     return flags;
   }
 
-  @Override
   public void setFlags(final boolean flags) {
     this.flags = flags;
   }
@@ -85,4 +86,10 @@ public abstract class AbstractEnumType extends AbstractEdmItem implements EnumTy
     }
     return result;
   }
+
+  @Override
+  public List<Member> getMembers() {
+    return members;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
index 3917bce..ebeb62f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
@@ -33,7 +33,6 @@ public class AbstractNavigationProperty extends AbstractEdmItem implements Commo
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
index 89c15db..5b737d8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
@@ -43,7 +43,6 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -53,7 +52,6 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }
@@ -63,7 +61,6 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
     return nullable;
   }
 
-  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
@@ -73,7 +70,6 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
     return maxLength;
   }
 
-  @Override
   public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
@@ -83,7 +79,6 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
     return precision;
   }
 
-  @Override
   public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
@@ -93,7 +88,6 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
     return scale;
   }
 
-  @Override
   public void setScale(final Integer scale) {
     this.scale = scale;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
index 2535e23..78cdc4b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
@@ -59,7 +59,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -69,7 +68,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }
@@ -79,7 +77,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return nullable;
   }
 
-  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
@@ -89,7 +86,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return defaultValue;
   }
 
-  @Override
   public void setDefaultValue(final String defaultValue) {
     this.defaultValue = defaultValue;
   }
@@ -99,7 +95,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return maxLength;
   }
 
-  @Override
   public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
@@ -109,7 +104,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return fixedLength;
   }
 
-  @Override
   public void setFixedLength(final boolean fixedLength) {
     this.fixedLength = fixedLength;
   }
@@ -119,7 +113,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return precision;
   }
 
-  @Override
   public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
@@ -129,7 +122,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return scale;
   }
 
-  @Override
   public void setScale(final Integer scale) {
     this.scale = scale;
   }
@@ -139,7 +131,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return unicode;
   }
 
-  @Override
   public void setUnicode(final boolean unicode) {
     this.unicode = unicode;
   }
@@ -149,7 +140,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return collation;
   }
 
-  @Override
   public void setCollation(final String collation) {
     this.collation = collation;
   }
@@ -159,7 +149,6 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return srid;
   }
 
-  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }
@@ -169,11 +158,11 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
     return concurrencyMode;
   }
 
-  @Override
   public void setConcurrencyMode(final ConcurrencyMode concurrencyMode) {
     this.concurrencyMode = concurrencyMode;
   }
 
+  @Override
   public StoreGeneratedPattern getStoreGeneratedPattern() {
     return storeGeneratedPattern;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
index 8f6d7c2..568c85f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
@@ -39,7 +39,6 @@ public abstract class AbstractSchema extends AbstractEdmItem implements Schema {
     return namespace;
   }
 
-  @Override
   public void setNamespace(final String namespace) {
     this.namespace = namespace;
   }
@@ -49,7 +48,6 @@ public abstract class AbstractSchema extends AbstractEdmItem implements Schema {
     return alias;
   }
 
-  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java
index 7434d96..91f4068 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.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.xml.EntityKey;
+import org.apache.olingo.odata4.client.api.edm.xml.PropertyRef;
 import org.apache.olingo.odata4.client.core.op.impl.EntityKeyDeserializer;
 
 @JsonDeserialize(using = EntityKeyDeserializer.class)
@@ -29,10 +30,10 @@ public class EntityKeyImpl extends AbstractEdmItem implements EntityKey {
 
   private static final long serialVersionUID = 2586047015894794685L;
 
-  private final List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
+  private final List<PropertyRef> propertyRefs = new ArrayList<PropertyRef>();
 
   @Override
-  public List<PropertyRefImpl> getPropertyRefs() {
+  public List<PropertyRef> getPropertyRefs() {
     return propertyRefs;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
index a74f1e3..abe7e25 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml;
 
-import org.apache.olingo.odata4.client.api.edm.xml.v4.OnDeleteAction;
+import org.apache.olingo.odata4.client.api.edm.xml.OnDeleteAction;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
 
@@ -34,7 +34,6 @@ public class OnDeleteImpl extends AbstractEdmItem implements OnDelete {
     return action;
   }
 
-  @Override
   public void setAction(final OnDeleteAction action) {
     this.action = action;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
index a74963b..d5f96d7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
@@ -36,7 +36,6 @@ public class PropertyRefImpl extends AbstractEdmItem implements PropertyRef {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -46,7 +45,6 @@ public class PropertyRefImpl extends AbstractEdmItem implements PropertyRef {
     return alias;
   }
 
-  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
index c2f4672..cee352e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
@@ -22,6 +22,8 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.Annotations;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.TypeAnnotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ValueAnnotation;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractAnnotations;
 
 @JsonDeserialize(using = AnnotationsDeserializer.class)
@@ -29,17 +31,17 @@ public class AnnotationsImpl extends AbstractAnnotations implements Annotations
 
   private static final long serialVersionUID = 3877353656301805410L;
 
-  private final List<TypeAnnotationImpl> typeAnnotations = new ArrayList<TypeAnnotationImpl>();
+  private final List<TypeAnnotation> typeAnnotations = new ArrayList<TypeAnnotation>();
 
-  private final List<ValueAnnotationImpl> valueAnnotations = new ArrayList<ValueAnnotationImpl>();
+  private final List<ValueAnnotation> valueAnnotations = new ArrayList<ValueAnnotation>();
 
   @Override
-  public List<TypeAnnotationImpl> getTypeAnnotations() {
+  public List<TypeAnnotation> getTypeAnnotations() {
     return typeAnnotations;
   }
 
   @Override
-  public List<ValueAnnotationImpl> getValueAnnotations() {
+  public List<ValueAnnotation> getValueAnnotations() {
     return valueAnnotations;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
index e6494b4..6171501 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
@@ -44,7 +44,6 @@ public class AssociationEndImpl extends AbstractEdmItem implements AssociationEn
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }
@@ -54,7 +53,6 @@ public class AssociationEndImpl extends AbstractEdmItem implements AssociationEn
     return role;
   }
 
-  @Override
   public void setRole(final String role) {
     this.role = role;
   }
@@ -64,7 +62,6 @@ public class AssociationEndImpl extends AbstractEdmItem implements AssociationEn
     return multiplicity;
   }
 
-  @Override
   public void setMultiplicity(final String multiplicity) {
     this.multiplicity = multiplicity;
   }
@@ -74,7 +71,6 @@ public class AssociationEndImpl extends AbstractEdmItem implements AssociationEn
     return onDelete;
   }
 
-  @Override
   public void setOnDelete(final OnDelete onDelete) {
     this.onDelete = onDelete;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java
index 35572bd..b807b9c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.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.xml.v3.Association;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationEnd;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.ReferentialConstraint;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
@@ -34,14 +35,13 @@ public class AssociationImpl extends AbstractEdmItem implements Association {
 
   private ReferentialConstraint referentialConstraint;
 
-  private List<AssociationEndImpl> ends = new ArrayList<AssociationEndImpl>();
+  private List<AssociationEnd> ends = new ArrayList<AssociationEnd>();
 
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -51,13 +51,12 @@ public class AssociationImpl extends AbstractEdmItem implements Association {
     return referentialConstraint;
   }
 
-  @Override
   public void setReferentialConstraint(final ReferentialConstraint referentialConstraint) {
     this.referentialConstraint = referentialConstraint;
   }
 
   @Override
-  public List<AssociationEndImpl> getEnds() {
+  public List<AssociationEnd> getEnds() {
     return ends;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
index 08cc6b2..66c35ce 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
@@ -37,7 +37,6 @@ public class AssociationSetEndImpl extends AbstractEdmItem implements Associatio
     return role;
   }
 
-  @Override
   public void setRole(final String role) {
     this.role = role;
   }
@@ -47,7 +46,6 @@ public class AssociationSetEndImpl extends AbstractEdmItem implements Associatio
     return entitySet;
   }
 
-  @Override
   public void setEntitySet(final String entitySet) {
     this.entitySet = entitySet;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java
index 70ca595..48c3fcb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.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.xml.v3.AssociationSet;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationSetEnd;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
 @JsonDeserialize(using = AssociationSetDeserializer.class)
@@ -33,14 +34,13 @@ public class AssociationSetImpl extends AbstractEdmItem implements AssociationSe
 
   private String association;
 
-  private List<AssociationSetEndImpl> ends = new ArrayList<AssociationSetEndImpl>();
+  private List<AssociationSetEnd> ends = new ArrayList<AssociationSetEnd>();
 
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -50,13 +50,12 @@ public class AssociationSetImpl extends AbstractEdmItem implements AssociationSe
     return association;
   }
 
-  @Override
   public void setAssociation(final String association) {
     this.association = association;
   }
 
   @Override
-  public List<AssociationSetEndImpl> getEnds() {
+  public List<AssociationSetEnd> getEnds() {
     return ends;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
index 78c68ca..7db60ff 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
@@ -20,16 +20,17 @@ package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractDataServices;
 
 public class DataServicesImpl extends AbstractDataServices {
 
   private static final long serialVersionUID = 633129618050875211L;
 
-  private final List<SchemaImpl> schemas = new ArrayList<SchemaImpl>();
+  private final List<Schema> schemas = new ArrayList<Schema>();
 
   @Override
-  public List<SchemaImpl> getSchemas() {
+  public List<Schema> getSchemas() {
     return schemas;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
index 8ac2f16..22e0488 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
@@ -20,17 +20,20 @@ package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationSet;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityContainer;
 
 public class EntityContainerImpl extends AbstractEntityContainer {
 
   private static final long serialVersionUID = 8934431875078180370L;
 
-  private final List<EntitySetImpl> entitySets = new ArrayList<EntitySetImpl>();
+  private final List<EntitySet> entitySets = new ArrayList<EntitySet>();
 
-  private final List<AssociationSetImpl> associationSets = new ArrayList<AssociationSetImpl>();
+  private final List<AssociationSet> associationSets = new ArrayList<AssociationSet>();
 
-  private final List<FunctionImportImpl> functionImports = new ArrayList<FunctionImportImpl>();
+  private final List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
 
   @Override
   public EntitySetImpl getEntitySet(final String name) {
@@ -38,11 +41,11 @@ public class EntityContainerImpl extends AbstractEntityContainer {
   }
 
   @Override
-  public List<EntitySetImpl> getEntitySets() {
+  public List<EntitySet> getEntitySets() {
     return entitySets;
   }
 
-  public List<AssociationSetImpl> getAssociationSets() {
+  public List<AssociationSet> getAssociationSets() {
     return associationSets;
   }
 
@@ -53,12 +56,12 @@ public class EntityContainerImpl extends AbstractEntityContainer {
 
   @Override
   @SuppressWarnings("unchecked")
-  public List<FunctionImportImpl> getFunctionImports(final String name) {
-    return (List<FunctionImportImpl>) super.getFunctionImports(name);
+  public List<FunctionImport> getFunctionImports(final String name) {
+    return (List<FunctionImport>) super.getFunctionImports(name);
   }
 
   @Override
-  public List<FunctionImportImpl> getFunctionImports() {
+  public List<FunctionImport> getFunctionImports() {
     return functionImports;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
index bc28cc6..a859d88 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
@@ -18,10 +18,18 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
+import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntitySet;
 
 public class EntitySetImpl extends AbstractEntitySet {
 
   private static final long serialVersionUID = 5570833733884884012L;
 
+  @Override
+  public List<? extends NavigationPropertyBinding> getNavigationPropertyBindings() {
+    throw new UnsupportedInV3Exception();
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
index 9185f45..dffd226 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
@@ -20,27 +20,18 @@ package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Member;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEnumType;
 
 public class EnumTypeImpl extends AbstractEnumType {
 
   private static final long serialVersionUID = 8967396195669128419L;
 
-  private final List<MemberImpl> members = new ArrayList<MemberImpl>();
+  private final List<Member> members = new ArrayList<Member>();
 
   @Override
-  public List<MemberImpl> getMembers() {
+  public List<Member> getMembers() {
     return members;
   }
 
-  @Override
-  public MemberImpl getMember(final String name) {
-    return (MemberImpl) super.getMember(name);
-  }
-
-  @Override
-  public MemberImpl getMember(final Integer value) {
-    return (MemberImpl) super.getMember(value);
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java
index 234b623..b648fde 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.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.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Parameter;
 
 @JsonDeserialize(using = FunctionImportDeserializer.class)
 public class FunctionImportImpl implements FunctionImport {
@@ -46,14 +47,13 @@ public class FunctionImportImpl implements FunctionImport {
 
   private String httpMethod;
 
-  private final List<ParameterImpl> parameters = new ArrayList<ParameterImpl>();
+  private final List<Parameter> parameters = new ArrayList<Parameter>();
 
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -63,7 +63,6 @@ public class FunctionImportImpl implements FunctionImport {
     return returnType;
   }
 
-  @Override
   public void setReturnType(final String returnType) {
     this.returnType = returnType;
   }
@@ -73,7 +72,6 @@ public class FunctionImportImpl implements FunctionImport {
     return entitySet;
   }
 
-  @Override
   public void setEntitySet(final String entitySet) {
     this.entitySet = entitySet;
   }
@@ -83,7 +81,6 @@ public class FunctionImportImpl implements FunctionImport {
     return entitySetPath;
   }
 
-  @Override
   public void setEntitySetPath(final String entitySetPath) {
     this.entitySetPath = entitySetPath;
   }
@@ -93,7 +90,6 @@ public class FunctionImportImpl implements FunctionImport {
     return composable;
   }
 
-  @Override
   public void setComposable(final boolean composable) {
     this.composable = composable;
   }
@@ -103,7 +99,6 @@ public class FunctionImportImpl implements FunctionImport {
     return sideEffecting;
   }
 
-  @Override
   public void setSideEffecting(final boolean sideEffecting) {
     this.sideEffecting = sideEffecting;
   }
@@ -113,7 +108,6 @@ public class FunctionImportImpl implements FunctionImport {
     return bindable;
   }
 
-  @Override
   public void setBindable(final boolean bindable) {
     this.bindable = bindable;
   }
@@ -123,7 +117,6 @@ public class FunctionImportImpl implements FunctionImport {
     return alwaysBindable;
   }
 
-  @Override
   public void setAlwaysBindable(final boolean alwaysBindable) {
     this.alwaysBindable = alwaysBindable;
   }
@@ -133,13 +126,12 @@ public class FunctionImportImpl implements FunctionImport {
     return httpMethod;
   }
 
-  @Override
   public void setHttpMethod(final String httpMethod) {
     this.httpMethod = httpMethod;
   }
 
   @Override
-  public List<ParameterImpl> getParameters() {
+  public List<Parameter> getParameters() {
     return parameters;
   }
 


[7/7] git commit: [OLINGO-169] Now able to use commons Edm interfaces with v3

Posted by il...@apache.org.
[OLINGO-169] Now able to use commons Edm interfaces with v3


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

Branch: refs/heads/olingo169
Commit: 31b6c8c09a34ea1871c4bf4edd3335f4ae23fc14
Parents: d1b341d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Mar 7 10:04:24 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 7 10:04:24 2014 +0100

----------------------------------------------------------------------
 .../client/api/edm/xml/BindingTarget.java       |  29 ------
 .../odata4/client/api/edm/xml/EntitySet.java    |   4 +-
 .../client/api/edm/xml/v4/BindingTarget.java    |  27 +++++
 .../odata4/client/api/edm/xml/v4/EntitySet.java |   2 +-
 .../odata4/client/api/edm/xml/v4/Singleton.java |   4 +-
 .../client/core/edm/EdmBindingTargetImpl.java   |  40 ++++----
 .../odata4/client/core/edm/EdmClientImpl.java   |   4 +-
 .../client/core/edm/EdmEntityContainerImpl.java |  25 +++--
 .../client/core/edm/EdmEntitySetImpl.java       |   2 +-
 .../client/core/edm/v3/EdmEntitySetProxy.java   | 101 +++++++++++++++++++
 .../core/edm/v4/EdmServiceMetadataImpl.java     |  10 +-
 .../client/core/edm/xml/v3/EntitySetImpl.java   |   8 --
 .../core/edm/xml/v4/TermDeserializer.java       |   1 -
 .../client/core/edm/xml/v4/XMLMetadataImpl.java |   6 ++
 .../odata4/client/core/v3/MetadataTest.java     |  23 +++++
 15 files changed, 209 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java
deleted file mode 100644
index c996f71..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java
+++ /dev/null
@@ -1,29 +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.xml;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
-
-public interface BindingTarget extends Named {
-
-  String getEntityType();
-
-  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
index 659480b..3807294 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
@@ -18,6 +18,8 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml;
 
-public interface EntitySet extends BindingTarget {
+public interface EntitySet extends Named {
+
+  String getEntityType();
 
 }

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
index a48b358..b44bee2 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, AnnotatedEdmItem {
+public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, BindingTarget {
 
   boolean isIncludeInServiceDocument();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
index 589ee9f..1bc6135 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
@@ -18,8 +18,8 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-import org.apache.olingo.odata4.client.api.edm.xml.BindingTarget;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
 
-public interface Singleton extends BindingTarget, AnnotatedEdmItem {
+public interface Singleton extends EntitySet, BindingTarget {
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
index d27260b..fd4c66a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import java.util.Iterator;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.BindingTarget;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.BindingTarget;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
@@ -46,30 +46,28 @@ public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
     EdmBindingTarget bindingTarget = null;
 
     final List<? extends NavigationPropertyBinding> navigationPropertyBindings = target.getNavigationPropertyBindings();
-    if (navigationPropertyBindings != null) {
-      boolean found = false;
-      for (final Iterator<? extends NavigationPropertyBinding> itor = navigationPropertyBindings.iterator();
-              itor.hasNext() && !found;) {
+    boolean found = false;
+    for (final Iterator<? extends NavigationPropertyBinding> itor = navigationPropertyBindings.iterator();
+            itor.hasNext() && !found;) {
 
-        final NavigationPropertyBinding binding = itor.next();
-        if (binding.getPath().equals(path)) {
-          final Target edmTarget = new Target.Builder(binding.getTarget(), container).build();
+      final NavigationPropertyBinding binding = itor.next();
+      if (binding.getPath().equals(path)) {
+        final Target edmTarget = new Target.Builder(binding.getTarget(), container).build();
 
-          final EdmEntityContainer entityContainer = edm.getEntityContainer(edmTarget.getEntityContainer());
-          if (entityContainer == null) {
-            throw new EdmException("Cant find entity container with name: " + edmTarget.getEntityContainer());
-          }
-          bindingTarget = entityContainer.getEntitySet(edmTarget.getTargetName());
+        final EdmEntityContainer entityContainer = edm.getEntityContainer(edmTarget.getEntityContainer());
+        if (entityContainer == null) {
+          throw new EdmException("Cannot find entity container with name: " + edmTarget.getEntityContainer());
+        }
+        bindingTarget = entityContainer.getEntitySet(edmTarget.getTargetName());
+        if (bindingTarget == null) {
+          bindingTarget = entityContainer.getSingleton(edmTarget.getTargetName());
           if (bindingTarget == null) {
-            bindingTarget = entityContainer.getSingleton(edmTarget.getTargetName());
-            if (bindingTarget == null) {
-              throw new EdmException("Cant find target with name: " + edmTarget.getTargetName());
-            }
-
-            found = true;
-          } else {
-            found = true;
+            throw new EdmException("Cannot find target with name: " + edmTarget.getTargetName());
           }
+
+          found = true;
+        } else {
+          found = true;
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
index a89bf16..905a310 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
@@ -96,9 +96,9 @@ public class EdmClientImpl extends AbstractEdmImpl {
 
     final Schema schema = xmlMetadata.getSchema(containerName.getNamespace());
     if (schema != null) {
-      final EntityContainer xmlEntityContainer = (EntityContainer) schema.getDefaultEntityContainer();
+      final EntityContainer xmlEntityContainer = schema.getDefaultEntityContainer();
       if (xmlEntityContainer != null) {
-        result = new EdmEntityContainerImpl(this, containerName, xmlEntityContainer);
+        result = new EdmEntityContainerImpl(this, containerName, xmlEntityContainer, xmlMetadata);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
index 2f9ac88..9cde1b1 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
@@ -25,8 +25,10 @@ import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
 import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
 import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
 import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmActionImportProxy;
+import org.apache.olingo.odata4.client.core.edm.v3.EdmEntitySetProxy;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmFunctionImportProxy;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
@@ -41,11 +43,15 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
 
   private final EntityContainer xmlEntityContainer;
 
+  private final XMLMetadata xmlMetadata;
+
   public EdmEntityContainerImpl(final Edm edm, final FullQualifiedName entityContainerName,
-          final EntityContainer xmlEntityContainer) {
+          final EntityContainer xmlEntityContainer, final XMLMetadata xmlMetadata) {
 
     super(edm, entityContainerName);
+
     this.xmlEntityContainer = xmlEntityContainer;
+    this.xmlMetadata = xmlMetadata;
   }
 
   @Override
@@ -70,9 +76,16 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
     if (entitySet == null) {
       throw new EdmException("EntitySet named '" + entitySetName + "' not found in " + entityContainerName);
     }
-    return new EdmEntitySetImpl(edm, this, entitySetName,
-            new EdmTypeInfo(entitySet.getEntityType(), entityContainerName.getNamespace()).getFullQualifiedName(),
-            entitySet);
+
+    if (entitySet instanceof org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet) {
+      return new EdmEntitySetImpl(edm, this, entitySetName,
+              new EdmTypeInfo(entitySet.getEntityType(), entityContainerName.getNamespace()).getFullQualifiedName(),
+              (org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet) entitySet);
+    } else {
+      return new EdmEntitySetProxy(edm, this, entitySetName,
+              new EdmTypeInfo(entitySet.getEntityType(), entityContainerName.getNamespace()).getFullQualifiedName(),
+              xmlMetadata);
+    }
   }
 
   @Override
@@ -90,7 +103,7 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
       if (functionImport == null) {
         throw new EdmException("FunctionImport named '" + actionImportName + "' not found in " + entityContainerName);
       }
-      return new EdmActionImportProxy(edm, this, actionImportName, (FunctionImport) functionImport);
+      return new EdmActionImportProxy(edm, this, actionImportName, functionImport);
     }
   }
 
@@ -105,7 +118,7 @@ public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
       return new EdmFunctionImportImpl(edm, this, functionImportName,
               (org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport) functionImport);
     } else {
-      return new EdmFunctionImportProxy(edm, this, functionImportName, 
+      return new EdmFunctionImportProxy(edm, this, functionImportName,
               (org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport) functionImport);
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
index 14e1eb4..669e431 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm;
 
-import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmEntitySetProxy.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmEntitySetProxy.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmEntitySetProxy.java
new file mode 100644
index 0000000..518eb6e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmEntitySetProxy.java
@@ -0,0 +1,101 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Association;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationSet;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmBindingTarget;
+
+public class EdmEntitySetProxy extends AbstractEdmBindingTarget implements EdmEntitySet {
+
+  private final XMLMetadata xmlMetadata;
+
+  public EdmEntitySetProxy(final Edm edm, final EdmEntityContainer container, final String name,
+          final FullQualifiedName type, final XMLMetadata xmlMetadata) {
+
+    super(edm, container, name, type);
+    this.xmlMetadata = xmlMetadata;
+  }
+
+  @Override
+  public EdmBindingTarget getRelatedBindingTarget(final String path) {
+    final List<AssociationSet> candidateAssociationSets = new ArrayList<AssociationSet>();
+    for (Schema schema : xmlMetadata.getSchemas()) {
+      for (EntityContainer _entityContainer : schema.getEntityContainers()) {
+        final EntityContainerImpl entityContainer = (EntityContainerImpl) _entityContainer;
+        for (AssociationSet associationSet : entityContainer.getAssociationSets()) {
+          if (getName().equals(associationSet.getEnds().get(0).getEntitySet())
+                  || getName().equals(associationSet.getEnds().get(1).getEntitySet())) {
+
+            candidateAssociationSets.add(associationSet);
+          }
+        }
+      }
+    }
+    if (candidateAssociationSets.isEmpty()) {
+      throw new EdmException("Cannot find any AssociationSet with first End: " + getName());
+    }
+
+    Schema targetSchema = null;
+    String targetEntitySet = null;
+    for (AssociationSet associationSet : candidateAssociationSets) {
+      for (Schema schema : xmlMetadata.getSchemas()) {
+        for (Association association : ((SchemaImpl) schema).getAssociations()) {
+          final FullQualifiedName associationName = new FullQualifiedName(schema.getNamespace(), association.getName());
+          if (associationName.getFullQualifiedNameAsString().equals(associationSet.getAssociation())
+                  && (path.equals(association.getEnds().get(0).getRole())
+                  || path.equals(association.getEnds().get(1).getRole()))) {
+
+            targetSchema = schema;
+            if (getName().equals(associationSet.getEnds().get(0).getEntitySet())) {
+              targetEntitySet = associationSet.getEnds().get(1).getEntitySet();
+            } else {
+              targetEntitySet = associationSet.getEnds().get(0).getEntitySet();
+            }
+          }
+        }
+      }
+    }
+    if (targetSchema == null || targetEntitySet == null) {
+      throw new EdmException("Cannot find Association for candidate AssociationSets and given Role");
+    }
+
+    final FullQualifiedName relatedFQN = new FullQualifiedName(targetSchema.getNamespace(), targetEntitySet);
+    final EdmEntityContainer entityContainer = edm.getEntityContainer(relatedFQN);
+    if (entityContainer == null) {
+      throw new EdmException("Cannot find EntityContainer with name: " + relatedFQN);
+    }
+
+    return entityContainer.getEntitySet(targetEntitySet);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
index dfcc38b..e077e3a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
@@ -21,7 +21,7 @@ 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.xml.CommonFunctionImport;
-import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Schema;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
@@ -57,7 +57,7 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
     synchronized (this) {
       if (singletonInfos == null) {
         singletonInfos = new ArrayList<EdmSingletonInfo>();
-        for (Schema schema : xmlMetadata.getSchemas()) {
+        for (Schema schema : ((XMLMetadataImpl) xmlMetadata).getSchemas()) {
           final EntityContainer entityContainer = (EntityContainer) schema.getDefaultEntityContainer();
           for (Singleton singleton : entityContainer.getSingletons()) {
             singletonInfos.add(new EdmSingletonInfoImpl(entityContainer.getName(), singleton.getName()));
@@ -73,8 +73,8 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
     synchronized (this) {
       if (functionImportInfos == null) {
         functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
-        for (Schema schema : xmlMetadata.getSchemas()) {
-          for (org.apache.olingo.odata4.client.api.edm.xml.EntityContainer entityContainer : schema.getEntityContainers()) {
+        for (Schema schema : ((XMLMetadataImpl) xmlMetadata).getSchemas()) {
+          for (EntityContainer entityContainer : schema.getEntityContainers()) {
             for (CommonFunctionImport functionImport : entityContainer.getFunctionImports()) {
               functionImportInfos.add(
                       new EdmFunctionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
@@ -91,7 +91,7 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
     synchronized (this) {
       if (actionImportInfos == null) {
         actionImportInfos = new ArrayList<EdmActionImportInfo>();
-        for (Schema schema : xmlMetadata.getSchemas()) {
+        for (Schema schema : ((XMLMetadataImpl) xmlMetadata).getSchemas()) {
           final EntityContainer entityContainer = (EntityContainer) schema.getDefaultEntityContainer();
           for (ActionImport actionImport : entityContainer.getActionImports()) {
             actionImportInfos.add(new EdmActionImportInfoImpl(entityContainer.getName(), actionImport.getName()));

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
index a859d88..bc28cc6 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
@@ -18,18 +18,10 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
-import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntitySet;
 
 public class EntitySetImpl extends AbstractEntitySet {
 
   private static final long serialVersionUID = 5570833733884884012L;
 
-  @Override
-  public List<? extends NavigationPropertyBinding> getNavigationPropertyBindings() {
-    throw new UnsupportedInV3Exception();
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
index 9de5318..c8fed65 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
@@ -23,7 +23,6 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import java.math.BigInteger;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.CSDLElement;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
index 9aef820..0d74c12 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
@@ -33,6 +33,12 @@ public class XMLMetadataImpl extends AbstractXMLMetadata {
   }
 
   @Override
+  @SuppressWarnings("unchecked")
+  public List<Schema> getSchemas() {
+    return (List<Schema>) super.getSchemas();
+  }
+
+  @Override
   public Schema getSchema(final int index) {
     return (Schema) super.getSchema(index);
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/31b6c8c0/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
index 5efb1d3..337eadc 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
@@ -40,8 +40,10 @@ import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
 import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
@@ -197,4 +199,25 @@ public class MetadataTest extends AbstractTest {
             new FullQualifiedName(container.getNamespace(), "ResetDataSource"), null, Boolean.FALSE);
     assertNotNull(resetDataSource2);
   }
+
+  @Test
+  public void navigation() {
+    final Edm metadata = getClient().getReader().
+            readMetadata(getClass().getResourceAsStream("metadata.xml"));
+    assertNotNull(metadata);
+
+    final EdmEntityContainer container = metadata.getEntityContainer(
+            new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "DefaultContainer"));
+    assertNotNull(container);
+
+    final EdmEntitySet customer = container.getEntitySet("Customer");
+    assertNotNull(customer);
+
+    final EdmBindingTarget order = customer.getRelatedBindingTarget("Orders");
+    assertNotNull(order);
+    assertTrue(order instanceof EdmEntitySet);
+
+    final EdmBindingTarget customerBindingTarget = ((EdmEntitySet) order).getRelatedBindingTarget("Customer");
+    assertEquals(customer.getEntityType().getName(), customerBindingTarget.getEntityType().getName());
+  }
 }


[2/7] [OLINGO-169] client-api interface refinements + proxy of Edm interfaces for V3 functionImport

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
index cbccf9e..a6b27c4 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
@@ -43,14 +44,13 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
 
   private String srid;
 
-  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
+  private final List<Annotation> annotations = new ArrayList<Annotation>();
 
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -60,7 +60,6 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
     return underlyingType;
   }
 
-  @Override
   public void setUnderlyingType(final String underlyingType) {
     this.underlyingType = underlyingType;
   }
@@ -70,7 +69,6 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
     return maxLength;
   }
 
-  @Override
   public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
@@ -80,7 +78,6 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
     return precision;
   }
 
-  @Override
   public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
@@ -90,7 +87,6 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
     return scale;
   }
 
-  @Override
   public void setScale(final Integer scale) {
     this.scale = scale;
   }
@@ -100,7 +96,6 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
     return unicode;
   }
 
-  @Override
   public void setUnicode(final boolean unicode) {
     this.unicode = unicode;
   }
@@ -110,13 +105,12 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
     return srid;
   }
 
-  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }
 
   @Override
-  public List<AnnotationImpl> getAnnotations() {
+  public List<Annotation> getAnnotations() {
     return annotations;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
index 98c8914..9aef820 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
@@ -19,6 +19,9 @@
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Edmx;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Reference;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Schema;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractXMLMetadata;
 
 public class XMLMetadataImpl extends AbstractXMLMetadata {
@@ -30,22 +33,16 @@ public class XMLMetadataImpl extends AbstractXMLMetadata {
   }
 
   @Override
-  public SchemaImpl getSchema(final int index) {
-    return (SchemaImpl) super.getSchema(index);
+  public Schema getSchema(final int index) {
+    return (Schema) super.getSchema(index);
   }
 
   @Override
-  public SchemaImpl getSchema(final String key) {
-    return (SchemaImpl) super.getSchema(key);
+  public Schema getSchema(final String key) {
+    return (Schema) super.getSchema(key);
   }
 
-  @Override
-  @SuppressWarnings("unchecked")
-  public List<SchemaImpl> getSchemas() {
-    return (List<SchemaImpl>) super.getSchemas();
-  }
-
-  public List<ReferenceImpl> getReferences() {
-    return ((EdmxImpl) this.edmx).getReferences();
+  public List<Reference> getReferences() {
+    return ((Edmx) this.edmx).getReferences();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
index 4fe94f9..1532cf0 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
@@ -20,21 +20,19 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4.annotation;
 
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 abstract class AnnotatedDynExprConstruct extends DynExprConstructImpl implements AnnotatedEdmItem {
 
   private static final long serialVersionUID = -8117155475397749038L;
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
index b7d7492..483d6f5 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
@@ -18,20 +18,32 @@
  */
 package org.apache.olingo.odata4.client.core.v3;
 
+import java.util.Arrays;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.odata4.client.api.http.HttpMethod;
 import org.apache.olingo.odata4.client.core.AbstractTest;
 import org.apache.olingo.odata4.client.core.ODataV3Client;
-import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v3.FunctionImportImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 import org.junit.Test;
 
 public class MetadataTest extends AbstractTest {
@@ -47,17 +59,18 @@ public class MetadataTest extends AbstractTest {
             toMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
-    final EntityTypeImpl order = metadata.getSchemas().get(0).getEntityType("Order");
+    final EntityType order = metadata.getSchemas().get(0).getEntityType("Order");
     assertNotNull(order);
     assertEquals("Order", order.getName());
 
-    final List<FunctionImportImpl> functionImports = metadata.getSchemas().get(0).
+    @SuppressWarnings("unchecked")
+    final List<FunctionImport> functionImports = (List<FunctionImport>) metadata.<FunctionImport>getSchemas().get(0).
             getDefaultEntityContainer().getFunctionImports();
     int legacyGetters = 0;
     int legacyPosters = 0;
     int actions = 0;
     int functions = 0;
-    for (FunctionImportImpl functionImport : functionImports) {
+    for (FunctionImport functionImport : functionImports) {
       if (HttpMethod.GET.name().equals(functionImport.getHttpMethod())) {
         legacyGetters++;
       } else if (HttpMethod.POST.name().equals(functionImport.getHttpMethod())) {
@@ -82,61 +95,77 @@ public class MetadataTest extends AbstractTest {
             toMetadata(getClass().getResourceAsStream("northwind-metadata.xml"));
     assertNotNull(metadata);
 
-    final SchemaImpl first = metadata.getSchema("NorthwindModel");
+    final Schema first = metadata.getSchema("NorthwindModel");
     assertNotNull(first);
 
-    final SchemaImpl second = metadata.getSchema("ODataWebV3.Northwind.Model");
+    final Schema second = metadata.getSchema("ODataWebV3.Northwind.Model");
     assertNotNull(second);
 
-    final EntityContainerImpl entityContainer = second.getDefaultEntityContainer();
+    final EntityContainer entityContainer = second.getDefaultEntityContainer();
     assertNotNull(entityContainer);
     assertEquals("NorthwindEntities", entityContainer.getName());
   }
 
   @Test
-  public void entityType() {
-    final XMLMetadataImpl metadata = getClient().getDeserializer().
-            toMetadata(getClass().getResourceAsStream("metadata.xml"));
-    assertNotNull(metadata);
-
-    final EntityContainerImpl container = metadata.getSchema(0).getEntityContainers().get(0);
-    assertNotNull(container);
-    final EntityTypeImpl type = metadata.getSchema(0).getEntityType("ProductReview");
-    assertNotNull(type);
-
-    assertFalse(type.getProperties().isEmpty());
-    assertNotNull(type.getProperties().get(0));
-
-    assertFalse(type.getKey().getPropertyRefs().isEmpty());
-    assertNotNull(type.getKey().getPropertyRefs().get(0));
-  }
-
-  @Test
-  public void complexType() {
-    final XMLMetadataImpl metadata = getClient().getDeserializer().
-            toMetadata(getClass().getResourceAsStream("metadata.xml"));
+  public void complexAndEntityType() {
+    final Edm metadata = getClient().getReader().
+            readMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
-    final EntityContainerImpl container = metadata.getSchema(0).getEntityContainers().get(0);
+    final EdmEntityContainer container = metadata.getEntityContainer(
+            new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "DefaultContainer"));
     assertNotNull(container);
-    final ComplexTypeImpl type = metadata.getSchema(0).getComplexType("ContactDetails");
-    assertNotNull(type);
 
-    assertFalse(type.getProperties().isEmpty());
-    assertNotNull(type.getProperties().get(0));
+    final EdmComplexType complex = metadata.getComplexType(
+            new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "ContactDetails"));
+    assertNotNull(complex);
+    assertFalse(complex.getPropertyNames().isEmpty());
+    assertTrue(complex.getProperty("EmailBag").isCollection());
+
+    final EdmEntityType entity = metadata.getEntityType(
+            new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "ProductReview"));
+    assertNotNull(entity);
+    assertFalse(entity.getPropertyNames().isEmpty());
+    assertEquals(EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance(),
+            entity.getProperty("ProductId").getType());
+
+    assertFalse(entity.getKeyPropertyRefs().isEmpty());
+    assertNotNull("ProductId", entity.getKeyPropertyRef("ProductId").getKeyPropertyName());
   }
 
   @Test
   public void functionImport() {
-    final XMLMetadataImpl metadata = getClient().getDeserializer().
-            toMetadata(getClass().getResourceAsStream("metadata.xml"));
+    final Edm metadata = getClient().getReader().
+            readMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
-    final EntityContainerImpl container = metadata.getSchema(0).getEntityContainers().get(0);
+    final EdmEntityContainer container = metadata.getEntityContainer(
+            new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "DefaultContainer"));
     assertNotNull(container);
-    final FunctionImportImpl funcImp = container.getFunctionImport("GetArgumentPlusOne");
-    assertNotNull(funcImp);
 
-    assertNotNull(funcImp.getParameters().get(0));
+    final EdmFunctionImport getArgumentPlusOne = container.getFunctionImport("GetArgumentPlusOne");
+    assertNotNull(getArgumentPlusOne);
+    assertEquals(EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance(),
+            getArgumentPlusOne.getFunction(null).getReturnType().getType());
+
+    final EdmActionImport resetDataSource = container.getActionImport("ResetDataSource");
+    assertNotNull(resetDataSource);
+    assertTrue(resetDataSource.getAction().getParameterNames().isEmpty());
+    assertNull(resetDataSource.getAction().getReturnType());
+
+    final EdmEntityType computer = metadata.getEntityType(new FullQualifiedName(container.getNamespace(), "Computer"));
+    assertNotNull(computer);
+
+    final EdmFunction getComputer = metadata.getFunction(
+            new FullQualifiedName(container.getNamespace(), "GetComputer"),
+            new FullQualifiedName(container.getNamespace(), computer.getName()),
+            Boolean.FALSE, Arrays.asList(new String[]{"computer"}));
+    assertNotNull(getComputer);
+    assertEquals(computer, getComputer.getParameter("computer").getType());
+    assertEquals(computer, getComputer.getReturnType().getType());
+
+    final EdmAction resetDataSource2 = metadata.getAction(
+            new FullQualifiedName(container.getNamespace(), "ResetDataSource"), null, Boolean.FALSE);
+    assertNotNull(resetDataSource2);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
index 1265f15..0ff9e77 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
@@ -23,18 +23,18 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotations;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Function;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
 import org.apache.olingo.odata4.client.core.AbstractTest;
 import org.apache.olingo.odata4.client.core.ODataV4Client;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationsImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImportImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.SingletonImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.Apply;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.Collection;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
@@ -128,7 +128,7 @@ public class MetadataTest extends AbstractTest {
     assertNotNull(metadata);
 
     assertFalse(metadata.getSchema(0).getAnnotationsList().isEmpty());
-    final AnnotationsImpl annots = metadata.getSchema(0).getAnnotationsList("ODataDemo.DemoService/Suppliers");
+    final Annotations annots = metadata.getSchema(0).getAnnotationsList("ODataDemo.DemoService/Suppliers");
     assertNotNull(annots);
     assertFalse(annots.getAnnotations().isEmpty());
     assertEquals(ConstExprConstructImpl.Type.String,
@@ -143,16 +143,16 @@ public class MetadataTest extends AbstractTest {
             toMetadata(getClass().getResourceAsStream("northwind-metadata.xml"));
     assertNotNull(metadata);
 
-    final SchemaImpl first = metadata.getSchema("NorthwindModel");
+    final Schema first = metadata.getSchema("NorthwindModel");
     assertNotNull(first);
 
-    final SchemaImpl second = metadata.getSchema("ODataWebExperimental.Northwind.Model");
+    final Schema second = metadata.getSchema("ODataWebExperimental.Northwind.Model");
     assertNotNull(second);
 
     assertEquals(StoreGeneratedPattern.Identity,
             first.getEntityType("Category").getProperty("CategoryID").getStoreGeneratedPattern());
 
-    final EntityContainerImpl entityContainer = second.getDefaultEntityContainer();
+    final EntityContainer entityContainer = second.getEntityContainer();
     assertNotNull(entityContainer);
     assertEquals("NorthwindEntities", entityContainer.getName());
     assertTrue(entityContainer.isLazyLoadingEnabled());
@@ -170,30 +170,30 @@ public class MetadataTest extends AbstractTest {
     assertFalse(metadata.getReferences().isEmpty());
     assertEquals("Org.OData.Measures.V1", metadata.getReferences().get(1).getIncludes().get(0).getNamespace());
 
-    final EntityTypeImpl product = metadata.getSchema(0).getEntityType("Product");
+    final EntityType product = metadata.getSchema(0).getEntityType("Product");
     assertTrue(product.isHasStream());
     assertEquals("UoM.ISOCurrency", product.getProperty("Price").getAnnotation().getTerm());
     assertEquals("Products", product.getNavigationProperty("Supplier").getPartner());
 
-    final EntityTypeImpl category = metadata.getSchema(0).getEntityType("Category");
+    final EntityType category = metadata.getSchema(0).getEntityType("Category");
     assertNotNull(category);
 
-    final ComplexTypeImpl address = metadata.getSchema(0).getComplexType("Address");
+    final ComplexType address = metadata.getSchema(0).getComplexType("Address");
     assertFalse(address.getNavigationProperty("Country").getReferentialConstraints().isEmpty());
     assertEquals("Name",
             address.getNavigationProperty("Country").getReferentialConstraints().get(0).getReferencedProperty());
 
-    final FunctionImpl productsByRating = metadata.getSchema(0).getFunctions("ProductsByRating").get(0);
+    final Function productsByRating = metadata.getSchema(0).getFunctions("ProductsByRating").get(0);
     assertNotNull(productsByRating.getParameter("Rating"));
     assertEquals("Edm.Int32", productsByRating.getParameter("Rating").getType());
     assertEquals("Collection(ODataDemo.Product)", productsByRating.getReturnType().getType());
 
-    final SingletonImpl contoso = metadata.getSchema(0).getEntityContainer().getSingleton("Contoso");
+    final Singleton contoso = metadata.getSchema(0).getEntityContainer().getSingleton("Contoso");
     assertNotNull(contoso);
     assertFalse(contoso.getNavigationPropertyBindings().isEmpty());
     assertEquals("Products", contoso.getNavigationPropertyBindings().get(0).getPath());
 
-    final FunctionImportImpl functionImport = metadata.getSchema(0).getEntityContainer().
+    final FunctionImport functionImport = metadata.getSchema(0).getEntityContainer().
             getFunctionImport("ProductsByRating");
     assertNotNull(functionImport);
     assertEquals(metadata.getSchema(0).getNamespace() + "." + productsByRating.getName(),
@@ -235,7 +235,7 @@ public class MetadataTest extends AbstractTest {
     assertNotNull(metadata);
 
     // Check displayName
-    final AnnotationImpl displayName = metadata.getSchema(0).getAnnotationsList("ODataDemo.Supplier").
+    final Annotation displayName = metadata.getSchema(0).getAnnotationsList("ODataDemo.Supplier").
             getAnnotation("Vocabulary1.DisplayName");
     assertNotNull(displayName);
     assertNull(displayName.getConstExpr());
@@ -260,7 +260,7 @@ public class MetadataTest extends AbstractTest {
     assertEquals(thirdArg, apply.getParameters().get(2));
 
     // Check Tags
-    final AnnotationImpl tags = metadata.getSchema(0).getAnnotationsList("ODataDemo.Product").
+    final Annotation tags = metadata.getSchema(0).getAnnotationsList("ODataDemo.Product").
             getAnnotation("Vocabulary1.Tags");
     assertNotNull(tags);
     assertNull(tags.getConstExpr());


[5/7] git commit: [OLINGO-169] client-api interface refinements + proxy of Edm interfaces for V3 functionImport

Posted by il...@apache.org.
[OLINGO-169] client-api interface refinements + proxy of Edm interfaces for V3 functionImport


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

Branch: refs/heads/olingo169
Commit: 1264aecd5ce4ef5b2a1e947a3600795d60e2e29a
Parents: 5fc405b
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 6 16:18:27 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 6 16:18:27 2014 +0100

----------------------------------------------------------------------
 .../client/api/UnsupportedInV3Exception.java    |  31 ++++
 .../client/api/edm/xml/AbstractAnnotations.java |  30 ----
 .../client/api/edm/xml/BindingTarget.java       |  29 ++++
 .../client/api/edm/xml/CommonAnnotations.java   |  26 ++++
 .../client/api/edm/xml/CommonParameter.java     |  10 --
 .../client/api/edm/xml/CommonProperty.java      |  24 ---
 .../odata4/client/api/edm/xml/DataServices.java |   4 -
 .../olingo/odata4/client/api/edm/xml/Edmx.java  |   4 -
 .../client/api/edm/xml/EntityContainer.java     |  18 ---
 .../odata4/client/api/edm/xml/EntityKey.java    |   2 +-
 .../odata4/client/api/edm/xml/EntitySet.java    |   5 +-
 .../odata4/client/api/edm/xml/EntityType.java   |  10 --
 .../odata4/client/api/edm/xml/EnumType.java     |   6 +-
 .../olingo/odata4/client/api/edm/xml/Named.java |   2 -
 .../odata4/client/api/edm/xml/OnDelete.java     |   4 -
 .../client/api/edm/xml/OnDeleteAction.java      |  28 ++++
 .../odata4/client/api/edm/xml/PropertyRef.java  |   1 -
 .../odata4/client/api/edm/xml/Schema.java       |  10 +-
 .../client/api/edm/xml/v3/Annotations.java      |   8 +-
 .../client/api/edm/xml/v3/Association.java      |   4 +-
 .../client/api/edm/xml/v3/AssociationEnd.java   |   8 -
 .../client/api/edm/xml/v3/AssociationSet.java   |   4 +-
 .../api/edm/xml/v3/AssociationSetEnd.java       |   4 -
 .../client/api/edm/xml/v3/FunctionImport.java   |  19 +--
 .../api/edm/xml/v3/NavigationProperty.java      |   5 -
 .../odata4/client/api/edm/xml/v3/Parameter.java |   2 -
 .../odata4/client/api/edm/xml/v3/Property.java  |  12 --
 .../client/api/edm/xml/v3/PropertyValue.java    |  16 --
 .../api/edm/xml/v3/ReferentialConstraint.java   |   4 -
 .../edm/xml/v3/ReferentialConstraintRole.java   |   4 +-
 .../client/api/edm/xml/v3/TypeAnnotation.java   |   6 +-
 .../odata4/client/api/edm/xml/v3/Using.java     |   4 -
 .../client/api/edm/xml/v3/ValueAnnotation.java  |  18 ---
 .../odata4/client/api/edm/xml/v3/ValueTerm.java |   2 -
 .../odata4/client/api/edm/xml/v4/Action.java    |  11 +-
 .../client/api/edm/xml/v4/ActionImport.java     |   2 -
 .../client/api/edm/xml/v4/AnnotatedEdmItem.java |   2 -
 .../client/api/edm/xml/v4/Annotation.java       |   8 -
 .../client/api/edm/xml/v4/Annotations.java      |   4 +-
 .../client/api/edm/xml/v4/BindingTarget.java    |  31 ----
 .../client/api/edm/xml/v4/ComplexType.java      |  18 ++-
 .../odata4/client/api/edm/xml/v4/Edmx.java      |   2 +-
 .../client/api/edm/xml/v4/EntityContainer.java  |  27 ++--
 .../odata4/client/api/edm/xml/v4/EntitySet.java |   4 +-
 .../odata4/client/api/edm/xml/v4/Function.java  |   2 -
 .../client/api/edm/xml/v4/FunctionImport.java   |   4 -
 .../odata4/client/api/edm/xml/v4/Include.java   |   4 -
 .../api/edm/xml/v4/IncludeAnnotations.java      |   6 -
 .../api/edm/xml/v4/NavigationProperty.java      |  12 +-
 .../edm/xml/v4/NavigationPropertyBinding.java   |   4 -
 .../client/api/edm/xml/v4/OnDeleteAction.java   |  28 ----
 .../odata4/client/api/edm/xml/v4/Parameter.java |   2 -
 .../odata4/client/api/edm/xml/v4/Reference.java |   8 +-
 .../api/edm/xml/v4/ReferentialConstraint.java   |   4 -
 .../client/api/edm/xml/v4/ReturnType.java       |  12 --
 .../odata4/client/api/edm/xml/v4/Schema.java    |  64 ++++++++
 .../odata4/client/api/edm/xml/v4/Singleton.java |   4 +-
 .../odata4/client/api/edm/xml/v4/Term.java      |  23 +--
 .../client/api/edm/xml/v4/TypeDefinition.java   |  14 +-
 .../client/core/edm/EdmActionImportImpl.java    |   2 +-
 .../client/core/edm/EdmBindingTargetImpl.java   |   2 +-
 .../odata4/client/core/edm/EdmClientImpl.java   | 149 +++++++++++++++----
 .../client/core/edm/EdmComplexTypeImpl.java     |  10 +-
 .../client/core/edm/EdmEntityContainerImpl.java |  49 ++++--
 .../client/core/edm/EdmEntitySetImpl.java       |   2 +-
 .../client/core/edm/EdmFunctionImportImpl.java  |   2 +-
 .../client/core/edm/EdmOperationImpl.java       |  11 +-
 .../client/core/edm/EdmOperationImportImpl.java |   5 +-
 .../core/edm/v3/EdmActionImportProxy.java       |  45 ++++++
 .../client/core/edm/v3/EdmActionProxy.java      |  39 +++++
 .../core/edm/v3/EdmFunctionImportProxy.java     |  47 ++++++
 .../client/core/edm/v3/EdmFunctionProxy.java    |  43 ++++++
 .../client/core/edm/v3/EdmOperationProxy.java   |  64 ++++++++
 .../core/edm/v3/EdmServiceMetadataImpl.java     |   6 +-
 .../client/core/edm/v3/ReturnTypeProxy.java     |  62 ++++++++
 .../core/edm/xml/AbstractAnnotations.java       |   4 +-
 .../core/edm/xml/AbstractComplexType.java       |   1 -
 .../core/edm/xml/AbstractDataServices.java      |   2 -
 .../client/core/edm/xml/AbstractEdmx.java       |   2 -
 .../core/edm/xml/AbstractEntityContainer.java   |   6 +-
 .../client/core/edm/xml/AbstractEntitySet.java  |   2 -
 .../client/core/edm/xml/AbstractEntityType.java |   4 -
 .../client/core/edm/xml/AbstractEnumType.java   |  13 +-
 .../edm/xml/AbstractNavigationProperty.java     |   1 -
 .../client/core/edm/xml/AbstractParameter.java  |   6 -
 .../client/core/edm/xml/AbstractProperty.java   |  13 +-
 .../client/core/edm/xml/AbstractSchema.java     |   2 -
 .../client/core/edm/xml/EntityKeyImpl.java      |   5 +-
 .../client/core/edm/xml/OnDeleteImpl.java       |   3 +-
 .../client/core/edm/xml/PropertyRefImpl.java    |   2 -
 .../client/core/edm/xml/v3/AnnotationsImpl.java |  10 +-
 .../core/edm/xml/v3/AssociationEndImpl.java     |   4 -
 .../client/core/edm/xml/v3/AssociationImpl.java |   7 +-
 .../core/edm/xml/v3/AssociationSetEndImpl.java  |   2 -
 .../core/edm/xml/v3/AssociationSetImpl.java     |   7 +-
 .../core/edm/xml/v3/DataServicesImpl.java       |   5 +-
 .../core/edm/xml/v3/EntityContainerImpl.java    |  19 ++-
 .../client/core/edm/xml/v3/EntitySetImpl.java   |   8 +
 .../client/core/edm/xml/v3/EnumTypeImpl.java    |  15 +-
 .../core/edm/xml/v3/FunctionImportImpl.java     |  14 +-
 .../core/edm/xml/v3/NavigationPropertyImpl.java |   3 -
 .../client/core/edm/xml/v3/ParameterImpl.java   |   1 -
 .../client/core/edm/xml/v3/PropertyImpl.java    |   6 -
 .../core/edm/xml/v3/PropertyValueImpl.java      |  12 +-
 .../edm/xml/v3/ReferentialConstraintImpl.java   |   2 -
 .../xml/v3/ReferentialConstraintRoleImpl.java   |   7 +-
 .../client/core/edm/xml/v3/SchemaImpl.java      |  56 ++++---
 .../core/edm/xml/v3/TypeAnnotationImpl.java     |   7 +-
 .../client/core/edm/xml/v3/UsingImpl.java       |   2 -
 .../core/edm/xml/v3/ValueAnnotationImpl.java    |   9 --
 .../client/core/edm/xml/v3/ValueTermImpl.java   |   2 -
 .../client/core/edm/xml/v3/XMLMetadataImpl.java |  17 ---
 .../edm/xml/v4/AbstractAnnotatedEdmItem.java    |   1 -
 .../client/core/edm/xml/v4/ActionImpl.java      |  18 +--
 .../core/edm/xml/v4/ActionImportImpl.java       |   2 -
 .../client/core/edm/xml/v4/AnnotationImpl.java  |  18 +--
 .../client/core/edm/xml/v4/ComplexTypeImpl.java |  30 ++--
 .../core/edm/xml/v4/DataServicesImpl.java       |   5 +-
 .../odata4/client/core/edm/xml/v4/EdmxImpl.java |   5 +-
 .../core/edm/xml/v4/EntityContainerImpl.java    |  45 +++---
 .../client/core/edm/xml/v4/EntitySetImpl.java   |   8 +-
 .../client/core/edm/xml/v4/EntityTypeImpl.java  |  25 ++--
 .../client/core/edm/xml/v4/EnumTypeImpl.java    |  26 +---
 .../client/core/edm/xml/v4/FunctionImpl.java    |   1 -
 .../core/edm/xml/v4/FunctionImportImpl.java     |  10 +-
 .../core/edm/xml/v4/IncludeAnnotationsImpl.java |   3 -
 .../client/core/edm/xml/v4/IncludeImpl.java     |   2 -
 .../client/core/edm/xml/v4/MemberImpl.java      |   7 +-
 .../xml/v4/NavigationPropertyBindingImpl.java   |   2 -
 .../core/edm/xml/v4/NavigationPropertyImpl.java |  24 ++-
 .../client/core/edm/xml/v4/ParameterImpl.java   |   1 -
 .../client/core/edm/xml/v4/PropertyImpl.java    |   7 +-
 .../client/core/edm/xml/v4/ReferenceImpl.java   |  11 +-
 .../edm/xml/v4/ReferentialConstraintImpl.java   |   2 -
 .../client/core/edm/xml/v4/ReturnTypeImpl.java  |   6 -
 .../client/core/edm/xml/v4/SchemaImpl.java      | 105 +++++++------
 .../client/core/edm/xml/v4/SingletonImpl.java   |   2 -
 .../core/edm/xml/v4/TermDeserializer.java       |   7 +-
 .../odata4/client/core/edm/xml/v4/TermImpl.java |  28 ++--
 .../core/edm/xml/v4/TypeDefinitionImpl.java     |  12 +-
 .../client/core/edm/xml/v4/XMLMetadataImpl.java |  21 ++-
 .../annotation/AnnotatedDynExprConstruct.java   |   8 +-
 .../odata4/client/core/v3/MetadataTest.java     | 115 ++++++++------
 .../odata4/client/core/v4/MetadataTest.java     |  42 +++---
 144 files changed, 1088 insertions(+), 994 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java
deleted file mode 100644
index 76bf4d6..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java
+++ /dev/null
@@ -1,30 +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.xml;
-
-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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java
new file mode 100644
index 0000000..c996f71
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/BindingTarget.java
@@ -0,0 +1,29 @@
+/*
+ * 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.xml;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
+
+public interface BindingTarget extends Named {
+
+  String getEntityType();
+
+  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonAnnotations.java
new file mode 100644
index 0000000..ddee303
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonAnnotations.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.xml;
+
+public abstract interface CommonAnnotations {
+
+  String getTarget();
+
+  String getQualifier();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
index 6d39a8d..30aef72 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
@@ -22,22 +22,12 @@ public interface CommonParameter extends Named {
 
   String getType();
 
-  void setType(String type);
-
   boolean isNullable();
 
-  void setNullable(boolean nullable);
-
   Integer getMaxLength();
 
-  void setMaxLength(Integer maxLength);
-
   Integer getPrecision();
 
-  void setPrecision(Integer precision);
-
   Integer getScale();
 
-  void setScale(Integer scale);
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
index cc362a5..7f51af7 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
@@ -25,49 +25,25 @@ public interface CommonProperty extends Named {
 
   String getType();
 
-  void setType(String type);
-
   boolean isNullable();
 
-  void setNullable(boolean nullable);
-
   String getDefaultValue();
 
-  void setDefaultValue(String defaultValue);
-
   Integer getMaxLength();
 
-  void setMaxLength(Integer maxLength);
-
   boolean isFixedLength();
 
-  void setFixedLength(boolean fixedLength);
-
   Integer getPrecision();
 
-  void setPrecision(Integer precision);
-
   Integer getScale();
 
-  void setScale(Integer 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
index b4b4c95..f05c352 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
@@ -24,11 +24,7 @@ public interface DataServices {
 
   String getDataServiceVersion();
 
-  void setDataServiceVersion(String version);
-
   String getMaxDataServiceVersion();
 
-  void setMaxDataServiceVersion(String version);
-
   List<? extends Schema> getSchemas();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
index e90bb85..0ab3d7a 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
@@ -22,9 +22,5 @@ public interface Edmx {
 
   String getVersion();
 
-  void setVersion(String version);
-
   DataServices getDataServices();
-
-  void setDataServices(DataServices dataServices);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
index 73714a5..53f7e09 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
@@ -24,34 +24,16 @@ public interface EntityContainer extends Named {
 
   String getExtends();
 
-  void setExtends(String _extends);
-
   boolean isLazyLoadingEnabled();
 
-  void setLazyLoadingEnabled(boolean lazyLoadingEnabled);
-
   boolean isDefaultEntityContainer();
 
-  void setDefaultEntityContainer(boolean defaultEntityContainer);
-
   EntitySet getEntitySet(String name);
 
   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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
index 1a6447e..cc3ab6e 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
@@ -22,5 +22,5 @@ import java.util.List;
 
 public interface EntityKey {
 
-  List<? extends PropertyRef> getPropertyRefs();
+  List<PropertyRef> getPropertyRefs();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
index 558b634..659480b 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
@@ -18,9 +18,6 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml;
 
-public interface EntitySet extends Named {
+public interface EntitySet extends BindingTarget {
 
-  String getEntityType();
-
-  void setEntityType(String entityType);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
index d3ef1a7..d2e3c6d 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
@@ -22,21 +22,11 @@ public interface EntityType extends ComplexType {
 
   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();
-
-  void setHasStream(boolean hasStream);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
index 15f81c7..8e2628a 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
@@ -24,13 +24,9 @@ public interface EnumType extends Named {
 
   String getUnderlyingType();
 
-  void setUnderlyingType(String underlyingType);
-
   boolean isFlags();
 
-  void setFlags(boolean flags);
-
-  List<? extends Member> getMembers();
+  List<Member> getMembers();
 
   Member getMember(String name);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
index 89b4225..00a0e31 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
@@ -21,6 +21,4 @@ package org.apache.olingo.odata4.client.api.edm.xml;
 public interface Named {
 
   String getName();
-
-  void setName(String name);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
index 69ca408..7f48979 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
@@ -18,11 +18,7 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml;
 
-import org.apache.olingo.odata4.client.api.edm.xml.v4.OnDeleteAction;
-
 public interface OnDelete {
 
   OnDeleteAction getAction();
-
-  void setAction(OnDeleteAction action);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDeleteAction.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDeleteAction.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDeleteAction.java
new file mode 100644
index 0000000..3479707
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDeleteAction.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.xml;
+
+public enum OnDeleteAction {
+
+  Cascade,
+  None,
+  SetNull,
+  SetDefault;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
index e8c800f..49f0430 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
@@ -22,5 +22,4 @@ public interface PropertyRef extends Named {
 
   String getAlias();
 
-  void setAlias(String alias);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
index 8229234..42dc701 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
@@ -24,21 +24,17 @@ public interface Schema {
 
   String getNamespace();
 
-  void setNamespace(String namespace);
-
   String getAlias();
 
-  void setAlias(String alias);
-
   List<? extends EntityType> getEntityTypes();
 
-  List<? extends EnumType> getEnumTypes();
+  List<EnumType> getEnumTypes();
 
   EnumType getEnumType(String name);
 
-  List<? extends AbstractAnnotations> getAnnotationsList();
+  List<? extends CommonAnnotations> getAnnotationsList();
 
-  AbstractAnnotations getAnnotationsList(String target);
+  CommonAnnotations getAnnotationsList(String target);
 
   List<? extends ComplexType> getComplexTypes();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
index 07f2349..03bdbe7 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
@@ -19,11 +19,11 @@
 package org.apache.olingo.odata4.client.api.edm.xml.v3;
 
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.AbstractAnnotations;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonAnnotations;
 
-public interface Annotations extends AbstractAnnotations {
+public interface Annotations extends CommonAnnotations {
 
-  List<? extends TypeAnnotation> getTypeAnnotations();
+  List<TypeAnnotation> getTypeAnnotations();
 
-  List<? extends ValueAnnotation> getValueAnnotations();
+  List<ValueAnnotation> getValueAnnotations();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
index 06c9566..d306125 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
@@ -25,8 +25,6 @@ public interface Association extends Named {
 
   ReferentialConstraint getReferentialConstraint();
 
-  void setReferentialConstraint(ReferentialConstraint referentialConstraint);
-
-  List<? extends AssociationEnd> getEnds();
+  List<AssociationEnd> getEnds();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
index 6320ac6..1f249a8 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
@@ -24,17 +24,9 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
index eb9ebb9..5963a0c 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
@@ -25,7 +25,5 @@ public interface AssociationSet extends Named {
 
   String getAssociation();
 
-  void setAssociation(String association);
-
-  List<? extends AssociationSetEnd> getEnds();
+  List<AssociationSetEnd> getEnds();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
index fa7a111..891ba6c 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
@@ -22,9 +22,5 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
index 99f39ee..ccc733e 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
@@ -19,42 +19,25 @@
 package org.apache.olingo.odata4.client.api.edm.xml.v3;
 
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
 
 public interface FunctionImport extends org.apache.olingo.odata4.client.api.edm.xml.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();
+  List<Parameter> getParameters();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
index 921c600..f1f5ce0 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
@@ -22,13 +22,8 @@ public interface NavigationProperty extends org.apache.olingo.odata4.client.api.
 
   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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
index f624f7f..8fcbc4b 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
@@ -21,6 +21,4 @@ package org.apache.olingo.odata4.client.api.edm.xml.v3;
 public interface Parameter extends org.apache.olingo.odata4.client.api.edm.xml.CommonParameter {
 
   ParameterMode getMode();
-
-  void setMode(ParameterMode mode);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
index 0eb9fda..950e562 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
@@ -25,26 +25,14 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
index 6da96a2..08fcb5c 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
@@ -26,34 +26,18 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
index 1e8e55a..6448304 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
@@ -22,9 +22,5 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
index 198bdb7..a47eb58 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
@@ -25,8 +25,6 @@ public interface ReferentialConstraintRole {
 
   String getRole();
 
-  void setRole(final String role);
-
-  List<? extends PropertyRef> getPropertyRefs();
+  List<PropertyRef> getPropertyRefs();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java
index ead3239..5b4792c 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java
@@ -24,12 +24,8 @@ public interface TypeAnnotation {
 
   String getTerm();
 
-  void setTerm(String term);
-
   String getQualifier();
 
-  void setQualifier(String qualifier);
-
-  List<? extends PropertyValue> getPropertyValues();
+  List<PropertyValue> getPropertyValues();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
index 541d32a..db69189 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
@@ -22,10 +22,6 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java
index 799f982..9f779ef 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java
@@ -42,22 +42,4 @@ public interface ValueAnnotation {
 
   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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
index cefba08..9180086 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
@@ -23,6 +23,4 @@ import org.apache.olingo.odata4.client.api.edm.xml.Named;
 public interface ValueTerm extends Named {
 
   String getType();
-
-  void setType(String type);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
index 0828304..5fb82d1 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
@@ -20,24 +20,17 @@ package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.Named;
-import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
 
 public interface Action extends Named {
 
   boolean isBound();
 
-  void setBound(boolean bound);
-
   String getEntitySetPath();
 
-  void setEntitySetPath(String entitySetPath);
-
-  List<? extends CommonParameter> getParameters();
+  List<Parameter> getParameters();
 
-  CommonParameter getParameter(String name);
+  Parameter getParameter(String name);
 
   ReturnType getReturnType();
 
-  void setReturnType(ReturnType returnType);
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
index a2d8824..5338737 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
@@ -21,6 +21,4 @@ package org.apache.olingo.odata4.client.api.edm.xml.v4;
 public interface ActionImport extends OperationImport {
 
   String getAction();
-
-  void setAction(String action);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
index b185b0f..484a830 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
@@ -21,6 +21,4 @@ package org.apache.olingo.odata4.client.api.edm.xml.v4;
 public interface AnnotatedEdmItem {
 
   Annotation getAnnotation();
-
-  void setAnnotation(Annotation annotation);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
index c181625..b7e237f 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
@@ -25,17 +25,9 @@ public interface Annotation {
 
   String getTerm();
 
-  void setTerm(String term);
-
   String getQualifier();
 
-  void setQualifier(String qualifier);
-
   ConstExprConstruct getConstExpr();
 
-  void setConstExpr(ConstExprConstruct constExpr);
-
   DynExprConstruct getDynExpr();
-
-  void setDynExpr(DynExprConstruct dynExpr);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
index fa5ef64..2f3e0aa 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
@@ -19,9 +19,9 @@
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.AbstractAnnotations;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonAnnotations;
 
-public interface Annotations extends AbstractAnnotations {
+public interface Annotations extends CommonAnnotations {
 
   List<? extends Annotation> getAnnotations();
 

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java
index 8724462..7515ce9 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java
@@ -18,18 +18,26 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
+import java.util.List;
+
 public interface ComplexType extends org.apache.olingo.odata4.client.api.edm.xml.ComplexType, AnnotatedEdmItem {
 
   boolean isAbstractEntityType();
 
-  void setAbstractEntityType(boolean abstractEntityType);
-
   String getBaseType();
 
-  void setBaseType(String baseType);
-
   boolean isOpenType();
 
-  void setOpenType(boolean openType);
+  @Override
+  Property getProperty(String name);
+
+  @Override
+  List<Property> getProperties();
+
+  @Override
+  NavigationProperty getNavigationProperty(String name);
+
+  @Override
+  List<NavigationProperty> getNavigationProperties();
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
index af0d85f..2f2f609 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
@@ -22,5 +22,5 @@ import java.util.List;
 
 public interface Edmx extends org.apache.olingo.odata4.client.api.edm.xml.Edmx {
 
-  List<? extends Reference> getReferences();
+  List<Reference> getReferences();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
index d3a7611..6ed0846 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
@@ -22,26 +22,23 @@ import java.util.List;
 
 public interface EntityContainer extends org.apache.olingo.odata4.client.api.edm.xml.EntityContainer {
 
-  List<? extends Singleton> getSingletons();
+  EntitySet getEntitySet(String name);
+
+  List<EntitySet> getEntitySets();
+
+  List<Singleton> getSingletons();
 
   Singleton getSingleton(String name);
 
-  /**
-   * 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<ActionImport> getActionImports(String name);
+
+  List<ActionImport> getActionImports();
+
+  FunctionImport getFunctionImport(String name);
 
-  List<? extends ActionImport> getActionImports();
+  List<FunctionImport> getFunctionImports(String name);
 
+  List<FunctionImport> getFunctionImports();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
index abdd598..a48b358 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
@@ -18,9 +18,7 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, BindingTarget {
+public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, AnnotatedEdmItem {
 
   boolean isIncludeInServiceDocument();
-
-  void setIncludeInServiceDocument(boolean includeInServiceDocument);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
index 60f1491..7662a2a 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
@@ -21,6 +21,4 @@ package org.apache.olingo.odata4.client.api.edm.xml.v4;
 public interface Function extends Action {
 
   boolean isComposable();
-
-  void setComposable(boolean composable);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
index 1c243cd..bae6a10 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
@@ -24,9 +24,5 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
index d31916c..e75f589 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
@@ -23,8 +23,4 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
index 484f644..0f25c35 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
@@ -25,10 +25,4 @@ public interface IncludeAnnotations {
   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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
index d544b4a..d8d028d 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
@@ -26,24 +26,14 @@ public interface NavigationProperty
 
   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();
+  List<ReferentialConstraint> getReferentialConstraints();
 
   OnDelete getOnDelete();
 
-  void setOnDelete(OnDelete onDelete);
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
index 565e2c4..6a4d460 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
@@ -22,10 +22,6 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java
deleted file mode 100644
index bf789cf..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.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.api.edm.xml.v4;
-
-public enum OnDeleteAction {
-
-  Cascade,
-  None,
-  SetNull,
-  SetDefault;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
index e5afe45..3a96af3 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
@@ -21,6 +21,4 @@ package org.apache.olingo.odata4.client.api.edm.xml.v4;
 public interface Parameter extends org.apache.olingo.odata4.client.api.edm.xml.CommonParameter {
 
   String getSrid();
-
-  void setSrid(final String srid);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java
index d16e4e5..79f76e2 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java
@@ -25,11 +25,9 @@ public interface Reference {
 
   URI getUri();
 
-  void setUri(URI uri);
+  List<Include> getIncludes();
 
-  List<? extends Include> getIncludes();
+  List<IncludeAnnotations> getIncludeAnnotations();
 
-  List<? extends IncludeAnnotations> getIncludeAnnotations();
-
-  List<? extends Annotation> getAnnotations();
+  List<Annotation> getAnnotations();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
index 6a06a65..f0063d2 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
@@ -22,10 +22,6 @@ 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
index b6cd912..0157dc4 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
@@ -31,16 +31,4 @@ public interface ReturnType {
   String getType();
 
   boolean isNullable();
-
-  void setMaxLength(Integer maxLength);
-
-  void setNullable(boolean nullable);
-
-  void setPrecision(Integer precision);
-
-  void setScale(Integer scale);
-
-  void setSrid(String srid);
-
-  void setType(String type);
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Schema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Schema.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Schema.java
new file mode 100644
index 0000000..bfccae2
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Schema.java
@@ -0,0 +1,64 @@
+/*
+ * 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.xml.v4;
+
+import java.util.List;
+
+public interface Schema extends org.apache.olingo.odata4.client.api.edm.xml.Schema, AnnotatedEdmItem {
+
+  @Override
+  List<EntityContainer> getEntityContainers();
+
+  EntityContainer getEntityContainer();
+
+  @Override
+  ComplexType getComplexType(String name);
+
+  @Override
+  List<ComplexType> getComplexTypes();
+
+  @Override
+  EntityType getEntityType(String name);
+
+  @Override
+  List<EntityType> getEntityTypes();
+
+  List<Action> getActions();
+
+  List<Action> getActions(String name);
+
+  List<Annotation> getAnnotations();
+
+  List<Function> getFunctions();
+
+  List<Function> getFunctions(String name);
+
+  List<Term> getTerms();
+
+  TypeDefinition getTypeDefinition(String name);
+
+  List<TypeDefinition> getTypeDefinitions();
+
+  @Override
+  List<Annotations> getAnnotationsList();
+
+  @Override
+  Annotations getAnnotationsList(String target);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
index 41145e5..589ee9f 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
@@ -18,8 +18,8 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-import org.apache.olingo.odata4.client.api.edm.xml.Named;
+import org.apache.olingo.odata4.client.api.edm.xml.BindingTarget;
 
-public interface Singleton extends Named, BindingTarget {
+public interface Singleton extends BindingTarget, AnnotatedEdmItem {
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
index e3b32ac..86e6a3f 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-import java.math.BigInteger;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.Named;
 
@@ -30,31 +29,15 @@ public interface Term extends Named {
 
   String getDefaultValue();
 
-  String getMaxLength();
+  Integer getMaxLength();
 
-  BigInteger getPrecision();
+  Integer getPrecision();
 
-  BigInteger getScale();
+  Integer 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/1264aecd/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
index 05e8514..424a502 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
@@ -23,7 +23,7 @@ import org.apache.olingo.odata4.client.api.edm.xml.Named;
 
 public interface TypeDefinition extends Named {
 
-  List<? extends Annotation> getAnnotations();
+  List<Annotation> getAnnotations();
 
   Integer getMaxLength();
 
@@ -36,16 +36,4 @@ public interface TypeDefinition extends Named {
   String getUnderlyingType();
 
   boolean isUnicode();
-
-  void setMaxLength(Integer maxLength);
-
-  void setPrecision(Integer precision);
-
-  void setScale(Integer 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/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
index a133578..1af0f47 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
@@ -32,7 +32,7 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
   public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
           final ActionImport actionImport) {
 
-    super(edm, container, name, actionImport);
+    super(edm, container, name, actionImport.getEntitySet());
     this.actionImport = actionImport;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
index 26f70e9..d27260b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import java.util.Iterator;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.BindingTarget;
+import org.apache.olingo.odata4.client.api.edm.xml.BindingTarget;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;


[6/7] git commit: [OLINGO-169] Enhancing EdmActionImportInfo and EdmFunctionImportInfo support for V3

Posted by il...@apache.org.
[OLINGO-169] Enhancing EdmActionImportInfo and EdmFunctionImportInfo support for V3


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

Branch: refs/heads/olingo169
Commit: d1b341dfaaad716b162bb20baeaeb9e42b0cc1d8
Parents: 1264aec
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 6 16:38:08 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 6 16:38:08 2014 +0100

----------------------------------------------------------------------
 .../edm/AbstractEdmServiceMetadataImpl.java     | 25 ++---------
 .../odata4/client/core/edm/EdmClientImpl.java   | 16 +++----
 .../core/edm/v3/EdmServiceMetadataImpl.java     | 47 +++++++++++++++++++-
 .../core/edm/v3/V3FunctionImportUtils.java      | 36 +++++++++++++++
 .../core/edm/v4/EdmServiceMetadataImpl.java     | 21 +++++++++
 .../odata4/client/core/v3/MetadataTest.java     | 29 ++++++++++++
 6 files changed, 141 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/d1b341df/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
index d036e9f..15e7e2c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
@@ -25,16 +25,15 @@ 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.xml.CommonFunctionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
 import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
 import org.apache.olingo.odata4.client.api.edm.xml.Schema;
 import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
 import org.apache.olingo.odata4.commons.core.edm.EdmEntitySetInfoImpl;
-import org.apache.olingo.odata4.commons.core.edm.EdmFunctionImportInfoImpl;
 
 public abstract class AbstractEdmServiceMetadataImpl implements EdmServiceMetadata {
 
@@ -42,7 +41,9 @@ public abstract class AbstractEdmServiceMetadataImpl implements EdmServiceMetada
 
   private List<EdmEntitySetInfo> entitySetInfos;
 
-  private List<EdmFunctionImportInfo> functionImportInfos;
+  protected List<EdmFunctionImportInfo> functionImportInfos;
+
+  protected List<EdmActionImportInfo> actionImportInfos;
 
   public static EdmServiceMetadata getInstance(final XMLMetadata xmlMetadata) {
     return xmlMetadata instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl
@@ -81,24 +82,6 @@ public abstract class AbstractEdmServiceMetadataImpl implements EdmServiceMetada
   }
 
   @Override
-  public List<EdmFunctionImportInfo> getFunctionImportInfos() {
-    synchronized (this) {
-      if (functionImportInfos == null) {
-        functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
-        for (Schema schema : xmlMetadata.getSchemas()) {
-          for (EntityContainer entityContainer : schema.getEntityContainers()) {
-            for (CommonFunctionImport functionImport : entityContainer.getFunctionImports()) {
-              functionImportInfos.add(
-                      new EdmFunctionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
-            }
-          }
-        }
-      }
-    }
-    return functionImportInfos;
-  }
-
-  @Override
   public boolean equals(final Object obj) {
     return EqualsBuilder.reflectionEquals(this, obj);
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/d1b341df/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
index 25a6c27..a89bf16 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
@@ -42,9 +42,9 @@ import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Action;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Function;
-import org.apache.olingo.odata4.client.api.http.HttpMethod;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmActionProxy;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmFunctionProxy;
+import org.apache.olingo.odata4.client.core.edm.v3.V3FunctionImportUtils;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
@@ -164,12 +164,6 @@ public class EdmClientImpl extends AbstractEdmImpl {
     return result;
   }
 
-  private boolean canProxyFunction(final FunctionImport functionImport) {
-    return functionImport.getHttpMethod() == null
-            ? !functionImport.isSideEffecting()
-            : HttpMethod.GET.name().equals(functionImport.getHttpMethod());
-  }
-
   @Override
   protected EdmAction createUnboundAction(final FullQualifiedName actionName) {
     EdmAction result = null;
@@ -194,7 +188,7 @@ public class EdmClientImpl extends AbstractEdmImpl {
         boolean found = false;
         for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
           final FunctionImport functionImport = itor.next();
-          if (!canProxyFunction(functionImport) && !functionImport.isBindable()) {
+          if (!V3FunctionImportUtils.canProxyFunction(functionImport) && !functionImport.isBindable()) {
             found = functionImport.getParameters().isEmpty();
             result = EdmActionProxy.getInstance(this, actionName, functionImport);
           }
@@ -235,7 +229,7 @@ public class EdmClientImpl extends AbstractEdmImpl {
         boolean found = false;
         for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
           final FunctionImport functionImport = itor.next();
-          if (canProxyFunction(functionImport) && !functionImport.isBindable()) {
+          if (V3FunctionImportUtils.canProxyFunction(functionImport) && !functionImport.isBindable()) {
             final Set<String> functionParamNames = new HashSet<String>();
             for (CommonParameter param : functionImport.getParameters()) {
               functionParamNames.add(param.getName());
@@ -283,7 +277,7 @@ public class EdmClientImpl extends AbstractEdmImpl {
         boolean found = false;
         for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
           final FunctionImport functionImport = itor.next();
-          if (!canProxyFunction(functionImport) && functionImport.isBindable()) {
+          if (!V3FunctionImportUtils.canProxyFunction(functionImport) && functionImport.isBindable()) {
             final EdmTypeInfo boundParam = new EdmTypeInfo(functionImport.getParameters().get(0).getType());
             if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
                     && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
@@ -337,7 +331,7 @@ public class EdmClientImpl extends AbstractEdmImpl {
         boolean found = false;
         for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
           final FunctionImport functionImport = itor.next();
-          if (!canProxyFunction(functionImport) && functionImport.isBindable()) {
+          if (!V3FunctionImportUtils.canProxyFunction(functionImport) && functionImport.isBindable()) {
             final EdmTypeInfo boundParam = new EdmTypeInfo(functionImport.getParameters().get(0).getType());
             if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
                     && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/d1b341df/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
index cb0b84a..e377d78 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
@@ -18,13 +18,21 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v3;
 
+import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.UnsupportedInV3Exception;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmServiceMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.odata4.commons.core.edm.EdmActionImportInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmFunctionImportInfoImpl;
 
 public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
 
@@ -45,8 +53,45 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
   }
 
   @Override
+  public List<EdmFunctionImportInfo> getFunctionImportInfos() {
+    synchronized (this) {
+      if (functionImportInfos == null) {
+        functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          for (EntityContainer entityContainer : schema.getEntityContainers()) {
+            for (CommonFunctionImport functionImport : entityContainer.getFunctionImports()) {
+              final FunctionImport _funFunctionImport = (FunctionImport) functionImport;
+              if (V3FunctionImportUtils.canProxyFunction(_funFunctionImport)) {
+                functionImportInfos.add(
+                        new EdmFunctionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
+              }
+            }
+          }
+        }
+      }
+      return functionImportInfos;
+    }
+  }
+
+  @Override
   public List<EdmActionImportInfo> getActionImportInfos() {
-    throw new UnsupportedInV3Exception();
+    synchronized (this) {
+      if (actionImportInfos == null) {
+        actionImportInfos = new ArrayList<EdmActionImportInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          for (EntityContainer entityContainer : schema.getEntityContainers()) {
+            for (CommonFunctionImport functionImport : entityContainer.getFunctionImports()) {
+              final FunctionImport _funFunctionImport = (FunctionImport) functionImport;
+              if (!V3FunctionImportUtils.canProxyFunction(_funFunctionImport)) {
+                actionImportInfos.add(
+                        new EdmActionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
+              }
+            }
+          }
+        }
+      }
+      return actionImportInfos;
+    }
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/d1b341df/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/V3FunctionImportUtils.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/V3FunctionImportUtils.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/V3FunctionImportUtils.java
new file mode 100644
index 0000000..c8d352a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/V3FunctionImportUtils.java
@@ -0,0 +1,36 @@
+/*
+ * 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 org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.odata4.client.api.http.HttpMethod;
+
+public final class V3FunctionImportUtils {
+
+  public static boolean canProxyFunction(final FunctionImport functionImport) {
+    return functionImport.getHttpMethod() == null
+            ? !functionImport.isSideEffecting()
+            : HttpMethod.GET.name().equals(functionImport.getHttpMethod());
+  }
+
+  private V3FunctionImportUtils() {
+    // empty constructor for static utility classes
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/d1b341df/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
index 2f797ee..dfcc38b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
@@ -20,6 +20,7 @@ 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.xml.CommonFunctionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.Schema;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
@@ -27,9 +28,11 @@ import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmServiceMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.odata4.commons.core.edm.EdmActionImportInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmFunctionImportInfoImpl;
 import org.apache.olingo.odata4.commons.core.edm.EdmSingletonInfoImpl;
 
 public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
@@ -66,6 +69,24 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
   }
 
   @Override
+  public List<EdmFunctionImportInfo> getFunctionImportInfos() {
+    synchronized (this) {
+      if (functionImportInfos == null) {
+        functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          for (org.apache.olingo.odata4.client.api.edm.xml.EntityContainer entityContainer : schema.getEntityContainers()) {
+            for (CommonFunctionImport functionImport : entityContainer.getFunctionImports()) {
+              functionImportInfos.add(
+                      new EdmFunctionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
+            }
+          }
+        }
+      }
+    }
+    return functionImportInfos;
+  }
+
+  @Override
   public List<EdmActionImportInfo> getActionImportInfos() {
     synchronized (this) {
       if (actionImportInfos == null) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/d1b341df/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
index 483d6f5..5efb1d3 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.client.core.v3;
 
 import java.util.Arrays;
+import java.util.HashSet;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -26,6 +27,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.util.List;
+import java.util.Set;
 import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
 import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
 import org.apache.olingo.odata4.client.api.edm.xml.Schema;
@@ -37,11 +39,13 @@ import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
 import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 import org.junit.Test;
@@ -139,6 +143,31 @@ public class MetadataTest extends AbstractTest {
             readMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
+    final Set<String> actionImports = new HashSet<String>();
+    for (EdmActionImportInfo info : metadata.getServiceMetadata().getActionImportInfos()) {
+      actionImports.add(info.getActionImportName());
+    }
+    final Set<String> expectedAI = new HashSet<String>(Arrays.asList(new String[]{
+      "ResetDataSource",
+      "IncreaseSalaries",
+      "Sack",
+      "GetComputer",
+      "ChangeProductDimensions",
+      "ResetComputerDetailsSpecifications"}));
+    assertEquals(expectedAI, actionImports);
+    final Set<String> functionImports = new HashSet<String>();
+    for (EdmFunctionImportInfo info : metadata.getServiceMetadata().getFunctionImportInfos()) {
+      functionImports.add(info.getFunctionImportName());
+    }
+    final Set<String> expectedFI = new HashSet<String>(Arrays.asList(new String[]{
+      "GetPrimitiveString",
+      "GetSpecificCustomer",
+      "GetCustomerCount",
+      "GetArgumentPlusOne",
+      "EntityProjectionReturnsCollectionOfComplexTypes",
+      "InStreamErrorGetCustomer"}));
+    assertEquals(expectedFI, functionImports);
+
     final EdmEntityContainer container = metadata.getEntityContainer(
             new FullQualifiedName("Microsoft.Test.OData.Services.AstoriaDefaultService", "DefaultContainer"));
     assertNotNull(container);


[3/7] [OLINGO-169] client-api interface refinements + proxy of Edm interfaces for V3 functionImport

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
index cbda596..4ed4769 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
@@ -40,7 +40,6 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     return relationship;
   }
 
-  @Override
   public void setRelationship(final String relationship) {
     this.relationship = relationship;
   }
@@ -50,7 +49,6 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     return toRole;
   }
 
-  @Override
   public void setToRole(final String toRole) {
     this.toRole = toRole;
   }
@@ -60,7 +58,6 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     return fromRole;
   }
 
-  @Override
   public void setFromRole(final String fromRole) {
     this.fromRole = fromRole;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
index 0912b46..7406118 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
@@ -33,7 +33,6 @@ public class ParameterImpl extends AbstractParameter implements Parameter {
     return mode;
   }
 
-  @Override
   public void setMode(final ParameterMode mode) {
     this.mode = mode;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
index 8c52101..352f8f0 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
@@ -43,7 +43,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
     return fcSourcePath;
   }
 
-  @Override
   public void setFcSourcePath(final String fcSourcePath) {
     this.fcSourcePath = fcSourcePath;
   }
@@ -53,7 +52,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
     return fcTargetPath;
   }
 
-  @Override
   public void setFcTargetPath(final String fcTargetPath) {
     this.fcTargetPath = fcTargetPath;
   }
@@ -63,7 +61,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
     return fcContentKind;
   }
 
-  @Override
   public void setFcContentKind(final EdmContentKind fcContentKind) {
     this.fcContentKind = fcContentKind;
   }
@@ -73,7 +70,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
     return fcNSPrefix;
   }
 
-  @Override
   public void setFcNSPrefix(final String fcNSPrefix) {
     this.fcNSPrefix = fcNSPrefix;
   }
@@ -83,7 +79,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
     return fcNSURI;
   }
 
-  @Override
   public void setFcNSURI(final String fcNSURI) {
     this.fcNSURI = fcNSURI;
   }
@@ -93,7 +88,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
     return fcKeepInContent;
   }
 
-  @Override
   public void setFcKeepInContent(final boolean fcKeepInContent) {
     this.fcKeepInContent = fcKeepInContent;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
index 5b4042a..c7e0d42 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
@@ -58,7 +58,6 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return property;
   }
 
-  @Override
   public void setProperty(final String property) {
     this.property = property;
   }
@@ -68,7 +67,6 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return path;
   }
 
-  @Override
   public void setPath(final String path) {
     this.path = path;
   }
@@ -78,7 +76,6 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return string;
   }
 
-  @Override
   public void setString(final String string) {
     this.string = string;
   }
@@ -88,7 +85,6 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return _int;
   }
 
-  @Override
   public void setInt(final BigInteger _int) {
     this._int = _int;
   }
@@ -98,7 +94,6 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return _float;
   }
 
-  @Override
   public void setFloat(final Double _float) {
     this._float = _float;
   }
@@ -108,7 +103,6 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return decimal;
   }
 
-  @Override
   public void setDecimal(final BigDecimal decimal) {
     this.decimal = decimal;
   }
@@ -118,18 +112,16 @@ public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue
     return bool;
   }
 
-  @Override
   public void setBool(final Boolean bool) {
     this.bool = bool;
   }
 
   @Override
   public Date getDateTime() {
-    return dateTime;
+    return dateTime == null ? null : new Date(dateTime.getTime());
   }
 
-  @Override
   public void setDateTime(final Date dateTime) {
-    this.dateTime = dateTime;
+    this.dateTime = dateTime == null ? null : new Date(dateTime.getTime());
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
index af8f8ce..d2cce53 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
@@ -40,7 +40,6 @@ public class ReferentialConstraintImpl extends AbstractEdmItem implements Refere
   }
 
   @JsonIgnore
-  @Override
   public void setPrincipal(final ReferentialConstraintRole principal) {
     this.principal = (ReferentialConstraintRoleImpl) principal;
   }
@@ -51,7 +50,6 @@ public class ReferentialConstraintImpl extends AbstractEdmItem implements Refere
   }
 
   @JsonIgnore
-  @Override
   public void setDependent(final ReferentialConstraintRole dependent) {
     this.dependent = (ReferentialConstraintRoleImpl) dependent;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
index edd7ff6..9ded4c5 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
@@ -21,9 +21,9 @@ package org.apache.olingo.odata4.client.core.edm.xml.v3;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.PropertyRef;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.ReferentialConstraintRole;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
-import org.apache.olingo.odata4.client.core.edm.xml.PropertyRefImpl;
 
 @JsonDeserialize(using = ReferentialConstraintRoleDeserializer.class)
 public class ReferentialConstraintRoleImpl extends AbstractEdmItem implements ReferentialConstraintRole {
@@ -32,19 +32,18 @@ public class ReferentialConstraintRoleImpl extends AbstractEdmItem implements Re
 
   private String role;
 
-  private List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
+  private List<PropertyRef> propertyRefs = new ArrayList<PropertyRef>();
 
   @Override
   public String getRole() {
     return role;
   }
 
-  @Override
   public void setRole(final String role) {
     this.role = role;
   }
 
-  public List<PropertyRefImpl> getPropertyRefs() {
+  public List<PropertyRef> getPropertyRefs() {
     return propertyRefs;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
index 70257b1..8caccdc 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
@@ -20,42 +20,50 @@ package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
 import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Annotations;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Association;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Using;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ValueTerm;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractSchema;
 
 public class SchemaImpl extends AbstractSchema implements Schema {
 
   private static final long serialVersionUID = 4453992249818796144L;
 
-  private final List<AnnotationsImpl> annotationList = new ArrayList<AnnotationsImpl>();
+  private final List<Annotations> annotationList = new ArrayList<Annotations>();
 
-  private final List<AssociationImpl> associations = new ArrayList<AssociationImpl>();
+  private final List<Association> associations = new ArrayList<Association>();
 
-  private final List<ComplexTypeImpl> complexTypes = new ArrayList<ComplexTypeImpl>();
+  private final List<ComplexType> complexTypes = new ArrayList<ComplexType>();
 
-  private final List<EntityContainerImpl> entityContainers = new ArrayList<EntityContainerImpl>();
+  private final List<EntityContainer> entityContainers = new ArrayList<EntityContainer>();
 
-  private final List<EntityTypeImpl> entityTypes = new ArrayList<EntityTypeImpl>();
+  private final List<EntityType> entityTypes = new ArrayList<EntityType>();
 
-  private final List<EnumTypeImpl> enumTypes = new ArrayList<EnumTypeImpl>();
+  private final List<EnumType> enumTypes = new ArrayList<EnumType>();
 
-  private final List<UsingImpl> usings = new ArrayList<UsingImpl>();
+  private final List<Using> usings = new ArrayList<Using>();
 
-  private final List<ValueTermImpl> valueTerms = new ArrayList<ValueTermImpl>();
+  private final List<ValueTerm> valueTerms = new ArrayList<ValueTerm>();
 
-  public AssociationImpl getAssociation(final String name) {
+  public Association getAssociation(final String name) {
     return getOneByName(name, getAssociations());
   }
 
   @Override
-  public List<AnnotationsImpl> getAnnotationsList() {
+  public List<Annotations> getAnnotationsList() {
     return annotationList;
   }
 
   @Override
-  public AnnotationsImpl getAnnotationsList(final String target) {
-    AnnotationsImpl result = null;
-    for (AnnotationsImpl annots : getAnnotationsList()) {
+  public Annotations getAnnotationsList(final String target) {
+    Annotations result = null;
+    for (Annotations annots : getAnnotationsList()) {
       if (target.equals(annots.getTarget())) {
         result = annots;
       }
@@ -63,27 +71,27 @@ public class SchemaImpl extends AbstractSchema implements Schema {
     return result;
   }
 
-  public List<AssociationImpl> getAssociations() {
+  public List<Association> getAssociations() {
     return associations;
   }
 
-  public List<UsingImpl> getUsings() {
+  public List<Using> getUsings() {
     return usings;
   }
 
-  public List<ValueTermImpl> getValueTerms() {
+  public List<ValueTerm> getValueTerms() {
     return valueTerms;
   }
 
   @Override
-  public List<EntityContainerImpl> getEntityContainers() {
+  public List<EntityContainer> getEntityContainers() {
     return entityContainers;
   }
 
   @Override
-  public EntityContainerImpl getDefaultEntityContainer() {
-    EntityContainerImpl result = null;
-    for (EntityContainerImpl container : getEntityContainers()) {
+  public EntityContainer getDefaultEntityContainer() {
+    EntityContainer result = null;
+    for (EntityContainer container : getEntityContainers()) {
       if (container.isDefaultEntityContainer()) {
         result = container;
       }
@@ -92,7 +100,7 @@ public class SchemaImpl extends AbstractSchema implements Schema {
   }
 
   @Override
-  public EntityContainerImpl getEntityContainer(final String name) {
+  public EntityContainer getEntityContainer(final String name) {
     return getOneByName(name, getEntityContainers());
   }
 
@@ -102,7 +110,7 @@ public class SchemaImpl extends AbstractSchema implements Schema {
   }
 
   @Override
-  public List<EnumTypeImpl> getEnumTypes() {
+  public List<EnumType> getEnumTypes() {
     return enumTypes;
   }
 
@@ -112,7 +120,7 @@ public class SchemaImpl extends AbstractSchema implements Schema {
   }
 
   @Override
-  public List<ComplexTypeImpl> getComplexTypes() {
+  public List<ComplexType> getComplexTypes() {
     return complexTypes;
   }
 
@@ -122,7 +130,7 @@ public class SchemaImpl extends AbstractSchema implements Schema {
   }
 
   @Override
-  public List<EntityTypeImpl> getEntityTypes() {
+  public List<EntityType> getEntityTypes() {
     return entityTypes;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java
index acfc7ce..e709d84 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.xml.v3;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.PropertyValue;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.TypeAnnotation;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
@@ -33,14 +34,13 @@ public class TypeAnnotationImpl extends AbstractEdmItem implements TypeAnnotatio
 
   private String qualifier;
 
-  private List<PropertyValueImpl> propertyValues = new ArrayList<PropertyValueImpl>();
+  private List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
 
   @Override
   public String getTerm() {
     return term;
   }
 
-  @Override
   public void setTerm(final String term) {
     this.term = term;
   }
@@ -50,13 +50,12 @@ public class TypeAnnotationImpl extends AbstractEdmItem implements TypeAnnotatio
     return qualifier;
   }
 
-  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }
 
   @Override
-  public List<PropertyValueImpl> getPropertyValues() {
+  public List<PropertyValue> getPropertyValues() {
     return propertyValues;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
index 0c77371..0d938d7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
@@ -37,7 +37,6 @@ public class UsingImpl extends AbstractEdmItem implements Using {
     return namespace;
   }
 
-  @Override
   public void setNamespace(final String namespace) {
     this.namespace = namespace;
   }
@@ -47,7 +46,6 @@ public class UsingImpl extends AbstractEdmItem implements Using {
     return alias;
   }
 
-  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
index 20d31f5..fde4380 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
@@ -61,7 +61,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return term;
   }
 
-  @Override
   public void setTerm(final String term) {
     this.term = term;
   }
@@ -71,7 +70,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return qualifier;
   }
 
-  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }
@@ -81,7 +79,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return path;
   }
 
-  @Override
   public void setPath(final String path) {
     this.path = path;
   }
@@ -91,7 +88,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return string;
   }
 
-  @Override
   public void setString(final String string) {
     this.string = string;
   }
@@ -101,7 +97,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return _int;
   }
 
-  @Override
   public void setInt(final BigInteger _int) {
     this._int = _int;
   }
@@ -111,7 +106,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return _float;
   }
 
-  @Override
   public void setFloat(final Double _float) {
     this._float = _float;
   }
@@ -121,7 +115,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return decimal;
   }
 
-  @Override
   public void setDecimal(final BigDecimal decimal) {
     this.decimal = decimal;
   }
@@ -131,7 +124,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     return bool;
   }
 
-  @Override
   public void setBool(final Boolean bool) {
     this.bool = bool;
   }
@@ -141,7 +133,6 @@ public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotat
     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/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
index c13a29f..114465b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
@@ -37,7 +37,6 @@ public class ValueTermImpl extends AbstractEdmItem implements ValueTerm {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -47,7 +46,6 @@ public class ValueTermImpl extends AbstractEdmItem implements ValueTerm {
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
index b5399ce..f2d6095 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
-import java.util.List;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractXMLMetadata;
 
 public class XMLMetadataImpl extends AbstractXMLMetadata {
@@ -29,20 +28,4 @@ public class XMLMetadataImpl extends AbstractXMLMetadata {
     super(edmx);
   }
 
-  @Override
-  public SchemaImpl getSchema(final int index) {
-    return (SchemaImpl) super.getSchema(index);
-  }
-
-  @Override
-  public SchemaImpl getSchema(final String key) {
-    return (SchemaImpl) super.getSchema(key);
-  }
-
-  @Override
-  @SuppressWarnings("unchecked")
-  public List<SchemaImpl> getSchemas() {
-    return (List<SchemaImpl>) super.getSchemas();
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
index 39e87b8..accae2e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
@@ -37,7 +37,6 @@ public abstract class AbstractAnnotatedEdmItem extends AbstractEdmItem implement
   }
 
   @JsonIgnore
-  @Override
   public void setAnnotation(final Annotation annotation) {
     this.annotation = (AnnotationImpl) annotation;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
index 93a9228..a1c3d16 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
@@ -21,8 +21,8 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Action;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Parameter;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.ReturnType;
 
 @JsonDeserialize(using = ActionDeserializer.class)
@@ -36,16 +36,15 @@ public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
 
   private String entitySetPath;
 
-  private final List<CommonParameter> parameters = new ArrayList<CommonParameter>();
+  private final List<Parameter> parameters = new ArrayList<Parameter>();
 
-  private ReturnTypeImpl returnType;
+  private ReturnType returnType;
 
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -55,7 +54,6 @@ public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
     return bound;
   }
 
-  @Override
   public void setBound(final boolean bound) {
     this.bound = bound;
   }
@@ -65,29 +63,27 @@ public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
     return entitySetPath;
   }
 
-  @Override
   public void setEntitySetPath(final String entitySetPath) {
     this.entitySetPath = entitySetPath;
   }
 
   @Override
-  public CommonParameter getParameter(final String name) {
+  public Parameter getParameter(final String name) {
     return getOneByName(name, getParameters());
   }
 
   @Override
-  public List<CommonParameter> getParameters() {
+  public List<Parameter> getParameters() {
     return parameters;
   }
 
   @Override
-  public ReturnTypeImpl getReturnType() {
+  public ReturnType getReturnType() {
     return returnType;
   }
 
-  @Override
   public void setReturnType(final ReturnType returnType) {
-    this.returnType = (ReturnTypeImpl) returnType;
+    this.returnType = returnType;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
index 63284ac..fca7ed7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
@@ -39,7 +39,6 @@ public class ActionImportImpl extends AbstractAnnotatedEdmItem implements Action
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -49,7 +48,6 @@ public class ActionImportImpl extends AbstractAnnotatedEdmItem implements Action
     return action;
   }
 
-  @Override
   public void setAction(final String action) {
     this.action = action;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
index d21f846..1e1ae0c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
@@ -23,8 +23,6 @@ import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.DynExprConstructImpl;
 
 @JsonDeserialize(using = AnnotationDeserializer.class)
 public class AnnotationImpl extends AbstractEdmItem implements Annotation {
@@ -35,16 +33,15 @@ public class AnnotationImpl extends AbstractEdmItem implements Annotation {
 
   private String qualifier;
 
-  private ConstExprConstructImpl constExpr;
+  private ConstExprConstruct constExpr;
 
-  private DynExprConstructImpl dynExpr;
+  private DynExprConstruct dynExpr;
 
   @Override
   public String getTerm() {
     return term;
   }
 
-  @Override
   public void setTerm(final String term) {
     this.term = term;
   }
@@ -54,29 +51,26 @@ public class AnnotationImpl extends AbstractEdmItem implements Annotation {
     return qualifier;
   }
 
-  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }
 
   @Override
-  public ConstExprConstructImpl getConstExpr() {
+  public ConstExprConstruct getConstExpr() {
     return constExpr;
   }
 
-  @Override
   public void setConstExpr(final ConstExprConstruct constExpr) {
-    this.constExpr = (ConstExprConstructImpl) constExpr;
+    this.constExpr = constExpr;
   }
 
   @Override
-  public DynExprConstructImpl getDynExpr() {
+  public DynExprConstruct getDynExpr() {
     return dynExpr;
   }
 
-  @Override
   public void setDynExpr(final DynExprConstruct dynExpr) {
-    this.dynExpr = (DynExprConstructImpl) dynExpr;
+    this.dynExpr = dynExpr;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
index 4d4812b..bc3fe92 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
@@ -12,7 +12,7 @@
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or >ied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -22,6 +22,8 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Property;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractComplexType;
 
 public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
@@ -34,18 +36,17 @@ public class ComplexTypeImpl extends AbstractComplexType implements ComplexType
 
   private boolean openType = false;
 
-  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+  private final List<Property> properties = new ArrayList<Property>();
 
-  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+  private final List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
   public boolean isAbstractEntityType() {
     return abstractEntityType;
   }
 
-  @Override
   public void setAbstractEntityType(final boolean abstractEntityType) {
     this.abstractEntityType = abstractEntityType;
   }
@@ -55,7 +56,6 @@ public class ComplexTypeImpl extends AbstractComplexType implements ComplexType
     return baseType;
   }
 
-  @Override
   public void setBaseType(final String baseType) {
     this.baseType = baseType;
   }
@@ -65,39 +65,37 @@ public class ComplexTypeImpl extends AbstractComplexType implements ComplexType
     return openType;
   }
 
-  @Override
   public void setOpenType(final boolean openType) {
     this.openType = openType;
   }
 
   @Override
-  public PropertyImpl getProperty(final String name) {
-    return (PropertyImpl) super.getProperty(name);
+  public Property getProperty(final String name) {
+    return (Property) super.getProperty(name);
   }
 
   @Override
-  public List<PropertyImpl> getProperties() {
+  public List<Property> getProperties() {
     return properties;
   }
 
   @Override
-  public NavigationPropertyImpl getNavigationProperty(String name) {
-    return (NavigationPropertyImpl) super.getNavigationProperty(name);
+  public NavigationProperty getNavigationProperty(final String name) {
+    return (NavigationProperty) super.getNavigationProperty(name);
   }
 
   @Override
-  public List<NavigationPropertyImpl> getNavigationProperties() {
+  public List<NavigationProperty> getNavigationProperties() {
     return navigationProperties;
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
index 9a62677..a9b0589 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
@@ -20,16 +20,17 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Schema;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractDataServices;
 
 public class DataServicesImpl extends AbstractDataServices {
 
   private static final long serialVersionUID = -7954360771258897632L;
 
-  private final List<SchemaImpl> schemas = new ArrayList<SchemaImpl>();
+  private final List<Schema> schemas = new ArrayList<Schema>();
 
   @Override
-  public List<SchemaImpl> getSchemas() {
+  public List<Schema> getSchemas() {
     return schemas;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
index f23f05f..bd216f9 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
@@ -21,13 +21,14 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Edmx;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Reference;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmx;
 
 public class EdmxImpl extends AbstractEdmx implements Edmx {
 
   private static final long serialVersionUID = -8031883176876401375L;
 
-  private final List<ReferenceImpl> references = new ArrayList<ReferenceImpl>();
+  private final List<Reference> references = new ArrayList<Reference>();
 
   @Override
   public DataServicesImpl getDataServices() {
@@ -35,7 +36,7 @@ public class EdmxImpl extends AbstractEdmx implements Edmx {
   }
 
   @Override
-  public List<ReferenceImpl> getReferences() {
+  public List<Reference> getReferences() {
     return references;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
index 93a04b9..8e11425 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
@@ -21,23 +21,27 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityContainer;
 
 public class EntityContainerImpl extends AbstractEntityContainer implements AnnotatedEdmItem, EntityContainer {
 
   private static final long serialVersionUID = 2526002525927260320L;
 
-  private final List<EntitySetImpl> entitySets = new ArrayList<EntitySetImpl>();
+  private final List<EntitySet> entitySets = new ArrayList<EntitySet>();
 
-  private final List<SingletonImpl> singletons = new ArrayList<SingletonImpl>();
+  private final List<Singleton> singletons = new ArrayList<Singleton>();
 
-  private final List<ActionImportImpl> actionImports = new ArrayList<ActionImportImpl>();
+  private final List<ActionImport> actionImports = new ArrayList<ActionImport>();
 
-  private final List<FunctionImportImpl> functionImports = new ArrayList<FunctionImportImpl>();
+  private final List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
   public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
@@ -50,34 +54,34 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
   }
 
   @Override
-  public EntitySetImpl getEntitySet(final String name) {
-    return (EntitySetImpl) super.getEntitySet(name);
+  public EntitySet getEntitySet(final String name) {
+    return (EntitySet) super.getEntitySet(name);
   }
 
   @Override
-  public List<EntitySetImpl> getEntitySets() {
+  public List<EntitySet> getEntitySets() {
     return entitySets;
   }
 
   @Override
-  public List<SingletonImpl> getSingletons() {
+  public List<Singleton> getSingletons() {
     return singletons;
   }
 
   @Override
-  public SingletonImpl getSingleton(final String name) {
+  public Singleton getSingleton(final String name) {
     return getOneByName(name, getSingletons());
   }
 
   @Override
-  public FunctionImportImpl getFunctionImport(final String name) {
-    return (FunctionImportImpl) super.getFunctionImport(name);
+  public FunctionImport getFunctionImport(final String name) {
+    return (FunctionImport) super.getFunctionImport(name);
   }
 
   @Override
   @SuppressWarnings("unchecked")
-  public List<FunctionImportImpl> getFunctionImports(final String name) {
-    return (List<FunctionImportImpl>) super.getFunctionImports(name);
+  public List<FunctionImport> getFunctionImports(final String name) {
+    return (List<FunctionImport>) super.getFunctionImports(name);
   }
 
   /**
@@ -87,7 +91,7 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
    * @return action import.
    */
   @Override
-  public ActionImportImpl getActionImport(final String name) {
+  public ActionImport getActionImport(final String name) {
     return getOneByName(name, getActionImports());
   }
 
@@ -98,28 +102,27 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
    * @return action imports.
    */
   @Override
-  public List<ActionImportImpl> getActionImports(final String name) {
+  public List<ActionImport> getActionImports(final String name) {
     return getAllByName(name, getActionImports());
   }
 
   @Override
-  public List<ActionImportImpl> getActionImports() {
+  public List<ActionImport> getActionImports() {
     return actionImports;
   }
 
   @Override
-  public List<FunctionImportImpl> getFunctionImports() {
+  public List<FunctionImport> getFunctionImports() {
     return functionImports;
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
index 8160193..723faee 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
@@ -31,7 +31,7 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
 
   private boolean includeInServiceDocument = true;
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>();
 
@@ -40,7 +40,6 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
     return includeInServiceDocument;
   }
 
-  @Override
   public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
     this.includeInServiceDocument = includeInServiceDocument;
   }
@@ -51,13 +50,12 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
index d82b1a2..8ca73aa 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
@@ -22,46 +22,47 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Property;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityType;
 
 public class EntityTypeImpl extends AbstractEntityType implements EntityType {
 
   private static final long serialVersionUID = 8727765036150269547L;
 
-  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+  private final List<Property> properties = new ArrayList<Property>();
 
-  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+  private final List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
-  public PropertyImpl getProperty(final String name) {
-    return (PropertyImpl) super.getProperty(name);
+  public Property getProperty(final String name) {
+    return (Property) super.getProperty(name);
   }
 
   @Override
-  public List<PropertyImpl> getProperties() {
+  public List<Property> getProperties() {
     return properties;
   }
 
   @Override
-  public NavigationPropertyImpl getNavigationProperty(final String name) {
-    return (NavigationPropertyImpl) super.getNavigationProperty(name);
+  public NavigationProperty getNavigationProperty(final String name) {
+    return (NavigationProperty) super.getNavigationProperty(name);
   }
 
   @Override
-  public List<NavigationPropertyImpl> getNavigationProperties() {
+  public List<NavigationProperty> getNavigationProperties() {
     return navigationProperties;
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
index b7867dc..b225902 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
@@ -19,8 +19,6 @@
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
 import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
-import java.util.ArrayList;
-import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEnumType;
 
@@ -28,33 +26,15 @@ public class EnumTypeImpl extends AbstractEnumType implements AnnotatedEdmItem {
 
   private static final long serialVersionUID = -3329664331877556957L;
 
-  private AnnotationImpl annotation;
-
-  private final List<MemberImpl> members = new ArrayList<MemberImpl>();
-
-  @Override
-  public List<MemberImpl> getMembers() {
-    return members;
-  }
+  private Annotation annotation;
 
   @Override
-  public MemberImpl getMember(final String name) {
-    return (MemberImpl) super.getMember(name);
-  }
-
-  @Override
-  public MemberImpl getMember(final Integer value) {
-    return (MemberImpl) super.getMember(value);
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
index f355eba..17ae459 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
@@ -33,7 +33,6 @@ public class FunctionImpl extends ActionImpl implements Function {
     return composable;
   }
 
-  @Override
   public void setComposable(final boolean composable) {
     this.composable = composable;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
index f933664..da07545 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
@@ -40,14 +40,13 @@ public class FunctionImportImpl implements FunctionImport {
   private boolean includeInServiceDocument = false;
 
   @JsonProperty(value = "Annotation")
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
   public String getName() {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -57,7 +56,6 @@ public class FunctionImportImpl implements FunctionImport {
     return function;
   }
 
-  @Override
   public void setFunction(final String function) {
     this.function = function;
   }
@@ -77,20 +75,18 @@ public class FunctionImportImpl implements FunctionImport {
     return includeInServiceDocument;
   }
 
-  @Override
   public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
     this.includeInServiceDocument = includeInServiceDocument;
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
   @JsonIgnore
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
index 1dd0e30..d051986 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
@@ -40,7 +40,6 @@ public class IncludeAnnotationsImpl extends AbstractEdmItem implements IncludeAn
     return termNamespace;
   }
 
-  @Override
   public void setTermNamespace(final String termNamespace) {
     this.termNamespace = termNamespace;
   }
@@ -50,7 +49,6 @@ public class IncludeAnnotationsImpl extends AbstractEdmItem implements IncludeAn
     return qualifier;
   }
 
-  @Override
   public void setQualifier(final String qualifier) {
     this.qualifier = qualifier;
   }
@@ -60,7 +58,6 @@ public class IncludeAnnotationsImpl extends AbstractEdmItem implements IncludeAn
     return targeyNamespace;
   }
 
-  @Override
   public void setTargeyNamespace(final String targeyNamespace) {
     this.targeyNamespace = targeyNamespace;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
index 487edc6..6c7a385 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
@@ -37,7 +37,6 @@ public class IncludeImpl extends AbstractEdmItem implements Include {
     return namespace;
   }
 
-  @Override
   public void setNamespace(final String namespace) {
     this.namespace = namespace;
   }
@@ -47,7 +46,6 @@ public class IncludeImpl extends AbstractEdmItem implements Include {
     return alias;
   }
 
-  @Override
   public void setAlias(final String alias) {
     this.alias = alias;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
index baed5fd..dfcb6cf 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
@@ -29,17 +29,16 @@ public class MemberImpl extends AbstractMember implements AnnotatedEdmItem {
   private static final long serialVersionUID = -344920557183058824L;
 
   @JsonProperty("Annotation")
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
   @JsonIgnore
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
index 536dee3..b32378a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
@@ -37,7 +37,6 @@ public class NavigationPropertyBindingImpl extends AbstractEdmItem implements Na
     return path;
   }
 
-  @Override
   public void setPath(final String path) {
     this.path = path;
   }
@@ -47,7 +46,6 @@ public class NavigationPropertyBindingImpl extends AbstractEdmItem implements Na
     return target;
   }
 
-  @Override
   public void setTarget(final String target) {
     this.target = target;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
index d600d82..844d6de 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
@@ -18,13 +18,13 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
-import org.apache.olingo.odata4.client.core.edm.xml.OnDeleteImpl;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationProperty;
 import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ReferentialConstraint;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractNavigationProperty;
 
 @JsonDeserialize(using = NavigationPropertyDeserializer.class)
@@ -40,18 +40,17 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
 
   private boolean containsTarget = false;
 
-  private final List<ReferentialConstraintImpl> referentialConstraints = new ArrayList<ReferentialConstraintImpl>();
+  private final List<ReferentialConstraint> referentialConstraints = new ArrayList<ReferentialConstraint>();
 
-  private OnDeleteImpl onDelete;
+  private OnDelete onDelete;
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
   public String getType() {
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }
@@ -61,7 +60,6 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     return nullable;
   }
 
-  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
@@ -71,7 +69,6 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     return partner;
   }
 
-  @Override
   public void setPartner(final String partner) {
     this.partner = partner;
   }
@@ -81,34 +78,31 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     return containsTarget;
   }
 
-  @Override
   public void setContainsTarget(final boolean containsTarget) {
     this.containsTarget = containsTarget;
   }
 
   @Override
-  public List<ReferentialConstraintImpl> getReferentialConstraints() {
+  public List<ReferentialConstraint> getReferentialConstraints() {
     return referentialConstraints;
   }
 
   @Override
-  public OnDeleteImpl getOnDelete() {
+  public OnDelete getOnDelete() {
     return onDelete;
   }
 
-  @Override
   public void setOnDelete(final OnDelete onDelete) {
-    this.onDelete = (OnDeleteImpl) onDelete;
+    this.onDelete = onDelete;
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
index ed731c3..bb6416a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
@@ -32,7 +32,6 @@ public class ParameterImpl extends AbstractParameter implements Parameter {
     return srid;
   }
 
-  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
index 0655061..f71f68f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
@@ -27,16 +27,15 @@ public class PropertyImpl extends AbstractProperty implements Property {
 
   private static final long serialVersionUID = -5541908235094985412L;
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
   @JsonIgnore
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
+    this.annotation = annotation;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
index e187256..3437ea2 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
@@ -23,6 +23,8 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Include;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.IncludeAnnotations;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Reference;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
@@ -33,9 +35,9 @@ public class ReferenceImpl extends AbstractEdmItem implements Reference {
 
   private URI uri;
 
-  private final List<IncludeImpl> includes = new ArrayList<IncludeImpl>();
+  private final List<Include> includes = new ArrayList<Include>();
 
-  private final List<IncludeAnnotationsImpl> includeAnnotations = new ArrayList<IncludeAnnotationsImpl>();
+  private final List<IncludeAnnotations> includeAnnotations = new ArrayList<IncludeAnnotations>();
 
   private final List<Annotation> annotations = new ArrayList<Annotation>();
 
@@ -44,18 +46,17 @@ public class ReferenceImpl extends AbstractEdmItem implements Reference {
     return uri;
   }
 
-  @Override
   public void setUri(final URI uri) {
     this.uri = uri;
   }
 
   @Override
-  public List<IncludeImpl> getIncludes() {
+  public List<Include> getIncludes() {
     return includes;
   }
 
   @Override
-  public List<IncludeAnnotationsImpl> getIncludeAnnotations() {
+  public List<IncludeAnnotations> getIncludeAnnotations() {
     return includeAnnotations;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
index 56dd68f..1b1a8e1 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
@@ -36,7 +36,6 @@ public class ReferentialConstraintImpl extends AbstractAnnotatedEdmItem implemen
     return property;
   }
 
-  @Override
   public void setProperty(final String property) {
     this.property = property;
   }
@@ -46,7 +45,6 @@ public class ReferentialConstraintImpl extends AbstractAnnotatedEdmItem implemen
     return referencedProperty;
   }
 
-  @Override
   public void setReferencedProperty(final String referencedProperty) {
     this.referencedProperty = referencedProperty;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
index 02eb54a..2157038 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
@@ -44,7 +44,6 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }
@@ -54,7 +53,6 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
     return nullable;
   }
 
-  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
@@ -64,7 +62,6 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
     return maxLength;
   }
 
-  @Override
   public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
@@ -74,7 +71,6 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
     return precision;
   }
 
-  @Override
   public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
@@ -84,7 +80,6 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
     return scale;
   }
 
-  @Override
   public void setScale(final Integer scale) {
     this.scale = scale;
   }
@@ -94,7 +89,6 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
     return srid;
   }
 
-  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
index 3987d3c..fe67a85 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
@@ -18,57 +18,67 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
-import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Action;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotations;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Function;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Term;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractSchema;
 
-public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmItem {
+public class SchemaImpl extends AbstractSchema implements Schema {
 
   private static final long serialVersionUID = 4453992249818796144L;
 
-  private final List<ActionImpl> actions = new ArrayList<ActionImpl>();
+  private final List<Action> actions = new ArrayList<Action>();
 
-  private final List<AnnotationsImpl> annotationsList = new ArrayList<AnnotationsImpl>();
+  private final List<Annotations> annotationsList = new ArrayList<Annotations>();
 
-  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
+  private final List<Annotation> annotations = new ArrayList<Annotation>();
 
-  private final List<ComplexTypeImpl> complexTypes = new ArrayList<ComplexTypeImpl>();
+  private final List<ComplexType> complexTypes = new ArrayList<ComplexType>();
 
-  private EntityContainerImpl entityContainer;
+  private EntityContainer entityContainer;
 
-  private final List<EnumTypeImpl> enumTypes = new ArrayList<EnumTypeImpl>();
+  private final List<EnumType> enumTypes = new ArrayList<EnumType>();
 
-  private final List<EntityTypeImpl> entityTypes = new ArrayList<EntityTypeImpl>();
+  private final List<EntityType> entityTypes = new ArrayList<EntityType>();
 
-  private final List<FunctionImpl> functions = new ArrayList<FunctionImpl>();
+  private final List<Function> functions = new ArrayList<Function>();
 
-  private final List<TermImpl> terms = new ArrayList<TermImpl>();
+  private final List<Term> terms = new ArrayList<Term>();
 
-  private final List<TypeDefinitionImpl> typeDefinitions = new ArrayList<TypeDefinitionImpl>();
+  private final List<TypeDefinition> typeDefinitions = new ArrayList<TypeDefinition>();
 
-  private AnnotationImpl annotation;
+  private Annotation annotation;
 
-  public List<ActionImpl> getActions() {
+  @Override
+  public List<Action> getActions() {
     return actions;
   }
 
-  public List<ActionImpl> getActions(final String name) {
+  @Override
+  public List<Action> getActions(final String name) {
     return getAllByName(name, getActions());
   }
 
   @Override
-  public List<AnnotationsImpl> getAnnotationsList() {
+  public List<Annotations> getAnnotationsList() {
     return annotationsList;
   }
 
   @Override
-  public AnnotationsImpl getAnnotationsList(final String target) {
-    AnnotationsImpl result = null;
-    for (AnnotationsImpl annots : getAnnotationsList()) {
+  public Annotations getAnnotationsList(final String target) {
+    Annotations result = null;
+    for (Annotations annots : getAnnotationsList()) {
       if (target.equals(annots.getTarget())) {
         result = annots;
       }
@@ -76,31 +86,38 @@ public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmIt
     return result;
   }
 
-  public List<AnnotationImpl> getAnnotations() {
+  @Override
+  public List<Annotation> getAnnotations() {
     return annotations;
   }
 
-  public List<FunctionImpl> getFunctions() {
+  @Override
+  public List<Function> getFunctions() {
     return functions;
   }
 
-  public List<FunctionImpl> getFunctions(final String name) {
+  @Override
+  public List<Function> getFunctions(final String name) {
     return getAllByName(name, getFunctions());
   }
 
-  public List<TermImpl> getTerms() {
+  @Override
+  public List<Term> getTerms() {
     return terms;
   }
 
-  public TypeDefinitionImpl getTypeDefinition(final String name) {
+  @Override
+  public TypeDefinition getTypeDefinition(final String name) {
     return getOneByName(name, getTypeDefinitions());
   }
 
-  public List<TypeDefinitionImpl> getTypeDefinitions() {
+  @Override
+  public List<TypeDefinition> getTypeDefinitions() {
     return typeDefinitions;
   }
 
-  public EntityContainerImpl getEntityContainer() {
+  @Override
+  public EntityContainer getEntityContainer() {
     return entityContainer;
   }
 
@@ -109,61 +126,55 @@ public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmIt
   }
 
   @Override
-  public List<EntityContainerImpl> getEntityContainers() {
+  public List<EntityContainer> getEntityContainers() {
     return entityContainer == null
-            ? Collections.<EntityContainerImpl>emptyList() : Collections.singletonList(entityContainer);
+            ? Collections.<EntityContainer>emptyList() : Collections.singletonList(entityContainer);
   }
 
   @Override
-  public EntityContainerImpl getDefaultEntityContainer() {
+  public EntityContainer getDefaultEntityContainer() {
     return entityContainer;
   }
 
   @Override
-  public EntityContainerImpl getEntityContainer(final String name) {
+  public EntityContainer getEntityContainer(final String name) {
     if (entityContainer != null && name.equals(entityContainer.getName())) {
       return entityContainer;
     }
-    throw new IllegalArgumentException("No EntityContainer found with name " + name);
+    return null;
   }
 
   @Override
-  public AnnotationImpl getAnnotation() {
+  public Annotation getAnnotation() {
     return annotation;
   }
 
-  @Override
   public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-  @Override
-  public EnumTypeImpl getEnumType(final String name) {
-    return (EnumTypeImpl) super.getEnumType(name);
+    this.annotation = annotation;
   }
 
   @Override
-  public List<EnumTypeImpl> getEnumTypes() {
+  public List<EnumType> getEnumTypes() {
     return enumTypes;
   }
 
   @Override
-  public ComplexTypeImpl getComplexType(final String name) {
-    return (ComplexTypeImpl) super.getComplexType(name);
+  public ComplexType getComplexType(final String name) {
+    return (ComplexType) super.getComplexType(name);
   }
 
   @Override
-  public List<ComplexTypeImpl> getComplexTypes() {
+  public List<ComplexType> getComplexTypes() {
     return complexTypes;
   }
 
   @Override
-  public EntityTypeImpl getEntityType(final String name) {
-    return (EntityTypeImpl) super.getEntityType(name);
+  public EntityType getEntityType(final String name) {
+    return (EntityType) super.getEntityType(name);
   }
 
   @Override
-  public List<EntityTypeImpl> getEntityTypes() {
+  public List<EntityType> getEntityTypes() {
     return entityTypes;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
index 21f2fb6..235b16d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
@@ -40,7 +40,6 @@ public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -50,7 +49,6 @@ public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton
     return entityType;
   }
 
-  @Override
   public void setEntityType(final String entityType) {
     this.entityType = entityType;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
index c281b11..9de5318 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
@@ -51,11 +51,12 @@ public class TermDeserializer extends AbstractEdmDeserializer<TermImpl> {
         } else if ("Nullable".equals(jp.getCurrentName())) {
           term.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("MaxLength".equals(jp.getCurrentName())) {
-          term.setMaxLength(jp.nextTextValue());
+          final String maxLenght = jp.nextTextValue();
+          term.setMaxLength(maxLenght.equalsIgnoreCase("max") ? Integer.MAX_VALUE : Integer.valueOf(maxLenght));
         } else if ("Precision".equals(jp.getCurrentName())) {
-          term.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
+          term.setPrecision(Integer.valueOf(jp.nextTextValue()));
         } else if ("Scale".equals(jp.getCurrentName())) {
-          term.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
+          term.setScale(Integer.valueOf(jp.nextTextValue()));
         } else if ("SRID".equals(jp.getCurrentName())) {
           term.setSrid(jp.nextTextValue());
         } else if ("AppliesTo".equals(jp.getCurrentName())) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/1264aecd/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
index bcce72a..5e7097d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
@@ -19,7 +19,6 @@
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.CSDLElement;
@@ -40,11 +39,11 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
 
   private boolean nullable = true;
 
-  private String maxLength;
+  private Integer maxLength;
 
-  private BigInteger precision;
+  private Integer precision;
 
-  private BigInteger scale;
+  private Integer scale;
 
   private String srid;
 
@@ -55,7 +54,6 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
     return name;
   }
 
-  @Override
   public void setName(final String name) {
     this.name = name;
   }
@@ -65,7 +63,6 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
     return type;
   }
 
-  @Override
   public void setType(final String type) {
     this.type = type;
   }
@@ -75,7 +72,6 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
     return baseTerm;
   }
 
-  @Override
   public void setBaseTerm(final String baseTerm) {
     this.baseTerm = baseTerm;
   }
@@ -85,7 +81,6 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
     return defaultValue;
   }
 
-  @Override
   public void setDefaultValue(final String defaultValue) {
     this.defaultValue = defaultValue;
   }
@@ -95,38 +90,34 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
     return nullable;
   }
 
-  @Override
   public void setNullable(final boolean nullable) {
     this.nullable = nullable;
   }
 
   @Override
-  public String getMaxLength() {
+  public Integer getMaxLength() {
     return maxLength;
   }
 
-  @Override
-  public void setMaxLength(final String maxLength) {
+  public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
 
   @Override
-  public BigInteger getPrecision() {
+  public Integer getPrecision() {
     return precision;
   }
 
-  @Override
-  public void setPrecision(final BigInteger precision) {
+  public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
 
   @Override
-  public BigInteger getScale() {
+  public Integer getScale() {
     return scale;
   }
 
-  @Override
-  public void setScale(final BigInteger scale) {
+  public void setScale(final Integer scale) {
     this.scale = scale;
   }
 
@@ -135,7 +126,6 @@ public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
     return srid;
   }
 
-  @Override
   public void setSrid(final String srid) {
     this.srid = srid;
   }