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

[6/6] olingo-odata4 git commit: [OLINGO-575] Merge EdmImpl classes

[OLINGO-575] Merge EdmImpl classes


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

Branch: refs/heads/master
Commit: 5cef4faeb6766148dc886af87650c8715985807d
Parents: 36219d3
Author: Christian Amend <ch...@apache.org>
Authored: Wed Mar 18 13:55:50 2015 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Mar 18 13:55:50 2015 +0100

----------------------------------------------------------------------
 .../olingo/ext/proxy/AbstractService.java       |  48 +--
 .../proxy/api/annotations/EntityContainer.java  |   1 -
 .../commons/AbstractInvocationHandler.java      |  18 +-
 .../EntityContainerInvocationHandler.java       |   7 -
 .../olingo/ext/proxy/utils/CoreUtils.java       |  28 +-
 .../src/main/resources/container.vm             |   3 +-
 .../proxy/v4/demo/odatademo/DemoService.java    |   3 +-
 .../opentypesservicev4/DefaultContainer.java    |   3 +-
 .../odatawcfservice/InMemoryEntities.java       |   3 +-
 .../client/core/edm/ClientEdmProvider.java      | 211 +++++++++++
 .../olingo/client/core/edm/EdmActionImpl.java   |  36 --
 .../client/core/edm/EdmActionImportImpl.java    |  77 ----
 .../core/edm/EdmAnnotationHelperImpl.java       |  67 ----
 .../client/core/edm/EdmAnnotationImpl.java      | 244 ------------
 .../client/core/edm/EdmAnnotationsImpl.java     | 147 --------
 .../client/core/edm/EdmBindingTargetImpl.java   |  75 ----
 .../olingo/client/core/edm/EdmClientImpl.java   | 357 ------------------
 .../client/core/edm/EdmComplexTypeImpl.java     |  93 -----
 .../client/core/edm/EdmEntityContainerImpl.java | 173 ---------
 .../client/core/edm/EdmEntitySetImpl.java       |  48 ---
 .../client/core/edm/EdmEntityTypeImpl.java      | 113 ------
 .../olingo/client/core/edm/EdmEnumTypeImpl.java |  98 -----
 .../olingo/client/core/edm/EdmFunctionImpl.java |  44 ---
 .../client/core/edm/EdmFunctionImportImpl.java  |  89 -----
 .../client/core/edm/EdmKeyPropertyRefImpl.java  |  43 ---
 .../olingo/client/core/edm/EdmMemberImpl.java   |  54 ---
 .../core/edm/EdmNavigationPropertyImpl.java     | 123 ------
 .../client/core/edm/EdmOperationImpl.java       | 113 ------
 .../client/core/edm/EdmOperationImportImpl.java |  48 ---
 .../client/core/edm/EdmParameterImpl.java       |  96 -----
 .../olingo/client/core/edm/EdmPropertyImpl.java | 121 ------
 .../core/edm/EdmReferentialConstraintImpl.java  |  49 ---
 .../client/core/edm/EdmReturnTypeImpl.java      |  74 ----
 .../olingo/client/core/edm/EdmSchemaImpl.java   | 237 ------------
 .../client/core/edm/EdmSingletonImpl.java       |  40 --
 .../core/edm/EdmStructuredTypeHelperImpl.java   |  85 -----
 .../olingo/client/core/edm/EdmTermImpl.java     | 170 ---------
 .../client/core/edm/EdmTypeDefinitionImpl.java  |  98 -----
 .../client/core/edm/annotation/EdmCastImpl.java |  80 ----
 .../EdmConstantAnnotationExpressionImpl.java    | 139 -------
 .../client/core/edm/annotation/EdmIsOfImpl.java |  80 ----
 .../core/edm/annotation/EdmRecordImpl.java      |  55 ---
 .../edm/xml/NavigationPropertyDeserializer.java |  26 +-
 .../core/edm/xml/ParameterDeserializer.java     |  10 +-
 .../core/edm/xml/PropertyDeserializer.java      |  10 +-
 .../client/core/edm/xml/PropertyImpl.java       |   4 +-
 .../core/edm/xml/ReturnTypeDeserializer.java    |  10 +-
 .../core/serialization/ODataReaderImpl.java     |   6 +-
 .../olingo/client/core/uri/URIEscapeTest.java   |   2 +-
 .../client/core/uri/v4/FilterFactoryTest.java   |   2 +-
 .../olingo/client/core/v4/MetadataTest.java     |  89 ++---
 .../commons/api/edm/EdmEntityContainer.java     |   9 -
 .../commons/api/edm/provider/EdmProvider.java   |  20 +-
 .../api/edm/provider/TypeDefinition.java        |   5 +-
 .../core/edm/AbstractEdmEntityContainer.java    |   5 -
 .../commons/core/edm/AbstractEdmEnumType.java   |   2 +-
 .../core/edm/annotation/EdmCastImpl.java        |  79 ++++
 .../EdmConstantAnnotationExpressionImpl.java    | 139 +++++++
 .../core/edm/annotation/EdmIsOfImpl.java        |  79 ++++
 .../core/edm/annotation/EdmRecordImpl.java      |  54 +++
 .../core/edm/provider/EdmActionImpl.java        |  36 ++
 .../core/edm/provider/EdmActionImportImpl.java  |  46 +++
 .../edm/provider/EdmAnnotationHelperImpl.java   |  67 ++++
 .../core/edm/provider/EdmAnnotationImpl.java    | 244 ++++++++++++
 .../core/edm/provider/EdmAnnotationsImpl.java   | 143 +++++++
 .../core/edm/provider/EdmBindingTargetImpl.java |  71 ++++
 .../core/edm/provider/EdmComplexTypeImpl.java   |  82 ++++
 .../edm/provider/EdmEntityContainerImpl.java    | 216 +++++++++++
 .../core/edm/provider/EdmEntitySetImpl.java     |  44 +++
 .../core/edm/provider/EdmEntityTypeImpl.java    | 112 ++++++
 .../core/edm/provider/EdmEnumTypeImpl.java      |  87 +++++
 .../core/edm/provider/EdmFunctionImpl.java      |  56 +++
 .../edm/provider/EdmFunctionImportImpl.java     |  63 ++++
 .../edm/provider/EdmKeyPropertyRefImpl.java     |  43 +++
 .../core/edm/provider/EdmMemberImpl.java        |  50 +++
 .../edm/provider/EdmNavigationPropertyImpl.java | 116 ++++++
 .../core/edm/provider/EdmOperationImpl.java     |  99 +++++
 .../edm/provider/EdmOperationImportImpl.java    |  52 +++
 .../core/edm/provider/EdmParameterImpl.java     |  87 +++++
 .../core/edm/provider/EdmPropertyImpl.java      | 119 ++++++
 .../core/edm/provider/EdmProviderImpl.java      | 376 +++++++++++++++++++
 .../provider/EdmReferentialConstraintImpl.java  |  48 +++
 .../core/edm/provider/EdmReturnTypeImpl.java    |  64 ++++
 .../core/edm/provider/EdmSchemaImpl.java        | 194 ++++++++++
 .../core/edm/provider/EdmSingletonImpl.java     |  36 ++
 .../provider/EdmStructuredTypeHelperImpl.java   |  84 +++++
 .../commons/core/edm/provider/EdmTermImpl.java  | 170 +++++++++
 .../edm/provider/EdmTypeDefinitionImpl.java     | 107 ++++++
 .../olingo/server/core/ServiceMetadataImpl.java |   2 +-
 .../server/core/edm/provider/EdmActionImpl.java |  36 --
 .../core/edm/provider/EdmActionImportImpl.java  |  47 ---
 .../core/edm/provider/EdmBindingTargetImpl.java |  55 ---
 .../core/edm/provider/EdmComplexTypeImpl.java   |  78 ----
 .../edm/provider/EdmEntityContainerImpl.java    | 208 ----------
 .../core/edm/provider/EdmEntitySetImpl.java     |  58 ---
 .../core/edm/provider/EdmEntityTypeImpl.java    | 109 ------
 .../core/edm/provider/EdmEnumTypeImpl.java      |  71 ----
 .../core/edm/provider/EdmFunctionImpl.java      |  56 ---
 .../edm/provider/EdmFunctionImportImpl.java     |  70 ----
 .../edm/provider/EdmKeyPropertyRefImpl.java     |  43 ---
 .../server/core/edm/provider/EdmMemberImpl.java |  45 ---
 .../edm/provider/EdmNavigationPropertyImpl.java | 117 ------
 .../core/edm/provider/EdmOperationImpl.java     |  97 -----
 .../edm/provider/EdmOperationImportImpl.java    |  48 ---
 .../core/edm/provider/EdmParameterImpl.java     |  84 -----
 .../core/edm/provider/EdmPropertyImpl.java      | 118 ------
 .../core/edm/provider/EdmProviderImpl.java      | 343 -----------------
 .../provider/EdmReferentialConstraintImpl.java  |  42 ---
 .../core/edm/provider/EdmReturnTypeImpl.java    |  64 ----
 .../server/core/edm/provider/EdmSchemaImpl.java | 168 ---------
 .../core/edm/provider/EdmSingletonImpl.java     |  50 ---
 .../provider/EdmStructuredTypeHelperImpl.java   |  89 -----
 .../edm/provider/EdmTypeDefinitionImpl.java     |  95 -----
 .../core/edm/provider/EdmActionImplTest.java    |   2 +
 .../edm/provider/EdmActionImportImplTest.java   |   2 +
 .../edm/provider/EdmComplexTypeImplTest.java    |   2 +
 .../provider/EdmEntityContainerImplTest.java    |   2 +
 .../core/edm/provider/EdmEntitySetImplTest.java |   3 +
 .../edm/provider/EdmEntityTypeImplTest.java     |   2 +
 .../server/core/edm/provider/EdmEnumTest.java   |   2 +
 .../core/edm/provider/EdmFunctionImplTest.java  |   2 +
 .../edm/provider/EdmFunctionImportImplTest.java |   3 +
 .../edm/provider/EdmKeyPropertyRefImplTest.java |   1 +
 .../core/edm/provider/EdmMappingTest.java       |   2 +
 .../core/edm/provider/EdmMemberImplTest.java    |   5 +-
 .../provider/EdmNavigationPropertyImplTest.java |   2 +
 .../core/edm/provider/EdmParameterImplTest.java |   2 +
 .../core/edm/provider/EdmPropertyImplTest.java  |   2 +
 .../EdmProviderImplOverloadingTest.java         |   1 +
 .../core/edm/provider/EdmProviderImplTest.java  |   1 +
 .../edm/provider/EdmReturnTypeImplTest.java     |   2 +
 .../core/edm/provider/EdmSchemaImplTest.java    |   8 +-
 .../core/edm/provider/EdmSingletonImplTest.java |   3 +
 .../edm/provider/EdmTypeDefinitionImplTest.java |   2 +
 .../core/serializer/json/ComplexTypeHelper.java |   4 +-
 .../serializer/utils/ContextURLBuilderTest.java |   4 +-
 .../xml/MetadataDocumentXmlSerializerTest.java  |   3 +-
 .../olingo/server/core/uri/UriInfoImplTest.java |   2 +-
 .../server/core/uri/UriResourceImplTest.java    |   8 +-
 .../core/uri/antlr/TestFullResourcePath.java    |   2 +-
 .../core/uri/antlr/TestUriParserImpl.java       |   2 +-
 .../core/uri/queryoption/QueryOptionTest.java   |   2 +-
 .../queryoption/expression/ExpressionTest.java  |   2 +-
 .../core/uri/validator/UriValidatorTest.java    |   2 +-
 144 files changed, 3712 insertions(+), 5717 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java
