olingo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ilgro...@apache.org
Subject [4/7] [OLINGO-169] client-api interface refinements + proxy of Edm interfaces for V3 functionImport
Date Fri, 07 Mar 2014 09:04:40 GMT
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;
   }
 


Mime
View raw message