index 7fac96c..fd34aa9 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/AbstractService.java
@@ -1,18 +1,18 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -30,11 +30,12 @@ import org.apache.commons.io.IOUtils;
 import org.apache.olingo.client.api.EdmEnabledODataClient;
 import org.apache.olingo.client.api.edm.xml.XMLMetadata;
 import org.apache.olingo.client.core.ODataClientFactory;
-import org.apache.olingo.client.core.edm.EdmClientImpl;
+import org.apache.olingo.client.core.edm.ClientEdmProvider;
 import org.apache.olingo.commons.api.ODataRuntimeException;
 import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.commons.api.format.ODataFormat;
+import org.apache.olingo.commons.core.edm.provider.EdmProviderImpl;
 import org.apache.olingo.ext.proxy.api.AbstractTerm;
 import org.apache.olingo.ext.proxy.api.PersistenceManager;
 import org.apache.olingo.ext.proxy.commons.EntityContainerInvocationHandler;
@@ -64,7 +65,7 @@ public abstract class AbstractService<C extends EdmEnabledODataClient> {
   private PersistenceManager persistenceManager;
 
   protected AbstractService(final String compressedMetadata, final String metadataETag,
-          final ODataServiceVersion version, final String serviceRoot, final boolean transactional) {
+      final ODataServiceVersion version, final String serviceRoot, final boolean transactional) {
 
     ByteArrayInputStream bais = null;
     GZIPInputStream gzis = null;
@@ -83,21 +84,26 @@ public abstract class AbstractService<C extends EdmEnabledODataClient> {
       IOUtils.closeQuietly(gzis);
       IOUtils.closeQuietly(bais);
     }
-
-    final Edm edm = metadata == null ? null : new EdmClientImpl(metadata.getSchemaByNsOrAlias());
-    //TODO: check runtime exception or not
-    if(version.compareTo(ODataServiceVersion.V40) < 0){
+    final Edm edm;
+    if (metadata != null) {
+      ClientEdmProvider provider = new ClientEdmProvider(metadata.getSchemaByNsOrAlias());
+      edm = new EdmProviderImpl(provider);
+    }else{
+      edm = null;
+    }
+    // TODO: check runtime exception or not
+    if (version.compareTo(ODataServiceVersion.V40) < 0) {
       throw new ODataRuntimeException("Only OData V4 or higher supported.");
     }
-    
-    this.client =  ODataClientFactory.getEdmEnabledClient(serviceRoot, edm, metadataETag);
+
+    this.client = ODataClientFactory.getEdmEnabledClient(serviceRoot, edm, metadataETag);
     this.client.getConfiguration().setDefaultPubFormat(ODataFormat.JSON_FULL_METADATA);
     this.transactional = transactional;
     this.context = new Context();
   }
 
   public abstract Class<?> getEntityTypeClass(String name);
-  
+
   public abstract Class<?> getComplexTypeClass(String name);
 
   public abstract Class<?> getEnumTypeClass(String name);
@@ -121,8 +127,8 @@ public abstract class AbstractService<C extends EdmEnabledODataClient> {
     synchronized (this) {
       if (persistenceManager == null) {
         persistenceManager = transactional
-                ? new TransactionalPersistenceManagerImpl(this)
-                : new NonTransactionalPersistenceManagerImpl(this);
+            ? new TransactionalPersistenceManagerImpl(this)
+            : new NonTransactionalPersistenceManagerImpl(this);
       }
     }
     return persistenceManager;
@@ -139,9 +145,9 @@ public abstract class AbstractService<C extends EdmEnabledODataClient> {
   public <T> T getEntityContainer(final Class<T> reference) throws IllegalStateException, IllegalArgumentException {
     if (!ENTITY_CONTAINERS.containsKey(reference)) {
       final Object entityContainer = Proxy.newProxyInstance(
-              Thread.currentThread().getContextClassLoader(),
-              new Class<?>[] {reference},
-              EntityContainerInvocationHandler.getInstance(reference, this));
+          Thread.currentThread().getContextClassLoader(),
+          new Class<?>[] { reference },
+          EntityContainerInvocationHandler.getInstance(reference, this));
       ENTITY_CONTAINERS.put(reference, entityContainer);
     }
     return reference.cast(ENTITY_CONTAINERS.get(reference));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/annotations/EntityContainer.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/annotations/EntityContainer.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/annotations/EntityContainer.java
index bf89784..1cb320e 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/annotations/EntityContainer.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/api/annotations/EntityContainer.java
@@ -34,5 +34,4 @@ public @interface EntityContainer {
 
   String namespace();
 
-  boolean isDefaultEntityContainer() default false;
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractInvocationHandler.java
index d0d26d3..69ccdc0 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractInvocationHandler.java
@@ -26,7 +26,6 @@ import java.lang.reflect.UndeclaredThrowableException;
 import java.net.URI;
 import java.util.Arrays;
 
-import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
@@ -35,8 +34,6 @@ import org.apache.olingo.client.api.EdmEnabledODataClient;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.commons.api.domain.ODataEntity;
 import org.apache.olingo.commons.api.domain.ODataValue;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.ext.proxy.AbstractService;
 import org.apache.olingo.ext.proxy.api.ComplexType;
@@ -213,15 +210,16 @@ abstract class AbstractInvocationHandler implements InvocationHandler {
       final String containerNS, final String entitySetName, final AbstractService<?> service) {
 
     final URIBuilder uriBuilder = service.getClient().newURIBuilder();
-    final Edm edm = service.getClient().getCachedEdm();
+//    final Edm edm = service.getClient().getCachedEdm();
 
     final StringBuilder entitySetSegment = new StringBuilder();
-    if (StringUtils.isNotBlank(containerNS)) {
-      final EdmEntityContainer container = edm.getEntityContainer(new FullQualifiedName(containerNS));
-      if (!container.isDefault()) {
-        entitySetSegment.append(container.getFullQualifiedName().toString()).append('.');
-      }
-    }
+    //TODO: Container is always default in v4
+//    if (StringUtils.isNotBlank(containerNS)) {
+//      final EdmEntityContainer container = edm.getEntityContainer(new FullQualifiedName(containerNS));
+//      if (!container.isDefault()) {
+//        entitySetSegment.append(container.getFullQualifiedName().toString()).append('.');
+//      }
+//    }
 
     entitySetSegment.append(entitySetName);
     uriBuilder.appendEntitySetSegment(entitySetSegment.toString());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityContainerInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityContainerInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityContainerInvocationHandler.java
index e746b8f..ffb5902 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityContainerInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityContainerInvocationHandler.java
@@ -46,8 +46,6 @@ public final class EntityContainerInvocationHandler extends AbstractInvocationHa
   protected final String namespace;
   private final String name;
 
-  private final boolean defaultEC;
-
   public static EntityContainerInvocationHandler getInstance(final Class<?> ref, final AbstractService<?> service) {
 
     final EntityContainerInvocationHandler instance = new EntityContainerInvocationHandler(ref, service);
@@ -64,7 +62,6 @@ public final class EntityContainerInvocationHandler extends AbstractInvocationHa
     }
 
     this.name = ((EntityContainer) annotation).name();
-    this.defaultEC = ((EntityContainer) annotation).isDefaultEntityContainer();
     this.namespace = ((EntityContainer) annotation).namespace();
   }
 
@@ -72,10 +69,6 @@ public final class EntityContainerInvocationHandler extends AbstractInvocationHa
     return service;
   }
 
-  protected boolean isDefaultEntityContainer() {
-    return defaultEC;
-  }
-
   protected String getEntityContainerName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
index 4bb75ff..6cd82d7 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/utils/CoreUtils.java
@@ -49,9 +49,7 @@ import org.apache.olingo.commons.api.domain.ODataLink;
 import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.commons.api.domain.ODataProperty;
 import org.apache.olingo.commons.api.domain.ODataValue;
-import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmElement;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.EdmTerm;
@@ -655,22 +653,22 @@ public final class CoreUtils {
 
   public static URI getTargetEntitySetURI(
       final EdmEnabledODataClient client, final NavigationProperty property) {
-    final Edm edm = client.getCachedEdm();
+//    final Edm edm = client.getCachedEdm();
+//
+//    final FullQualifiedName containerName =
+//        new FullQualifiedName(property.targetSchema(), property.targetContainer());
 
-    final FullQualifiedName containerName =
-        new FullQualifiedName(property.targetSchema(), property.targetContainer());
-
-    final EdmEntityContainer container = edm.getEntityContainer(containerName);
+//    final EdmEntityContainer container = edm.getEntityContainer(containerName);
     final URIBuilder uriBuilder = client.newURIBuilder(client.getServiceRoot());
-
-    if (!container.isDefault()) {
-      final StringBuilder entitySetSegment = new StringBuilder();
-      entitySetSegment.append(container.getFullQualifiedName()).append('.');
-      entitySetSegment.append(property.targetEntitySet());
-      uriBuilder.appendEntitySetSegment(entitySetSegment.toString());
-    } else {
+//TODO: Container can only be default in V4
+//    if (!container.isDefault()) {
+//      final StringBuilder entitySetSegment = new StringBuilder();
+//      entitySetSegment.append(container.getFullQualifiedName()).append('.');
+//      entitySetSegment.append(property.targetEntitySet());
+//      uriBuilder.appendEntitySetSegment(entitySetSegment.toString());
+//    } else {
       uriBuilder.appendEntitySetSegment(property.targetEntitySet());
-    }
+//    }
 
     return uriBuilder.build();
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/ext/pojogen-maven-plugin/src/main/resources/container.vm
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/main/resources/container.vm b/ext/pojogen-maven-plugin/src/main/resources/container.vm
index d8ba500..2042839 100644
--- a/ext/pojogen-maven-plugin/src/main/resources/container.vm
+++ b/ext/pojogen-maven-plugin/src/main/resources/container.vm
@@ -56,8 +56,7 @@ import javax.xml.datatype.Duration;
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("$namespace")
 @org.apache.olingo.ext.proxy.api.annotations.EntityContainer(name = "$container.Name",
-  namespace = "$namespace",
-  isDefaultEntityContainer = $container.Default)
+  namespace = "$namespace")
 public interface $utility.capitalize($container.Name) extends PersistenceManager {
 
 #foreach($entitySet in $container.EntitySets)

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/DemoService.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/DemoService.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/DemoService.java
index 3ff32a0..e75b499 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/DemoService.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/DemoService.java
@@ -33,8 +33,7 @@ import java.io.InputStream;
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
 @org.apache.olingo.ext.proxy.api.annotations.EntityContainer(name = "DemoService",
-  namespace = "ODataDemo",
-  isDefaultEntityContainer = true)
+  namespace = "ODataDemo")
 public interface DemoService extends PersistenceManager {
 
     Products getProducts();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java
index 5df94ce..2dfebc8 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/opentype/microsoft/test/odata/services/opentypesservicev4/DefaultContainer.java
@@ -32,8 +32,7 @@ import java.io.InputStream;
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.OpenTypesServiceV4")
 @org.apache.olingo.ext.proxy.api.annotations.EntityContainer(name = "DefaultContainer",
-  namespace = "Microsoft.Test.OData.Services.OpenTypesServiceV4",
-  isDefaultEntityContainer = true)
+  namespace = "Microsoft.Test.OData.Services.OpenTypesServiceV4")
 public interface DefaultContainer extends PersistenceManager {
 
     Row getRow();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/fit/src/test/java/org/apache/olingo/fit/proxy/v4/staticservice/microsoft/test/odata/services/odatawcfservice/InMemoryEntities.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/staticservice/microsoft/test/odata/services/odatawcfservice/InMemoryEntities.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/staticservice/microsoft/test/odata/services/odatawcfservice/InMemoryEntities.java
index 0f226e0..930b789 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/staticservice/microsoft/test/odata/services/odatawcfservice/InMemoryEntities.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/staticservice/microsoft/test/odata/services/odatawcfservice/InMemoryEntities.java
@@ -33,8 +33,7 @@ import java.io.InputStream;
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.ODataWCFService")
 @org.apache.olingo.ext.proxy.api.annotations.EntityContainer(name = "InMemoryEntities",
-  namespace = "Microsoft.Test.OData.Services.ODataWCFService",
-  isDefaultEntityContainer = true)
+  namespace = "Microsoft.Test.OData.Services.ODataWCFService")
 public interface InMemoryEntities extends PersistenceManager {
 
     Accounts getAccounts();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java
new file mode 100644
index 0000000..4327e62
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/ClientEdmProvider.java
@@ -0,0 +1,211 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.client.core.edm;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.commons.api.ODataException;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.provider.Action;
+import org.apache.olingo.commons.api.edm.provider.ActionImport;
+import org.apache.olingo.commons.api.edm.provider.AliasInfo;
+import org.apache.olingo.commons.api.edm.provider.Annotatable;
+import org.apache.olingo.commons.api.edm.provider.Annotations;
+import org.apache.olingo.commons.api.edm.provider.ComplexType;
+import org.apache.olingo.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.commons.api.edm.provider.EntityContainerInfo;
+import org.apache.olingo.commons.api.edm.provider.EntitySet;
+import org.apache.olingo.commons.api.edm.provider.EntityType;
+import org.apache.olingo.commons.api.edm.provider.EnumType;
+import org.apache.olingo.commons.api.edm.provider.Function;
+import org.apache.olingo.commons.api.edm.provider.FunctionImport;
+import org.apache.olingo.commons.api.edm.provider.Schema;
+import org.apache.olingo.commons.api.edm.provider.Singleton;
+import org.apache.olingo.commons.api.edm.provider.Term;
+import org.apache.olingo.commons.api.edm.provider.TypeDefinition;
+
+public class ClientEdmProvider extends EdmProvider {
+
+  private final Map<String, Schema> xmlSchemas;
+
+  public ClientEdmProvider(Map<String, Schema> xmlSchemas) {
+    this.xmlSchemas = xmlSchemas;
+  }
+
+  @Override
+  public EnumType getEnumType(final FullQualifiedName enumTypeName) throws ODataException {
+    Schema schema = xmlSchemas.get(enumTypeName.getNamespace());
+    if (schema != null) {
+      return schema.getEnumType(enumTypeName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public TypeDefinition getTypeDefinition(final FullQualifiedName typeDefinitionName) throws ODataException {
+    Schema schema = xmlSchemas.get(typeDefinitionName.getNamespace());
+    if (schema != null) {
+      return schema.getTypeDefinition(typeDefinitionName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public EntityType getEntityType(final FullQualifiedName entityTypeName) throws ODataException {
+    Schema schema = xmlSchemas.get(entityTypeName.getNamespace());
+    if (schema != null) {
+      return schema.getEntityType(entityTypeName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public ComplexType getComplexType(final FullQualifiedName complexTypeName) throws ODataException {
+    Schema schema = xmlSchemas.get(complexTypeName.getNamespace());
+    if (schema != null) {
+      return schema.getComplexType(complexTypeName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public List<Action> getActions(final FullQualifiedName actionName) throws ODataException {
+    Schema schema = xmlSchemas.get(actionName.getNamespace());
+    if (schema != null) {
+      return schema.getActions(actionName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public List<Function> getFunctions(final FullQualifiedName functionName) throws ODataException {
+    Schema schema = xmlSchemas.get(functionName.getNamespace());
+    if (schema != null) {
+      return schema.getFunctions(functionName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public Term getTerm(final FullQualifiedName termName) throws ODataException {
+    Schema schema = xmlSchemas.get(termName.getNamespace());
+    if (schema != null) {
+      return schema.getTerm(termName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public EntitySet getEntitySet(final FullQualifiedName entityContainer, final String entitySetName)
+      throws ODataException {
+    Schema schema = xmlSchemas.get(entityContainer.getNamespace());
+    if (schema != null) {
+      return schema.getEntityContainer().getEntitySet(entitySetName);
+    }
+    return null;
+  }
+
+  @Override
+  public Singleton getSingleton(final FullQualifiedName entityContainer, final String singletonName)
+      throws ODataException {
+    Schema schema = xmlSchemas.get(entityContainer.getNamespace());
+    if (schema != null) {
+      return schema.getEntityContainer().getSingleton(singletonName);
+    }
+    return null;
+  }
+
+  @Override
+  public ActionImport getActionImport(final FullQualifiedName entityContainer, final String actionImportName)
+      throws ODataException {
+    Schema schema = xmlSchemas.get(entityContainer.getNamespace());
+    if (schema != null) {
+      return schema.getEntityContainer().getActionImport(actionImportName);
+    }
+    return null;
+  }
+
+  @Override
+  public FunctionImport getFunctionImport(final FullQualifiedName entityContainer, final String functionImportName)
+      throws ODataException {
+    Schema schema = xmlSchemas.get(entityContainer.getNamespace());
+    if (schema != null) {
+      return schema.getEntityContainer().getFunctionImport(functionImportName);
+    }
+    return null;
+  }
+
+  @Override
+  public EntityContainerInfo getEntityContainerInfo(final FullQualifiedName entityContainerName) throws ODataException {
+    for (Schema schema : xmlSchemas.values()) {
+      if (schema.getEntityContainer() != null) {
+        return new EntityContainerInfo().setContainerName(entityContainerName).setExtendsContainer(
+            schema.getEntityContainer().getExtendsContainerFQN());
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public List<AliasInfo> getAliasInfos() throws ODataException {
+    ArrayList<AliasInfo> aliasInfo = new ArrayList<AliasInfo>();
+    for (Schema schema : xmlSchemas.values()) {
+      if (schema.getAlias() != null) {
+        aliasInfo.add(new AliasInfo().setNamespace(schema.getNamespace()).setAlias(schema.getAlias()));
+      }
+    }
+    return aliasInfo;
+  }
+
+  @Override
+  public List<Schema> getSchemas() throws ODataException {
+    return new ArrayList<Schema>(xmlSchemas.values());
+  }
+
+  @Override
+  public EntityContainer getEntityContainer() throws ODataException {
+    for (Schema schema : xmlSchemas.values()) {
+      if (schema.getEntityContainer() != null) {
+        return schema.getEntityContainer();
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public Annotations getAnnotationsGroup(FullQualifiedName targetName) throws ODataException {
+    Schema schema = xmlSchemas.get(targetName.getNamespace());
+    if (schema != null) {
+      return schema.getAnnotationGroup(targetName.getName());
+    }
+    return null;
+  }
+
+  @Override
+  public Annotatable getAnnoatatable(FullQualifiedName annotatedName) throws ODataException {
+    final Schema schema = xmlSchemas.get(annotatedName.getNamespace());
+    if (schema != null) {
+      return schema.getAnnotatables().get(annotatedName.getName());
+    }
+    return null;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImpl.java
deleted file mode 100644
index c1dcfa4..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAction;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.commons.api.edm.provider.Action;
-
-public class EdmActionImpl extends EdmOperationImpl implements EdmAction {
-
-  public static EdmActionImpl getInstance(final Edm edm, final FullQualifiedName name, final Action action) {
-    return EdmOperationImpl.getInstance(new EdmActionImpl(edm, name, action));
-  }
-
-  private EdmActionImpl(final Edm edm, final FullQualifiedName name, final Action action) {
-    super(edm, name, action, EdmTypeKind.ACTION);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
deleted file mode 100644
index eedcb72..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAction;
-import org.apache.olingo.commons.api.edm.EdmActionImport;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.provider.ActionImport;
-import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
-import org.apache.olingo.commons.core.edm.EdmTypeInfo;
-
-public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
-
-  private final ActionImport actionImport;
-
-  private final EdmAnnotationHelper helper;
-
-  private FullQualifiedName actionFQN;
-
-  public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
-          final ActionImport actionImport) {
-
-    super(edm, container, name, actionImport.getEntitySet());
-    this.actionImport = actionImport;
-    this.helper = new EdmAnnotationHelperImpl(edm, actionImport);
-  }
-
-  public FullQualifiedName getActionFQN() {
-    if (actionFQN == null) {
-      actionFQN = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(actionImport.getAction()).
-              setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName();
-    }
-    return actionFQN;
-  }
-
-  @Override
-  public EdmAction getUnboundAction() {
-    return edm.getUnboundAction(getActionFQN());
-  }
-
-  @Override
-  public TargetType getAnnotationsTargetType() {
-    return TargetType.ActionImport;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    return helper.getAnnotation(term);
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    return helper.getAnnotations();
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationHelperImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationHelperImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationHelperImpl.java
deleted file mode 100644
index b29d0a9..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationHelperImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.provider.Annotatable;
-import org.apache.olingo.commons.api.edm.provider.Annotation;
-import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
-
-public class EdmAnnotationHelperImpl implements EdmAnnotationHelper {
-
-  private final Edm edm;
-
-  private final Annotatable annotatable;
-
-  private List<EdmAnnotation> annotations;
-
-  public EdmAnnotationHelperImpl(final Edm edm, final Annotatable annotatable) {
-    this.edm = edm;
-    this.annotatable = annotatable;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    EdmAnnotation result = null;
-    for (EdmAnnotation annotation : getAnnotations()) {
-      if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) {
-        result = annotation;
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    if (annotations == null) {
-      annotations = new ArrayList<EdmAnnotation>();
-      for (Annotation annotation : annotatable.getAnnotations()) {
-        annotations.add(new EdmAnnotationImpl(edm, annotation));
-      }
-    }
-    return annotations;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationImpl.java
deleted file mode 100644
index a8a165c..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationImpl.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.client.core.edm.annotation.EdmCastImpl;
-import org.apache.olingo.client.core.edm.annotation.EdmConstantAnnotationExpressionImpl;
-import org.apache.olingo.client.core.edm.annotation.EdmIsOfImpl;
-import org.apache.olingo.client.core.edm.annotation.EdmRecordImpl;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotatable;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.annotation.EdmAnnotationExpression;
-import org.apache.olingo.commons.api.edm.annotation.EdmDynamicAnnotationExpression;
-import org.apache.olingo.commons.api.edm.annotation.EdmPropertyValue;
-import org.apache.olingo.commons.api.edm.provider.Annotatable;
-import org.apache.olingo.commons.api.edm.provider.Annotation;
-import org.apache.olingo.commons.api.edm.provider.annotation.AnnotationExpression;
-import org.apache.olingo.commons.api.edm.provider.annotation.DynamicAnnotationExpression;
-import org.apache.olingo.commons.api.edm.provider.annotation.PropertyValue;
-import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
-import org.apache.olingo.commons.core.edm.annotation.EdmAndImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmAnnotationPathImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmApplyImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmCollectionImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmEqImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmGeImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmGtImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmIfImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmLabeledElementImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmLabeledElementReferenceImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmLeImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmLtImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmNavigationPropertyPathImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmNeImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmNotImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmNullImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmOrImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmPathImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmPropertyPathImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmPropertyValueImpl;
-import org.apache.olingo.commons.core.edm.annotation.EdmUrlRefImpl;
-
-public class EdmAnnotationImpl implements EdmAnnotation {
-
-  private final Edm edm;
-
-  private final Annotation annotation;
-
-  private final EdmAnnotationHelper helper;
-
-  private EdmTerm term;
-
-  private EdmAnnotationExpression expression;
-
-  public EdmAnnotationImpl(final Edm edm, final Annotation annotation) {
-    this.edm = edm;
-    this.annotation = annotation;
-    this.helper = new EdmAnnotationHelperImpl(edm, annotation);
-  }
-
-  @Override
-  public EdmTerm getTerm() {
-    if (term == null) {
-      term = edm.getTerm(new FullQualifiedName(annotation.getTerm()));
-    }
-    return term;
-  }
-
-  @Override
-  public String getQualifier() {
-    return annotation.getQualifier();
-  }
-
-  private EdmAnnotationExpression getExpression(final AnnotationExpression exp) {
-    EdmAnnotationExpression _expression = null;
-
-    if (exp.isConstant()) {
-      _expression = new EdmConstantAnnotationExpressionImpl(exp.asConstant());
-    } else if (annotation.getExpression().isDynamic()) {
-      _expression = getDynamicExpression(exp.asDynamic());
-    }
-
-    return _expression;
-  }
-
-  private EdmDynamicAnnotationExpression getDynamicExpression(final DynamicAnnotationExpression exp) {
-    EdmDynamicAnnotationExpression _expression = null;
-
-    if (exp.isNot()) {
-      _expression = new EdmNotImpl(getDynamicExpression(exp.asNot().getExpression()));
-    } else if (exp.isTwoParamsOp()) {
-      switch (exp.asTwoParamsOp().getType()) {
-        case And:
-          _expression = new EdmAndImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Or:
-          _expression = new EdmOrImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Eq:
-          _expression = new EdmEqImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Ne:
-          _expression = new EdmNeImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Ge:
-          _expression = new EdmGeImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Gt:
-          _expression = new EdmGtImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Le:
-          _expression = new EdmLeImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        case Lt:
-          _expression = new EdmLtImpl(
-                  getDynamicExpression(exp.asTwoParamsOp().getLeftExpression()),
-                  getDynamicExpression(exp.asTwoParamsOp().getRightExpression()));
-          break;
-
-        default:
-      }
-    } else if (exp.isAnnotationPath()) {
-      _expression = new EdmAnnotationPathImpl(exp.asAnnotationPath().getValue());
-    } else if (exp.isApply()) {
-      final List<EdmAnnotationExpression> parameters =
-              new ArrayList<EdmAnnotationExpression>(exp.asApply().getParameters().size());
-      for (AnnotationExpression param : exp.asApply().getParameters()) {
-        parameters.add(getExpression(param));
-      }
-      _expression = new EdmApplyImpl(exp.asApply().getFunction(), parameters);
-    } else if (exp.isCast()) {
-      _expression = new EdmCastImpl(edm, exp.asCast(), getDynamicExpression(exp.asCast().getValue()));
-    } else if (exp.isCollection()) {
-      final List<EdmAnnotationExpression> items =
-              new ArrayList<EdmAnnotationExpression>(exp.asCollection().getItems().size());
-      for (AnnotationExpression param : exp.asCollection().getItems()) {
-        items.add(getExpression(param));
-      }
-      _expression = new EdmCollectionImpl(items);
-    } else if (exp.isIf()) {
-      _expression = new EdmIfImpl(
-              getExpression(exp.asIf().getGuard()),
-              getExpression(exp.asIf().getThen()),
-              getExpression(exp.asIf().getElse()));
-    } else if (exp.isIsOf()) {
-      _expression = new EdmIsOfImpl(edm, exp.asIsOf(), getDynamicExpression(exp.asIsOf().getValue()));
-    } else if (exp.isLabeledElement()) {
-      _expression = new EdmLabeledElementImpl(
-              exp.asLabeledElement().getName(), getDynamicExpression(exp.asLabeledElement().getValue()));
-    } else if (exp.isLabeledElementReference()) {
-      _expression = new EdmLabeledElementReferenceImpl(exp.asLabeledElementReference().getValue());
-    } else if (exp.isNull()) {
-      _expression = new EdmNullImpl();
-    } else if (exp.isNavigationPropertyPath()) {
-      _expression = new EdmNavigationPropertyPathImpl(exp.asNavigationPropertyPath().getValue());
-    } else if (exp.isPath()) {
-      _expression = new EdmPathImpl(exp.asPath().getValue());
-    } else if (exp.isPropertyPath()) {
-      _expression = new EdmPropertyPathImpl(exp.asPropertyPath().getValue());
-    } else if (exp.isPropertyValue()) {
-      _expression = new EdmPropertyValueImpl(
-              exp.asPropertyValue().getProperty(), getExpression(exp.asPropertyValue().getValue()));
-    } else if (exp.isRecord()) {
-      final List<EdmPropertyValue> propertyValues =
-              new ArrayList<EdmPropertyValue>(exp.asRecord().getPropertyValues().size());
-      for (PropertyValue propertyValue : exp.asRecord().getPropertyValues()) {
-        propertyValues.add(new EdmPropertyValueImpl(
-                propertyValue.getProperty(), getExpression(propertyValue.getValue())));
-      }
-      _expression = new EdmRecordImpl(edm, exp.asRecord().getType(), propertyValues);
-    } else if (exp.isUrlRef()) {
-      _expression = new EdmUrlRefImpl(getExpression(exp.asUrlRef().getValue()));
-    }
-
-    if (_expression instanceof EdmAnnotatable && exp instanceof Annotatable) {
-      for (Annotation _annotation : ((Annotatable) exp).getAnnotations()) {
-        ((EdmAnnotatable) _expression).getAnnotations().add(new EdmAnnotationImpl(edm, _annotation));
-      }
-    }
-
-    return _expression;
-  }
-
-  @Override
-  public EdmAnnotationExpression getExpression() {
-    if (expression == null) {
-      expression = getExpression(annotation.getExpression());
-    }
-    return expression;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    return helper.getAnnotation(term);
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    return helper.getAnnotations();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationsImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationsImpl.java
deleted file mode 100644
index 91cf5fc..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmAnnotationsImpl.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmAnnotations;
-import org.apache.olingo.commons.api.edm.EdmAnnotationsTarget;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-import org.apache.olingo.commons.api.edm.EdmSchema;
-import org.apache.olingo.commons.api.edm.EdmStructuredType;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.provider.Annotation;
-import org.apache.olingo.commons.api.edm.provider.Annotations;
-
-public class EdmAnnotationsImpl implements EdmAnnotations {
-
-  private final Edm edm;
-
-  private final EdmSchema schema;
-
-  private final Annotations annotationGroup;
-
-  private EdmAnnotationsTarget target;
-
-  private List<EdmAnnotation> annotations;
-
-  public EdmAnnotationsImpl(final Edm edm, final EdmSchema schema, final Annotations annotationGroup) {
-    this.edm = edm;
-    this.schema = schema;
-    this.annotationGroup = annotationGroup;
-  }
-
-  private EdmAnnotationsTarget getTarget(final EdmStructuredType structured, final String path) {
-    EdmAnnotationsTarget _target = null;
-    if (structured != null) {
-      _target = path == null
-              ? structured
-              : structured.getStructuralProperty(path);
-      if (_target == null) {
-        _target = structured.getNavigationProperty(path);
-      }
-    }
-    return _target;
-  }
-
-  private EdmAnnotationsTarget getTarget(final EdmEnumType enumType, final String path) {
-    EdmAnnotationsTarget _target = null;
-    if (enumType != null) {
-      _target = path == null
-              ? enumType
-              : enumType.getMember(path);
-    }
-    return _target;
-  }
-
-  @Override
-  public EdmAnnotationsTarget getTarget() {
-    if (target == null) {
-      final String[] splitted = StringUtils.split(annotationGroup.getTarget(), '/');
-      final FullQualifiedName base = new FullQualifiedName(splitted[0]);
-      final String path = splitted.length > 1 ? splitted[1] : null;
-
-      final EdmEntityContainer baseEntityContainer = schema.getEntityContainer(base);
-      
-      target = baseEntityContainer == null? null: baseEntityContainer.getActionImport(path);
-      if (target == null) {
-        target = getTarget(edm.getComplexType(base), path);
-        if (target == null) {
-          target = baseEntityContainer;
-          if (target == null) {
-            target = baseEntityContainer == null? null: baseEntityContainer.getEntitySet(path);
-            if (target == null) {
-              target = getTarget(edm.getEntityType(base), path);
-              if (target == null) {
-                target = getTarget(edm.getEnumType(base), path);
-                if (target == null) {
-                  target = baseEntityContainer == null? null: baseEntityContainer.getFunctionImport(path);
-                  if (target == null) {
-                    target = baseEntityContainer == null? null: baseEntityContainer.getSingleton(path);
-                    if (target == null) {
-                      target = edm.getTerm(base);
-                      if (target == null) {
-                        target = edm.getTypeDefinition(base);
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-    return target;
-  }
-
-  @Override
-  public String getQualifier() {
-    return annotationGroup.getQualifier();
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    EdmAnnotation result = null;
-    for (EdmAnnotation annotation : getAnnotations()) {
-      if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) {
-        result = annotation;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    if (annotations == null) {
-      annotations = new ArrayList<EdmAnnotation>();
-      for (Annotation annotation : annotationGroup.getAnnotations()) {
-        annotations.add(new EdmAnnotationImpl(edm, annotation));
-      }
-    }
-    return annotations;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
deleted file mode 100644
index a75ed61..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmBindingTargetImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.provider.BindingTarget;
-import org.apache.olingo.commons.api.edm.provider.NavigationPropertyBinding;
-import org.apache.olingo.commons.core.edm.AbstractEdmBindingTarget;
-import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
-import org.apache.olingo.commons.core.edm.EdmNavigationPropertyBindingImpl;
-
-public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
-
-  private final BindingTarget target;
-
-  private final EdmAnnotationHelper helper;
-
-  private List<EdmNavigationPropertyBinding> navigationPropertyBindings;
-
-  public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container,
-          final String name, final FullQualifiedName type, final BindingTarget target) {
-
-    super(edm, container, name, type);
-    this.target = target;
-    this.helper = new EdmAnnotationHelperImpl(edm, target);
-  }
-
-  @Override
-  public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
-    if (navigationPropertyBindings == null) {
-      List<? extends NavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings();
-      navigationPropertyBindings = new ArrayList<EdmNavigationPropertyBinding>();
-      if (providerBindings != null) {
-        for (NavigationPropertyBinding binding : providerBindings) {
-          navigationPropertyBindings.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), binding.getTarget()));
-        }
-      }
-    }
-    return navigationPropertyBindings;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    return helper.getAnnotation(term);
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    return helper.getAnnotations();
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
deleted file mode 100644
index 409cb58..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.lang3.StringUtils;
-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.commons.api.edm.EdmAction;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmAnnotations;
-import org.apache.olingo.commons.api.edm.EdmComplexType;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmEntityType;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-import org.apache.olingo.commons.api.edm.EdmFunction;
-import org.apache.olingo.commons.api.edm.EdmSchema;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.provider.Action;
-import org.apache.olingo.commons.api.edm.provider.Annotatable;
-import org.apache.olingo.commons.api.edm.provider.Annotation;
-import org.apache.olingo.commons.api.edm.provider.Annotations;
-import org.apache.olingo.commons.api.edm.provider.ComplexType;
-import org.apache.olingo.commons.api.edm.provider.EntityContainer;
-import org.apache.olingo.commons.api.edm.provider.EntityType;
-import org.apache.olingo.commons.api.edm.provider.EnumType;
-import org.apache.olingo.commons.api.edm.provider.Function;
-import org.apache.olingo.commons.api.edm.provider.Parameter;
-import org.apache.olingo.commons.api.edm.provider.Schema;
-import org.apache.olingo.commons.api.edm.provider.Term;
-import org.apache.olingo.commons.api.edm.provider.TypeDefinition;
-import org.apache.olingo.commons.core.edm.AbstractEdm;
-import org.apache.olingo.commons.core.edm.EdmTypeInfo;
-
-public class EdmClientImpl extends AbstractEdm {
-
-  private final List<Schema> xmlSchemas;
-
-  private final Map<String, Schema> xmlSchemaByNamespace;
-
-  public EdmClientImpl(final Map<String, Schema> xmlSchemas) {
-    this.xmlSchemaByNamespace = xmlSchemas;
-
-    this.xmlSchemas = new ArrayList<Schema>();
-    for (Schema schema : xmlSchemaByNamespace.values()) {
-      if (!this.xmlSchemas.contains(schema)) {
-        this.xmlSchemas.add(schema);
-      }
-    }
-  }
-
-  @Override
-  protected Map<String, String> createAliasToNamespaceInfo() {
-    final Map<String, String> aliasToNamespace = new HashMap<String, String>();
-
-    for (Schema schema : xmlSchemas) {
-      aliasToNamespace.put(null, schema.getNamespace());
-      if (StringUtils.isNotBlank(schema.getAlias())) {
-        aliasToNamespace.put(schema.getAlias(), schema.getNamespace());
-      }
-    }
-
-    return aliasToNamespace;
-  }
-
-  @Override
-  protected Map<String, EdmSchema> createSchemas() {
-    final Map<String, EdmSchema> _schemas = new LinkedHashMap<String, EdmSchema>(xmlSchemas.size());
-    for (Schema schema : xmlSchemas) {
-      _schemas.put(schema.getNamespace(), new EdmSchemaImpl(this, schema));
-    }
-    return _schemas;
-  }
-
-  @Override
-  protected EdmEntityContainer createEntityContainer(final FullQualifiedName containerName) {
-    EdmEntityContainer result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(containerName.getNamespace());
-    if (schema != null) {
-      final EntityContainer xmlEntityContainer = schema.getEntityContainer();
-      if (xmlEntityContainer != null) {
-        result = new EdmEntityContainerImpl(this, containerName, xmlEntityContainer);
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  protected EdmEnumType createEnumType(final FullQualifiedName enumName) {
-    EdmEnumType result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(enumName.getNamespace());
-    if (schema != null) {
-      final EnumType xmlEnumType = schema.getEnumType(enumName.getName());
-      if (xmlEnumType != null) {
-        result = new EdmEnumTypeImpl(this, enumName, xmlEnumType);
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  protected EdmTypeDefinition createTypeDefinition(final FullQualifiedName typeDefinitionName) {
-    EdmTypeDefinition result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(typeDefinitionName.getNamespace());
-    if (schema != null) {
-      final TypeDefinition xmlTypeDefinition = schema.
-          getTypeDefinition(typeDefinitionName.getName());
-      if (xmlTypeDefinition != null) {
-        result = new EdmTypeDefinitionImpl(this, typeDefinitionName, xmlTypeDefinition);
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected EdmEntityType createEntityType(final FullQualifiedName entityTypeName) {
-    EdmEntityType result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(entityTypeName.getNamespace());
-    if (schema != null) {
-      final EntityType xmlEntityType = schema.getEntityType(entityTypeName.getName());
-      if (xmlEntityType != null) {
-        result = EdmEntityTypeImpl.getInstance(this, entityTypeName, xmlEntityType);
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  protected EdmComplexType createComplexType(final FullQualifiedName complexTypeName) {
-    EdmComplexType result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(complexTypeName.getNamespace());
-    if (schema != null) {
-      final ComplexType xmlComplexType = schema.getComplexType(complexTypeName.getName());
-      if (xmlComplexType != null) {
-        result = EdmComplexTypeImpl.getInstance(this, complexTypeName, xmlComplexType);
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  protected EdmAction createUnboundAction(final FullQualifiedName actionName) {
-    EdmAction result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(actionName.getNamespace());
-    final List<Action> actions = schema.
-        getActions(actionName.getName());
-    boolean found = false;
-    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);
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected List<EdmFunction> createUnboundFunctions(final FullQualifiedName functionName) {
-    final List<EdmFunction> result = new ArrayList<EdmFunction>();
-
-    final Schema schema = xmlSchemaByNamespace.get(functionName.getNamespace());
-    final List<Function> functions = schema.
-        getFunctions(functionName.getName());
-    for (final Iterator<Function> itor = functions.iterator(); itor.hasNext();) {
-      final Function function = itor.next();
-      if (!function.isBound()) {
-        result.add(EdmFunctionImpl.getInstance(this, functionName, function));
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected EdmFunction createUnboundFunction(final FullQualifiedName functionName, final List<String> parameterNames) {
-    EdmFunction result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(functionName.getNamespace());
-    final List<Function> functions = schema.
-        getFunctions(functionName.getName());
-    boolean found = false;
-    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 (Parameter param : function.getParameters()) {
-          functionParamNames.add(param.getName());
-        }
-        found = parameterNames == null
-            ? functionParamNames.isEmpty()
-            : functionParamNames.containsAll(parameterNames);
-        result = EdmFunctionImpl.getInstance(this, functionName, function);
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected EdmAction createBoundAction(final FullQualifiedName actionName,
-      final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
-
-    EdmAction result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(actionName.getNamespace());
-    final List<Action> actions =
-        schema.getActions(actionName.getName());
-    boolean found = false;
-    for (final Iterator<Action> itor = actions.iterator(); itor.hasNext() && !found;) {
-      final Action action = itor.next();
-      if (action.isBound()) {
-        final EdmTypeInfo boundParam = new EdmTypeInfo.Builder().setEdm(this).
-            setTypeExpression(action.getParameters().get(0).getType()).build();
-        if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
-            && (isBindingParameterCollection == null
-            || isBindingParameterCollection.booleanValue() == boundParam.isCollection())) {
-
-          found = true;
-          result = EdmActionImpl.getInstance(this, actionName, action);
-        }
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected EdmFunction createBoundFunction(final FullQualifiedName functionName,
-      final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection,
-      final List<String> parameterNames) {
-
-    EdmFunction result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(functionName.getNamespace());
-    final List<Function> functions = schema.
-        getFunctions(functionName.getName());
-    boolean found = false;
-    for (final Iterator<Function> itor = functions.iterator(); itor.hasNext() && !found;) {
-      final Function function = itor.next();
-      if (function.isBound()) {
-        final EdmTypeInfo boundParam = new EdmTypeInfo.Builder().setEdm(this).
-            setTypeExpression(function.getParameters().get(0).getType()).build();
-        if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
-            && (isBindingParameterCollection == null
-            || isBindingParameterCollection.booleanValue() == boundParam.isCollection())) {
-
-          final Set<String> functionParamNames = new HashSet<String>();
-          for (Parameter param : function.getParameters()) {
-            functionParamNames.add(param.getName());
-          }
-          found = parameterNames == null
-              ? functionParamNames.isEmpty()
-              : functionParamNames.containsAll(parameterNames);
-          result = EdmFunctionImpl.getInstance(this, functionName, function);
-        }
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected EdmTerm createTerm(final FullQualifiedName termName) {
-    EdmTerm result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(termName.getNamespace());
-    if (schema != null) {
-      final Term term = schema.getTerm(termName.getName());
-      if (term != null) {
-        result = new EdmTermImpl(this, schema.getNamespace(), term);
-      }
-    }
-    return result;
-  }
-
-  @Override
-  protected EdmAnnotations createAnnotationGroup(final FullQualifiedName targetName) {
-    EdmAnnotationsImpl result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(targetName.getNamespace());
-    final Annotations annotationGroup =
-        schema.getAnnotationGroup(targetName.getName());
-    if (annotationGroup != null) {
-      result = new EdmAnnotationsImpl(this, schemas.get(schema.getNamespace()), annotationGroup);
-    }
-
-    return result;
-  }
-
-  @Override
-  protected List<EdmAnnotation> createAnnotations(final FullQualifiedName annotatedName) {
-    List<EdmAnnotation> result = null;
-
-    final Schema schema = xmlSchemaByNamespace.get(annotatedName.getNamespace());
-    final Annotatable annotatable =
-        schema.getAnnotatables().get(annotatedName.getName());
-    if (annotatable != null && annotatable.getAnnotations() != null) {
-      result = new ArrayList<EdmAnnotation>();
-      for (Annotation annotation : annotatable.getAnnotations()) {
-        final EdmTerm term = getTerm(new FullQualifiedName(annotation.getTerm()));
-        result.add(new EdmAnnotationImpl(this, annotation));
-      }
-    }
-
-    return result;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    return EqualsBuilder.reflectionEquals(this, obj);
-  }
-
-  @Override
-  public int hashCode() {
-    return HashCodeBuilder.reflectionHashCode(this);
-  }
-
-  @Override
-  public String toString() {
-    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/5cef4fae/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmComplexTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmComplexTypeImpl.java
deleted file mode 100644
index 5861640..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmComplexTypeImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.client.core.edm;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
-import org.apache.olingo.commons.api.edm.EdmProperty;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.provider.ComplexType;
-import org.apache.olingo.commons.core.edm.AbstractEdmComplexType;
-import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
-import org.apache.olingo.commons.core.edm.EdmStructuredTypeHelper;
-import org.apache.olingo.commons.core.edm.EdmTypeInfo;
-
-public class EdmComplexTypeImpl extends AbstractEdmComplexType {
-
-  private final EdmStructuredTypeHelper typeHelper;
-
-  private EdmAnnotationHelper annotationHelper;
-
-  public static EdmComplexTypeImpl getInstance(final Edm edm, final FullQualifiedName fqn,
-      final ComplexType complexType) {
-
-    FullQualifiedName baseTypeName = null;
-    final String baseType = complexType.getBaseType();
-    baseTypeName = baseType == null
-        ? null : new EdmTypeInfo.Builder().setTypeExpression(baseType).build().getFullQualifiedName();
-    final EdmComplexTypeImpl instance = new EdmComplexTypeImpl(edm, fqn, baseTypeName, complexType);
-    instance.baseType = instance.buildBaseType(baseTypeName);
-
-    return instance;
-  }
-
-  private EdmComplexTypeImpl(final Edm edm, final FullQualifiedName fqn, final FullQualifiedName baseTypeName,
-      final ComplexType complexType) {
-
-    super(edm, fqn, baseTypeName);
-    this.typeHelper = new EdmStructuredTypeHelperImpl(edm, getFullQualifiedName(), complexType);
-    this.annotationHelper = new EdmAnnotationHelperImpl(edm, complexType);
-  }
-
-  @Override
-  protected Map<String, EdmProperty> getProperties() {
-    return typeHelper.getProperties();
-  }
-
-  @Override
-  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
-    return typeHelper.getNavigationProperties();
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return typeHelper.isOpenType();
-  }
-
-  @Override
-  public boolean isAbstract() {
-    return typeHelper.isAbstract();
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    return annotationHelper == null ? null : annotationHelper.getAnnotation(term);
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    return annotationHelper == null ? null : annotationHelper.getAnnotations();
-  }
-
-}