You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/02/17 10:53:40 UTC

[26/35] olingo-odata4 git commit: [OLINGO-575] Removed V4 server code

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
deleted file mode 100644
index 6d03215..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
+++ /dev/null
@@ -1,616 +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.server.core.deserializer.json;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.olingo.commons.api.Constants;
-import org.apache.olingo.commons.api.data.Entity;
-import org.apache.olingo.commons.api.data.EntitySet;
-import org.apache.olingo.commons.api.data.Link;
-import org.apache.olingo.commons.api.data.Property;
-import org.apache.olingo.commons.api.data.ValueType;
-import org.apache.olingo.commons.api.domain.ODataLinkType;
-import org.apache.olingo.commons.api.edm.EdmComplexType;
-import org.apache.olingo.commons.api.edm.EdmEntityType;
-import org.apache.olingo.commons.api.edm.EdmEnumType;
-import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.EdmProperty;
-import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.apache.olingo.commons.core.data.EntityImpl;
-import org.apache.olingo.commons.core.data.EntitySetImpl;
-import org.apache.olingo.commons.core.data.LinkImpl;
-import org.apache.olingo.commons.core.data.PropertyImpl;
-import org.apache.olingo.server.api.deserializer.DeserializerException;
-import org.apache.olingo.server.api.deserializer.ODataDeserializer;
-
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class ODataJsonDeserializer implements ODataDeserializer {
-
-  private static final String ODATA_ANNOTATION_MARKER = "@";
-  private static final String ODATA_CONTROL_INFORMATION_PREFIX = "@odata.";
-
-  @Override
-  public EntitySet entityCollection(InputStream stream, EdmEntityType edmEntityType) throws DeserializerException {
-    try {
-      ObjectMapper objectMapper = new ObjectMapper();
-      objectMapper.configure(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY, true);
-      JsonParser parser = new JsonFactory(objectMapper).createParser(stream);
-      final ObjectNode tree = parser.getCodec().readTree(parser);
-
-      return consumeEntitySetNode(edmEntityType, tree);
-    } catch (JsonParseException e) {
-      throw new DeserializerException("An JsonParseException occurred", e,
-          DeserializerException.MessageKeys.JSON_SYNTAX_EXCEPTION);
-    } catch (JsonMappingException e) {
-      throw new DeserializerException("Duplicate json property detected", e,
-          DeserializerException.MessageKeys.DUPLICATE_JSON_PROPERTY);
-    } catch (IOException e) {
-      throw new DeserializerException("An IOException occurred", e, DeserializerException.MessageKeys.IO_EXCEPTION);
-    }
-  }
-
-  private EntitySet consumeEntitySetNode(EdmEntityType edmEntityType, final ObjectNode tree)
-      throws DeserializerException {
-    EntitySetImpl entitySet = new EntitySetImpl();
-
-    // Consume entities
-    JsonNode jsonNode = tree.get(Constants.VALUE);
-    if (jsonNode != null) {
-      if (!jsonNode.isArray()) {
-        throw new DeserializerException("The content of the value tag must be an Array but is not. ",
-            DeserializerException.MessageKeys.VALUE_TAG_MUST_BE_AN_ARRAY);
-      }
-
-      entitySet.getEntities().addAll(consumeEntitySetArray(edmEntityType, jsonNode));
-      tree.remove(Constants.VALUE);
-    } else {
-      throw new DeserializerException("Could not find value array.",
-          DeserializerException.MessageKeys.VALUE_ARRAY_NOT_PRESENT);
-    }
-
-    final List<String> toRemove = new ArrayList<String>();
-    Iterator<Entry<String, JsonNode>> fieldsIterator = tree.fields();
-    while (fieldsIterator.hasNext()) {
-      Map.Entry<String, JsonNode> field = fieldsIterator.next();
-
-      if (field.getKey().contains(ODATA_CONTROL_INFORMATION_PREFIX)) {
-        // Control Information is ignored for requests as per specification chapter "4.5 Control Information"
-        toRemove.add(field.getKey());
-      } else if (field.getKey().contains(ODATA_ANNOTATION_MARKER)) {
-        throw new DeserializerException("Custom annotation with field name: " + field.getKey() + " not supported",
-            DeserializerException.MessageKeys.NOT_IMPLEMENTED);
-      }
-    }
-    // remove here to avoid iterator issues.
-    tree.remove(toRemove);
-    assertJsonNodeIsEmpty(tree);
-
-    return entitySet;
-  }
-
-  private List<Entity> consumeEntitySetArray(EdmEntityType edmEntityType, JsonNode jsonNode)
-      throws DeserializerException {
-    List<Entity> entities = new ArrayList<Entity>();
-    for (JsonNode arrayElement : jsonNode) {
-      if (arrayElement.isArray() || arrayElement.isValueNode()) {
-        throw new DeserializerException("Nested Arrays and primitive values are not allowed for an entity value.",
-            DeserializerException.MessageKeys.INVALID_ENTITY);
-      }
-
-      entities.add(consumeEntityNode(edmEntityType, (ObjectNode) arrayElement));
-    }
-    return entities;
-  }
-
-  @Override
-  public Entity entity(InputStream stream, EdmEntityType edmEntityType) throws DeserializerException {
-    try {
-      ObjectMapper objectMapper = new ObjectMapper();
-      objectMapper.configure(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY, true);
-      JsonParser parser = new JsonFactory(objectMapper).createParser(stream);
-      final ObjectNode tree = parser.getCodec().readTree(parser);
-
-      return consumeEntityNode(edmEntityType, tree);
-
-    } catch (JsonParseException e) {
-      throw new DeserializerException("An JsonParseException occurred", e,
-          DeserializerException.MessageKeys.JSON_SYNTAX_EXCEPTION);
-    } catch (JsonMappingException e) {
-      throw new DeserializerException("Duplicate property detected", e,
-          DeserializerException.MessageKeys.DUPLICATE_PROPERTY);
-    } catch (IOException e) {
-      throw new DeserializerException("An IOException occurred", e, DeserializerException.MessageKeys.IO_EXCEPTION);
-    }
-
-  }
-
-  private Entity consumeEntityNode(EdmEntityType edmEntityType, final ObjectNode tree) throws DeserializerException {
-    EntityImpl entity = new EntityImpl();
-    entity.setType(edmEntityType.getFullQualifiedName().getFullQualifiedNameAsString());
-
-    // Check and consume all Properties
-    consumeEntityProperties(edmEntityType, tree, entity);
-
-    // Check and consume all expanded Navigation Properties
-    consumeExpandedNavigationProperties(edmEntityType, tree, entity);
-
-    // consume remaining json node fields
-    consumeRemainingJsonNodeFields(edmEntityType, tree, entity);
-
-    assertJsonNodeIsEmpty(tree);
-
-    return entity;
-  }
-
-  /**
-   * Consume all remaining fields of Json ObjectNode and try to map found values
-   * to according Entity fields and omit to be ignored OData fields (e.g. control information).
-   * 
-   * @param edmEntityType edm entity type which for which the json node is consumed
-   * @param node json node which is consumed
-   * @param entity entity instance which is filled
-   * @throws DeserializerException if an exception during consummation occurs
-   */
-  private void consumeRemainingJsonNodeFields(final EdmEntityType edmEntityType, final ObjectNode node,
-      final EntityImpl
-      entity) throws DeserializerException {
-    final List<String> toRemove = new ArrayList<String>();
-    Iterator<Entry<String, JsonNode>> fieldsIterator = node.fields();
-    while (fieldsIterator.hasNext()) {
-      Entry<String, JsonNode> field = fieldsIterator.next();
-
-      if (field.getKey().contains(Constants.JSON_BIND_LINK_SUFFIX)) {
-        Link bindingLink = consumeBindingLink(field.getKey(), field.getValue(), edmEntityType);
-        entity.getNavigationBindings().add(bindingLink);
-        toRemove.add(field.getKey());
-      } else if (field.getKey().contains(ODATA_CONTROL_INFORMATION_PREFIX)) {
-        // Control Information is ignored for requests as per specification chapter "4.5 Control Information"
-        toRemove.add(field.getKey());
-      } else if (field.getKey().contains(ODATA_ANNOTATION_MARKER)) {
-        throw new DeserializerException("Custom annotation with field name: " + field.getKey() + " not supported",
-            DeserializerException.MessageKeys.NOT_IMPLEMENTED);
-      }
-    }
-    // remove here to avoid iterator issues.
-    node.remove(toRemove);
-  }
-
-  private void consumeEntityProperties(final EdmEntityType edmEntityType, final ObjectNode node, final EntityImpl
-      entity) throws DeserializerException {
-    List<String> propertyNames = edmEntityType.getPropertyNames();
-    for (String propertyName : propertyNames) {
-      JsonNode jsonNode = node.get(propertyName);
-      if (jsonNode != null) {
-        EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName);
-        if (jsonNode.isNull() && !isNullable(edmProperty)) {
-          throw new DeserializerException("Property: " + propertyName + " must not be null.",
-              DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName);
-        }
-        Property property = consumePropertyNode(edmProperty, jsonNode);
-        entity.addProperty(property);
-        node.remove(propertyName);
-      }
-    }
-  }
-
-  private void consumeExpandedNavigationProperties(final EdmEntityType edmEntityType, final ObjectNode node,
-      final EntityImpl entity) throws DeserializerException {
-    List<String> navigationPropertyNames = edmEntityType.getNavigationPropertyNames();
-    for (String navigationPropertyName : navigationPropertyNames) {
-      // read expanded navigation property
-      JsonNode jsonNode = node.get(navigationPropertyName);
-      if (jsonNode != null) {
-        EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName);
-        boolean isNullable = edmNavigationProperty.isNullable() == null ? true : edmNavigationProperty.isNullable();
-        if (jsonNode.isNull() && !isNullable) {
-          throw new DeserializerException("Property: " + navigationPropertyName + " must not be null.",
-              DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, navigationPropertyName);
-        }
-
-        LinkImpl link = new LinkImpl();
-        link.setTitle(navigationPropertyName);
-        if (jsonNode.isArray() && edmNavigationProperty.isCollection()) {
-          link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString());
-          EntitySetImpl inlineEntitySet = new EntitySetImpl();
-          inlineEntitySet.getEntities().addAll(consumeEntitySetArray(edmNavigationProperty.getType(), jsonNode));
-          link.setInlineEntitySet(inlineEntitySet);
-        } else if (!jsonNode.isArray() && !jsonNode.isValueNode() && !edmNavigationProperty.isCollection()) {
-          link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
-          if (!jsonNode.isNull()) {
-            Entity inlineEntity = consumeEntityNode(edmNavigationProperty.getType(), (ObjectNode) jsonNode);
-            link.setInlineEntity(inlineEntity);
-          }
-        } else {
-          throw new DeserializerException("Invalid value: " + jsonNode.getNodeType()
-              + " for expanded navigation property: " + navigationPropertyName,
-              DeserializerException.MessageKeys.INVALID_VALUE_FOR_NAVIGATION_PROPERTY, navigationPropertyName);
-        }
-        entity.getNavigationLinks().add(link);
-        node.remove(navigationPropertyName);
-      }
-    }
-  }
-
-  private Link consumeBindingLink(String key, JsonNode jsonNode, EdmEntityType edmEntityType)
-      throws DeserializerException {
-    String[] splitKey = key.split("@");
-    String navigationPropertyName = splitKey[0];
-    EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName);
-    if (edmNavigationProperty == null) {
-      throw new DeserializerException("Invalid navigationPropertyName: " + navigationPropertyName,
-          DeserializerException.MessageKeys.NAVIGATION_PROPERTY_NOT_FOUND, navigationPropertyName);
-    }
-    LinkImpl bindingLink = new LinkImpl();
-    bindingLink.setTitle(navigationPropertyName);
-
-    if (edmNavigationProperty.isCollection()) {
-      assertIsNullNode(key, jsonNode);
-      if (!jsonNode.isArray()) {
-        throw new DeserializerException("Binding annotation: " + key + " must be an array.",
-            DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, key);
-      }
-      List<String> bindingLinkStrings = new ArrayList<String>();
-      for (JsonNode arrayValue : jsonNode) {
-        assertIsNullNode(key, arrayValue);
-        if (!arrayValue.isTextual()) {
-          throw new DeserializerException("Binding annotation: " + key + " must have string valued array.",
-              DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, key);
-        }
-        bindingLinkStrings.add(arrayValue.asText());
-      }
-      bindingLink.setType(ODataLinkType.ENTITY_COLLECTION_BINDING.toString());
-      bindingLink.setBindingLinks(bindingLinkStrings);
-    } else {
-      assertIsNullNode(key, jsonNode);
-      if (!jsonNode.isValueNode()) {
-        throw new DeserializerException("Binding annotation: " + key + " must be a string value.",
-            DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, key);
-      }
-      bindingLink.setBindingLink(jsonNode.asText());
-      bindingLink.setType(ODataLinkType.ENTITY_BINDING.toString());
-    }
-    return bindingLink;
-  }
-
-  private void assertIsNullNode(String key, JsonNode jsonNode) throws DeserializerException {
-    if (jsonNode.isNull()) {
-      throw new DeserializerException("Annotation: " + key + "must not have a null value.",
-          DeserializerException.MessageKeys.INVALID_NULL_ANNOTATION, key);
-    }
-  }
-
-  private Property consumePropertyNode(final EdmProperty edmProperty, final JsonNode jsonNode)
-          throws DeserializerException {
-    Property property = new PropertyImpl();
-    property.setName(edmProperty.getName());
-    property.setType(edmProperty.getType().getFullQualifiedName().getFullQualifiedNameAsString());
-    if (edmProperty.isCollection()) {
-      consumePropertyCollectionNode(edmProperty, jsonNode, property);
-    } else {
-      consumePropertySingleNode(edmProperty, jsonNode, property);
-    }
-    return property;
-  }
-
-  private void consumePropertySingleNode(final EdmProperty edmProperty,
-      final JsonNode jsonNode, final Property property)
-      throws DeserializerException {
-    switch (edmProperty.getType().getKind()) {
-    case PRIMITIVE:
-      Object value = readPrimitiveValue(edmProperty, jsonNode);
-      property.setValue(ValueType.PRIMITIVE, value);
-      break;
-    case DEFINITION:
-      value = readTypeDefinitionValue(edmProperty, jsonNode);
-      property.setValue(ValueType.PRIMITIVE, value);
-      break;
-    case ENUM:
-      value = readEnumValue(edmProperty, jsonNode);
-      property.setValue(ValueType.PRIMITIVE, value);
-      break;
-    case COMPLEX:
-      value = readComplexNode(edmProperty, jsonNode);
-      property.setValue(ValueType.COMPLEX, value);
-
-      break;
-    default:
-      throw new DeserializerException("Invalid Type Kind for a property found: " + edmProperty.getType().getKind(),
-          DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmProperty.getName());
-    }
-  }
-
-  private Object readComplexNode(final EdmProperty edmProperty, final JsonNode jsonNode)
-          throws DeserializerException {
-    // read and add all complex properties
-    Object value = readComplexValue(edmProperty, jsonNode);
-
-    final List<String> toRemove = new ArrayList<String>();
-    Iterator<Entry<String, JsonNode>> fieldsIterator = jsonNode.fields();
-    while (fieldsIterator.hasNext()) {
-      Entry<String, JsonNode> field = fieldsIterator.next();
-
-      if (field.getKey().contains(ODATA_CONTROL_INFORMATION_PREFIX)) {
-        // Control Information is ignored for requests as per specification chapter "4.5 Control Information"
-        toRemove.add(field.getKey());
-      } else if (field.getKey().contains(ODATA_ANNOTATION_MARKER)) {
-        throw new DeserializerException("Custom annotation with field name: " + field.getKey() + " not supported",
-            DeserializerException.MessageKeys.NOT_IMPLEMENTED);
-      }
-    }
-    // remove here to avoid iterator issues.
-    if(!jsonNode.isNull()) {
-      ((ObjectNode) jsonNode).remove(toRemove);
-    }
-    // Afterwards the node must be empty
-    assertJsonNodeIsEmpty(jsonNode);
-
-    return value;
-  }
-
-  private void consumePropertyCollectionNode(final EdmProperty edmProperty, final JsonNode jsonNode,
-      final Property property) throws DeserializerException {
-    if (!jsonNode.isArray()) {
-      throw new DeserializerException("Value for property: " + edmProperty.getName()
-          + " must be an array but is not.", DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY,
-          edmProperty.getName());
-    }
-    List<Object> valueArray = new ArrayList<Object>();
-    Iterator<JsonNode> iterator = jsonNode.iterator();
-    switch (edmProperty.getType().getKind()) {
-    case PRIMITIVE:
-      while (iterator.hasNext()) {
-        JsonNode arrayElement = iterator.next();
-        Object value = readPrimitiveValue(edmProperty, arrayElement);
-        valueArray.add(value);
-      }
-      property.setValue(ValueType.COLLECTION_PRIMITIVE, valueArray);
-      break;
-    case DEFINITION:
-      while (iterator.hasNext()) {
-        JsonNode arrayElement = iterator.next();
-        Object value = readTypeDefinitionValue(edmProperty, arrayElement);
-        valueArray.add(value);
-      }
-      property.setValue(ValueType.COLLECTION_PRIMITIVE, valueArray);
-      break;
-    case ENUM:
-      while (iterator.hasNext()) {
-        JsonNode arrayElement = iterator.next();
-        Object value = readEnumValue(edmProperty, arrayElement);
-        valueArray.add(value);
-      }
-      property.setValue(ValueType.COLLECTION_ENUM, valueArray);
-      break;
-    case COMPLEX:
-      while (iterator.hasNext()) {
-        // read and add all complex properties
-        Object value = readComplexNode(edmProperty, iterator.next());
-        valueArray.add(value);
-      }
-      property.setValue(ValueType.COLLECTION_COMPLEX, valueArray);
-      break;
-    default:
-      throw new DeserializerException("Invalid Type Kind for a property found: " + edmProperty.getType().getKind(),
-          DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmProperty.getName());
-    }
-  }
-
-  private Object readComplexValue(EdmProperty edmComplexProperty, JsonNode jsonNode) throws DeserializerException {
-    if(isValidNull(edmComplexProperty, jsonNode)) {
-      return null;
-    }
-    if (jsonNode.isArray() || !jsonNode.isContainerNode()) {
-      throw new DeserializerException(
-          "Invalid value for property: " + edmComplexProperty.getName() + " must not be an array or primitive value.",
-          DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmComplexProperty.getName());
-    }
-    // Even if there are no properties defined we have to give back an empty list
-    List<Property> propertyList = new ArrayList<Property>();
-    EdmComplexType edmType = (EdmComplexType) edmComplexProperty.getType();
-    // Check and consume all Properties
-    for (String propertyName : edmType.getPropertyNames()) {
-      JsonNode subNode = jsonNode.get(propertyName);
-      if (subNode != null) {
-        EdmProperty edmProperty = (EdmProperty) edmType.getProperty(propertyName);
-        if (subNode.isNull() && !isNullable(edmProperty)) {
-          throw new DeserializerException("Property: " + propertyName + " must not be null.",
-              DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName);
-        }
-        Property property = consumePropertyNode(edmProperty, subNode);
-        propertyList.add(property);
-        ((ObjectNode) jsonNode).remove(propertyName);
-      }
-    }
-    return propertyList;
-  }
-
-  private boolean isNullable(EdmProperty edmProperty) {
-    return edmProperty.isNullable() == null ? true : edmProperty.isNullable();
-  }
-
-  private Object readTypeDefinitionValue(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException {
-    checkForValueNode(edmProperty, jsonNode);
-    if(isValidNull(edmProperty, jsonNode)) {
-      return null;
-    }
-    try {
-      EdmTypeDefinition edmTypeDefinition = (EdmTypeDefinition) edmProperty.getType();
-      checkJsonTypeBasedOnPrimitiveType(edmProperty.getName(), edmTypeDefinition.getUnderlyingType().getName(),
-          jsonNode);
-      return edmTypeDefinition.valueOfString(jsonNode.asText(), edmProperty.isNullable(),
-          edmTypeDefinition.getMaxLength(),
-          edmTypeDefinition.getPrecision(), edmTypeDefinition.getScale(), edmTypeDefinition.isUnicode(),
-          edmTypeDefinition.getDefaultType());
-    } catch (EdmPrimitiveTypeException e) {
-      throw new DeserializerException(
-          "Invalid value: " + jsonNode.asText() + " for property: " + edmProperty.getName(), e,
-          DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, edmProperty.getName());
-    }
-  }
-
-  private boolean isValidNull(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException {
-    if (jsonNode.isNull()) {
-      if (isNullable(edmProperty)) {
-        return true;
-      } else {
-        throw new DeserializerException("Property: " + edmProperty.getName() + " must not be null.",
-            DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, edmProperty.getName());
-      }
-
-    }
-    return false;
-  }
-
-  private Object readEnumValue(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException {
-    checkForValueNode(edmProperty, jsonNode);
-    if(isValidNull(edmProperty, jsonNode)) {
-      return null;
-    }
-    try {
-      EdmEnumType edmEnumType = (EdmEnumType) edmProperty.getType();
-      checkJsonTypeBasedOnPrimitiveType(edmProperty.getName(), edmEnumType.getUnderlyingType().getName(), jsonNode);
-      return edmEnumType
-          .valueOfString(jsonNode.asText(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty
-              .getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmEnumType.getDefaultType());
-    } catch (EdmPrimitiveTypeException e) {
-      throw new DeserializerException(
-          "Invalid value: " + jsonNode.asText() + " for property: " + edmProperty.getName(), e,
-          DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, edmProperty.getName());
-    }
-  }
-
-  private Object readPrimitiveValue(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException {
-    checkForValueNode(edmProperty, jsonNode);
-    if(isValidNull(edmProperty, jsonNode)) {
-      return null;
-    }
-    try {
-      EdmPrimitiveType edmPrimitiveType = (EdmPrimitiveType) edmProperty.getType();
-      checkJsonTypeBasedOnPrimitiveType(edmProperty.getName(), edmPrimitiveType.getName(), jsonNode);
-      return edmPrimitiveType.valueOfString(jsonNode.asText(), edmProperty.isNullable(),
-          edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(),
-          edmProperty.isUnicode(), edmPrimitiveType.getDefaultType());
-    } catch (EdmPrimitiveTypeException e) {
-      throw new DeserializerException(
-          "Invalid value: " + jsonNode.asText() + " for property: " + edmProperty.getName(), e,
-          DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, edmProperty.getName());
-    }
-  }
-
-  /**
-   * Check if JsonNode is a value node (<code>jsonNode.isValueNode()</code>) and if not throw
-   * an DeserializerException.
-   * 
-   * @param edmProperty property which is checked
-   * @param jsonNode node which is checked
-   * @throws DeserializerException is thrown if json node is not a value node
-   */
-  private void checkForValueNode(final EdmProperty edmProperty, final JsonNode jsonNode)
-      throws DeserializerException {
-    if (!jsonNode.isValueNode()) {
-      throw new DeserializerException(
-          "Invalid value for property: " + edmProperty.getName() + " must not be an object or array.",
-          DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmProperty.getName());
-    }
-  }
-
-  /**
-   * Validate that node is empty (<code>node.size == 0</code>) and if not throw
-   * an <code>DeserializerException</code>.
-   * 
-   * @param node node to be checked
-   * @throws DeserializerException if node is not empty
-   */
-  private void assertJsonNodeIsEmpty(JsonNode node) throws DeserializerException {
-    if (node.size() != 0) {
-      final String unknownField = node.fieldNames().next();
-      throw new DeserializerException("Tree should be empty but still has content left: " + unknownField,
-          DeserializerException.MessageKeys.UNKOWN_CONTENT, unknownField);
-    }
-  }
-
-  private void checkJsonTypeBasedOnPrimitiveType(String propertyName, String edmPrimitiveTypeName, JsonNode jsonNode)
-      throws DeserializerException {
-    EdmPrimitiveTypeKind primKind;
-    try {
-      primKind = EdmPrimitiveTypeKind.valueOf(ODataServiceVersion.V40, edmPrimitiveTypeName);
-    } catch (IllegalArgumentException e) {
-      throw new DeserializerException("Unknown Primitive Type: " + edmPrimitiveTypeName, e,
-          DeserializerException.MessageKeys.UNKNOWN_PRIMITIVE_TYPE, edmPrimitiveTypeName, propertyName);
-    }
-    switch (primKind) {
-    // Booleans
-    case Boolean:
-      if (!jsonNode.isBoolean()) {
-        throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() + " for edm " + primKind
-            + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, propertyName);
-      }
-      break;
-    // Numbers
-    case Int16:
-    case Int32:
-    case Int64:
-    case Byte:
-    case SByte:
-    case Single:
-    case Double:
-    case Decimal:
-      if (!jsonNode.isNumber()) {
-        throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() + " for edm " + primKind
-            + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, propertyName);
-      }
-      break;
-    // Strings
-    case String:
-    case Binary:
-    case Date:
-    case DateTimeOffset:
-    case Duration:
-    case Guid:
-    case TimeOfDay:
-      if (!jsonNode.isTextual()) {
-        throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() + " for edm " + primKind
-            + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, propertyName);
-      }
-      break;
-    default:
-      throw new DeserializerException("Unsupported Edm Primitive Type: " + primKind,
-          DeserializerException.MessageKeys.NOT_IMPLEMENTED);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java
deleted file mode 100644
index e96e165..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/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.server.core.edm.provider;
-
-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.server.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/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
deleted file mode 100644
index 0278f6b..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
+++ /dev/null
@@ -1,47 +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.server.core.edm.provider;
-
-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.EdmEntityContainer;
-import org.apache.olingo.server.api.edm.provider.ActionImport;
-
-public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
-
-  private final ActionImport actionImport;
-
-  public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final ActionImport actionImport) {
-
-    super(edm, container, actionImport);
-    this.actionImport = actionImport;
-  }
-
-  @Override
-  public EdmAction getUnboundAction() {
-    return edm.getUnboundAction(actionImport.getAction());
-  }
-
-  @Override
-  public TargetType getAnnotationsTargetType() {
-    return TargetType.ActionImport;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
deleted file mode 100644
index bd3df0a..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java
+++ /dev/null
@@ -1,62 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding;
-import org.apache.olingo.commons.api.edm.Target;
-import org.apache.olingo.commons.core.edm.AbstractEdmBindingTarget;
-import org.apache.olingo.commons.core.edm.EdmNavigationPropertyBindingImpl;
-import org.apache.olingo.server.api.edm.provider.BindingTarget;
-import org.apache.olingo.server.api.edm.provider.NavigationPropertyBinding;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
-
-  private final BindingTarget target;
-  private List<EdmNavigationPropertyBinding> navigationPropertyBindings;
-
-  public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container, final BindingTarget target) {
-    super(edm, container, target.getName(), target.getType());
-    this.target = target;
-  }
-
-  @Override
-  public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() {
-    if (navigationPropertyBindings == null) {
-      List<NavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings();
-      navigationPropertyBindings = new ArrayList<EdmNavigationPropertyBinding>();
-      if (providerBindings != null) {
-        for (NavigationPropertyBinding binding : providerBindings) {
-          Target providerTarget = binding.getTarget();
-          String targetString = "";
-          if (providerTarget.getEntityContainer() != null) {
-            targetString = targetString + providerTarget.getEntityContainer().getFullQualifiedNameAsString() + "/";
-          }
-          targetString = targetString + providerTarget.getTargetName();
-          navigationPropertyBindings.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), targetString));
-        }
-      }
-    }
-    return navigationPropertyBindings;
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java
deleted file mode 100644
index 36c5193..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java
+++ /dev/null
@@ -1,81 +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.server.core.edm.provider;
-
-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.core.edm.AbstractEdmComplexType;
-import org.apache.olingo.commons.core.edm.EdmStructuredTypeHelper;
-import org.apache.olingo.server.api.edm.provider.ComplexType;
-
-import java.util.List;
-import java.util.Map;
-
-public class EdmComplexTypeImpl extends AbstractEdmComplexType {
-
-  private final EdmStructuredTypeHelper helper;
-
-  public static EdmComplexTypeImpl getInstance(
-      final Edm edm, final FullQualifiedName name, final ComplexType complexType) {
-
-    final EdmComplexTypeImpl instance = new EdmComplexTypeImpl(edm, name, complexType);
-    return instance;
-  }
-
-  private EdmComplexTypeImpl(final Edm edm, final FullQualifiedName name, final ComplexType complexType) {
-    super(edm, name, complexType.getBaseType());
-    helper = new EdmStructuredTypeHelperImpl(edm, name, complexType);
-  }
-
-  @Override
-  protected Map<String, EdmProperty> getProperties() {
-    return helper.getProperties();
-  }
-
-  @Override
-  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
-    return helper.getNavigationProperties();
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return helper.isOpenType();
-  }
-
-  @Override
-  public boolean isAbstract() {
-    return helper.isAbstract();
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
deleted file mode 100644
index 1ed8d56..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java
+++ /dev/null
@@ -1,210 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.ODataException;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmActionImport;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmEntitySet;
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmFunctionImport;
-import org.apache.olingo.commons.api.edm.EdmSingleton;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.core.edm.AbstractEdmEntityContainer;
-import org.apache.olingo.server.api.edm.provider.ActionImport;
-import org.apache.olingo.server.api.edm.provider.EdmProvider;
-import org.apache.olingo.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.server.api.edm.provider.EntityContainerInfo;
-import org.apache.olingo.server.api.edm.provider.EntitySet;
-import org.apache.olingo.server.api.edm.provider.FunctionImport;
-import org.apache.olingo.server.api.edm.provider.Singleton;
-
-import java.util.List;
-
-public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
-
-  private final EdmProvider provider;
-
-  private EntityContainer container;
-
-  public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider,
-      final EntityContainerInfo entityContainerInfo) {
-    super(edm, entityContainerInfo.getContainerName(), entityContainerInfo.getExtendsContainer());
-    this.provider = provider;
-  }
-
-  public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider, final FullQualifiedName containerFQN,
-      final EntityContainer entityContainer) {
-    super(edm, containerFQN, entityContainer.getExtendsContainer());
-    this.provider = provider;
-    container = entityContainer;
-  }
-
-  @Override
-  protected EdmSingleton createSingleton(final String singletonName) {
-    EdmSingleton singleton = null;
-
-    try {
-      final Singleton providerSingleton = provider.getSingleton(entityContainerName, singletonName);
-      if (providerSingleton != null) {
-        singleton = new EdmSingletonImpl(edm, this, providerSingleton);
-      }
-    } catch (ODataException e) {
-      throw new EdmException(e);
-    }
-
-    return singleton;
-  }
-
-  @Override
-  protected EdmEntitySet createEntitySet(final String entitySetName) {
-    EdmEntitySet entitySet = null;
-
-    try {
-      final EntitySet providerEntitySet = provider.getEntitySet(entityContainerName, entitySetName);
-      if (providerEntitySet != null) {
-        entitySet = new EdmEntitySetImpl(edm, this, providerEntitySet);
-      }
-    } catch (ODataException e) {
-      throw new EdmException(e);
-    }
-
-    return entitySet;
-  }
-
-  @Override
-  protected EdmActionImport createActionImport(final String actionImportName) {
-    EdmActionImport actionImport = null;
-
-    try {
-      final ActionImport providerImport = provider.getActionImport(entityContainerName, actionImportName);
-      if (providerImport != null) {
-        actionImport = new EdmActionImportImpl(edm, this, providerImport);
-      }
-    } catch (ODataException e) {
-      throw new EdmException(e);
-    }
-
-    return actionImport;
-  }
-
-  @Override
-  protected EdmFunctionImport createFunctionImport(final String functionImportName) {
-    EdmFunctionImport functionImport = null;
-
-    try {
-      final FunctionImport providerImport = provider.getFunctionImport(entityContainerName, functionImportName);
-      if (providerImport != null) {
-        functionImport = new EdmFunctionImportImpl(edm, this, providerImport);
-      }
-    } catch (ODataException e) {
-      throw new EdmException(e);
-    }
-
-    return functionImport;
-  }
-
-  @Override
-  protected void loadAllEntitySets() {
-    loadContainer();
-    List<EntitySet> providerEntitySets = container.getEntitySets();
-    if (providerEntitySets != null) {
-      for (EntitySet entitySet : providerEntitySets) {
-        if (!entitySets.containsKey(entitySet.getName())) {
-          EdmEntitySetImpl impl = new EdmEntitySetImpl(edm, this, entitySet);
-          entitySets.put(impl.getName(), impl);
-        }
-      }
-    }
-  }
-
-  @Override
-  protected void loadAllFunctionImports() {
-    loadContainer();
-    List<FunctionImport> providerFuctionImports = container.getFunctionImports();
-    if (providerFuctionImports != null) {
-      for (FunctionImport functionImport : providerFuctionImports) {
-        String functionName = functionImport.getName();
-        if (!functionImports.containsKey(functionName)) {
-          EdmFunctionImportImpl impl = new EdmFunctionImportImpl(edm, this, functionImport);
-          functionImports.put(functionName, impl);
-        }
-      }
-    }
-
-  }
-
-  @Override
-  protected void loadAllSingletons() {
-    loadContainer();
-    List<Singleton> providerSingletons = container.getSingletons();
-    if (providerSingletons != null) {
-      for (Singleton singleton : providerSingletons) {
-        if (!singletons.containsKey(singleton.getName())) {
-          EdmSingletonImpl impl = new EdmSingletonImpl(edm, this, singleton);
-          singletons.put(singleton.getName(), impl);
-        }
-      }
-    }
-
-  }
-
-  @Override
-  protected void loadAllActionImports() {
-    loadContainer();
-    List<ActionImport> providerActionImports = container.getActionImports();
-    if (providerActionImports != null) {
-      for (ActionImport actionImport : providerActionImports) {
-        if (!actionImports.containsKey(actionImport.getName())) {
-          EdmActionImportImpl impl = new EdmActionImportImpl(edm, this, actionImport);
-          actionImports.put(actionImport.getName(), impl);
-        }
-      }
-    }
-
-  }
-
-  private void loadContainer() {
-    if (container == null) {
-      try {
-        container = provider.getEntityContainer();
-        if (container == null) {
-          // TODO: Should we throw an exception here?
-          container = new EntityContainer().setName(getName());
-        }
-      } catch (ODataException e) {
-        throw new EdmException(e);
-      }
-    }
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java
deleted file mode 100644
index a2926eb..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java
+++ /dev/null
@@ -1,60 +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.server.core.edm.provider;
-
-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.EdmEntitySet;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.server.api.edm.provider.EntitySet;
-
-import java.util.List;
-
-public class EdmEntitySetImpl extends EdmBindingTargetImpl implements EdmEntitySet {
-
-  private EntitySet entitySet;
-
-  public EdmEntitySetImpl(final Edm edm, final EdmEntityContainer container, final EntitySet entitySet) {
-    super(edm, container, entitySet);
-    this.entitySet = entitySet;
-  }
-
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return entitySet.isIncludeInServiceDocument();
-  }
-
-  @Override
-  public TargetType getAnnotationsTargetType() {
-    return TargetType.EntitySet;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java
deleted file mode 100644
index 4dff2ba..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java
+++ /dev/null
@@ -1,112 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmEntityType;
-import org.apache.olingo.commons.api.edm.EdmKeyPropertyRef;
-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.core.edm.AbstractEdmEntityType;
-import org.apache.olingo.commons.core.edm.EdmStructuredTypeHelper;
-import org.apache.olingo.server.api.edm.provider.EntityType;
-import org.apache.olingo.server.api.edm.provider.PropertyRef;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-public class EdmEntityTypeImpl extends AbstractEdmEntityType {
-
-  private final EdmStructuredTypeHelper helper;
-
-  private EntityType entityType;
-
-  private boolean baseTypeChecked = false;
-
-  public static EdmEntityTypeImpl getInstance(final Edm edm, final FullQualifiedName name,
-      final EntityType entityType) {
-
-    final EdmEntityTypeImpl instance = new EdmEntityTypeImpl(edm, name, entityType);
-    return instance;
-  }
-
-  private EdmEntityTypeImpl(final Edm edm, final FullQualifiedName name, final EntityType entityType) {
-    super(edm, name, entityType.getBaseType(), entityType.hasStream());
-    this.entityType = entityType;
-    helper = new EdmStructuredTypeHelperImpl(edm, name, entityType);
-  }
-
-  @Override
-  protected Map<String, EdmProperty> getProperties() {
-    return helper.getProperties();
-  }
-
-  @Override
-  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
-    return helper.getNavigationProperties();
-  }
-
-  @Override
-  protected void checkBaseType() {
-    if (!baseTypeChecked) {
-      if (baseTypeName != null) {
-        baseType = buildBaseType(baseTypeName);
-        entityBaseType = (EdmEntityType) baseType;
-      }
-      if (baseType == null
-          || (baseType.isAbstract() && ((AbstractEdmEntityType) baseType).getKeyPropertyRefs().size() == 0)) {
-        final List<PropertyRef> key = entityType.getKey();
-        if (key != null) {
-          final List<EdmKeyPropertyRef> edmKey = new ArrayList<EdmKeyPropertyRef>();
-          for (PropertyRef ref : key) {
-            edmKey.add(new EdmKeyPropertyRefImpl(this, ref));
-          }
-          setEdmKeyPropertyRef(edmKey);
-        }
-      }
-      baseTypeChecked = true;
-    }
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return helper.isOpenType();
-  }
-
-  @Override
-  public boolean isAbstract() {
-    return helper.isAbstract();
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java
deleted file mode 100644
index ac1c83d..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java
+++ /dev/null
@@ -1,72 +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.server.core.edm.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmMember;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
-import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.core.edm.AbstractEdmEnumType;
-import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
-import org.apache.olingo.server.api.edm.provider.EnumMember;
-import org.apache.olingo.server.api.edm.provider.EnumType;
-
-public class EdmEnumTypeImpl extends AbstractEdmEnumType {
-
-  private final EdmPrimitiveType underlyingType;
-
-  private final EnumType enumType;
-
-  private List<EdmMember> members;
-
-  public EdmEnumTypeImpl(final Edm edm, final FullQualifiedName enumName, final EnumType enumType) {
-    super(edm, enumName, enumType.isFlags());
-
-    if (enumType.getUnderlyingType() == null) {
-      underlyingType = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32);
-    } else {
-      underlyingType = EdmPrimitiveTypeFactory.getInstance(
-          EdmPrimitiveTypeKind.valueOf(enumType.getUnderlyingType().getName()));
-      // TODO: Should we validate that the underlying type is of byte, sbyte, in16, int32 or int64?
-    }
-
-    this.enumType = enumType;
-  }
-
-  @Override
-  public EdmPrimitiveType getUnderlyingType() {
-    return underlyingType;
-  }
-
-  @Override
-  protected List<? extends EdmMember> getMembers() {
-    if (members == null) {
-      members = new ArrayList<EdmMember>(enumType.getMembers().size());
-      for (EnumMember member : enumType.getMembers()) {
-        members.add(new EdmMemberImpl(edm, getFullQualifiedName(), member.getName(), member.getValue()));
-      }
-    }
-    return members;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java
deleted file mode 100644
index f23e0a8..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java
+++ /dev/null
@@ -1,56 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmException;
-import org.apache.olingo.commons.api.edm.EdmFunction;
-import org.apache.olingo.commons.api.edm.EdmReturnType;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.server.api.edm.provider.Function;
-
-public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction {
-
-  private final Function function;
-
-  public static EdmFunctionImpl getInstance(final Edm edm, final FullQualifiedName name, final Function function) {
-    return EdmOperationImpl.getInstance(new EdmFunctionImpl(edm, name, function));
-  }
-
-  private EdmFunctionImpl(final Edm edm, final FullQualifiedName name, final Function function) {
-    super(edm, name, function, EdmTypeKind.FUNCTION);
-    this.function = function;
-  }
-
-  @Override
-  public boolean isComposable() {
-    return function.isComposable();
-  }
-
-  @Override
-  public EdmReturnType getReturnType() {
-    final EdmReturnType returnType = super.getReturnType();
-    if (returnType == null) {
-      throw new EdmException("ReturnType for a function must not be null");
-    }
-    return returnType;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
deleted file mode 100644
index e07eb9f..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
+++ /dev/null
@@ -1,71 +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.server.core.edm.provider;
-
-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.EdmFunction;
-import org.apache.olingo.commons.api.edm.EdmFunctionImport;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.server.api.edm.provider.FunctionImport;
-
-import java.util.List;
-
-public class EdmFunctionImportImpl extends EdmOperationImportImpl implements EdmFunctionImport {
-
-  private final FunctionImport functionImport;
-
-  public EdmFunctionImportImpl(final Edm edm, final EdmEntityContainer container, final FunctionImport functionImport) {
-
-    super(edm, container, functionImport);
-    this.functionImport = functionImport;
-  }
-
-  @Override
-  public FullQualifiedName getFunctionFqn() {
-    return functionImport.getFunction();
-  }
-
-  @Override
-  public EdmFunction getUnboundFunction(final List<String> parameterNames) {
-    return edm.getUnboundFunction(getFunctionFqn(), parameterNames);
-  }
-
-  @Override
-  public List<EdmFunction> getUnboundFunctions() {
-    return edm.getUnboundFunctions(getFunctionFqn());
-  }
-
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return functionImport.isIncludeInServiceDocument();
-  }
-
-  @Override
-  public TargetType getAnnotationsTargetType() {
-    return TargetType.FunctionImport;
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java
deleted file mode 100644
index 0660ac0..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java
+++ /dev/null
@@ -1,48 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.EdmEntityType;
-import org.apache.olingo.commons.core.edm.AbstractEdmKeyPropertyRef;
-import org.apache.olingo.server.api.edm.provider.PropertyRef;
-
-public class EdmKeyPropertyRefImpl extends AbstractEdmKeyPropertyRef {
-
-  private final PropertyRef ref;
-
-  public EdmKeyPropertyRefImpl(final EdmEntityType edmEntityType, final PropertyRef ref) {
-    super(edmEntityType);
-    this.ref = ref;
-  }
-
-  @Override
-  public String getKeyPropertyName() {
-    return ref.getPropertyName();
-  }
-
-  @Override
-  public String getAlias() {
-    return ref.getAlias();
-  }
-
-  @Override
-  public String getPath() {
-    return ref.getPath();
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java
deleted file mode 100644
index 5ffe031..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java
+++ /dev/null
@@ -1,47 +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.server.core.edm.provider;
-
-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.FullQualifiedName;
-import org.apache.olingo.commons.core.edm.AbstractEdmMember;
-
-import java.util.List;
-
-public class EdmMemberImpl extends AbstractEdmMember {
-
-  public EdmMemberImpl(final Edm edm, final FullQualifiedName enumFQN, final String name, final String value) {
-    super(edm, enumFQN, name, value);
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
deleted file mode 100644
index 7562360..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java
+++ /dev/null
@@ -1,119 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.core.edm.AbstractEdmNavigationProperty;
-import org.apache.olingo.server.api.edm.provider.NavigationProperty;
-import org.apache.olingo.server.api.edm.provider.ReferentialConstraint;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
-
-  private final FullQualifiedName structuredTypeName;
-
-  private final NavigationProperty navigationProperty;
-
-  private List<EdmReferentialConstraint> referentialConstraints;
-
-  public EdmNavigationPropertyImpl(
-      final Edm edm, final FullQualifiedName structuredTypeName, final NavigationProperty navigationProperty) {
-
-    super(edm, navigationProperty.getName());
-
-    this.structuredTypeName = structuredTypeName;
-    this.navigationProperty = navigationProperty;
-  }
-
-  @Override
-  protected FullQualifiedName getTypeFQN() {
-    return navigationProperty.getType();
-  }
-
-  @Override
-  public boolean isCollection() {
-    return navigationProperty.isCollection();
-  }
-
-  @Override
-  public Boolean isNullable() {
-    return navigationProperty.getNullable();
-  }
-
-  @Override
-  public Boolean containsTarget() {
-    return navigationProperty.isContainsTarget();
-  }
-
-  @Override
-  protected String internatGetPartner() {
-    return navigationProperty.getPartner();
-  }
-
-  @Override
-  public String getReferencingPropertyName(final String referencedPropertyName) {
-    final List<ReferentialConstraint> referentialConstraints = navigationProperty.getReferentialConstraints();
-    if (referentialConstraints != null) {
-      for (ReferentialConstraint constraint : referentialConstraints) {
-        if (constraint.getReferencedProperty().equals(referencedPropertyName)) {
-          return constraint.getProperty();
-        }
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public List<EdmReferentialConstraint> getReferentialConstraints() {
-    if (referentialConstraints == null) {
-      final List<ReferentialConstraint> providerConstraints = navigationProperty.getReferentialConstraints();
-      referentialConstraints = new ArrayList<EdmReferentialConstraint>();
-      if (providerConstraints != null) {
-        for (ReferentialConstraint constraint : providerConstraints) {
-          referentialConstraints.add(
-              new EdmReferentialConstraintImpl(constraint.getProperty(), constraint.getReferencedProperty()));
-        }
-      }
-    }
-    return referentialConstraints;
-  }
-
-  @Override
-  public FullQualifiedName getAnnotationsTargetFQN() {
-    return structuredTypeName;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java
deleted file mode 100644
index 0b5a8f2..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java
+++ /dev/null
@@ -1,100 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmParameter;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.commons.core.edm.AbstractEdmOperation;
-import org.apache.olingo.server.api.edm.provider.EntitySetPath;
-import org.apache.olingo.server.api.edm.provider.Operation;
-import org.apache.olingo.server.api.edm.provider.Parameter;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public abstract class EdmOperationImpl extends AbstractEdmOperation {
-
-  protected final Operation operation;
-
-  protected static <T extends EdmOperationImpl> T getInstance(final T instance) {
-    final List<Parameter> providerParameters = instance.operation.getParameters();
-    if (providerParameters != null) {
-      final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(providerParameters.size());
-      for (Parameter parameter : providerParameters) {
-        _parameters.add(new EdmParameterImpl(instance.edm, parameter));
-      }
-      instance.setParameters(_parameters);
-    }
-
-    final EntitySetPath entitySetPath = instance.operation.getEntitySetPath();
-    if (entitySetPath != null && entitySetPath.getPath() != null) {
-      instance.setEntitySetPath(entitySetPath.getPath());
-    }
-
-    instance.setIsBound(instance.operation.isBound());
-
-    if (instance.operation.getReturnType() != null) {
-      instance.setReturnType(new EdmReturnTypeImpl(instance.edm, instance.operation.getReturnType()));
-    }
-
-    return instance;
-  }
-
-  protected EdmOperationImpl(final Edm edm, final FullQualifiedName name, final Operation operation,
-      final EdmTypeKind kind) {
-
-    super(edm, name, kind);
-    this.operation = operation;
-  }
-
-  @Override
-  public FullQualifiedName getBindingParameterTypeFqn() {
-    if (isBound()) {
-      Parameter bindingParameter = operation.getParameters().get(0);
-      return bindingParameter.getType();
-    }
-    return null;
-  }
-
-  @Override
-  public Boolean isBindingParameterTypeCollection() {
-    if (isBound()) {
-      Parameter bindingParameter = operation.getParameters().get(0);
-      return bindingParameter.isCollection();
-    }
-    return null;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java
deleted file mode 100644
index 2cc85d0..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java
+++ /dev/null
@@ -1,48 +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.server.core.edm.provider;
-
-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.EdmTerm;
-import org.apache.olingo.commons.core.edm.AbstractEdmOperationImport;
-import org.apache.olingo.server.api.edm.provider.OperationImport;
-
-import java.util.List;
-
-public abstract class EdmOperationImportImpl extends AbstractEdmOperationImport {
-
-  public EdmOperationImportImpl(final Edm edm, final EdmEntityContainer container,
-      final OperationImport operationImport) {
-    super(edm, container, operationImport.getName(), operationImport.getEntitySet());
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java
deleted file mode 100644
index 53b46d2..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java
+++ /dev/null
@@ -1,86 +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.server.core.edm.provider;
-
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.EdmAnnotation;
-import org.apache.olingo.commons.api.edm.EdmMapping;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.geo.SRID;
-import org.apache.olingo.commons.core.edm.AbstractEdmParameter;
-import org.apache.olingo.server.api.edm.provider.Parameter;
-
-import java.util.List;
-
-public class EdmParameterImpl extends AbstractEdmParameter {
-
-  private final Parameter parameter;
-
-  public EdmParameterImpl(final Edm edm, final Parameter parameter) {
-    super(edm, parameter.getName(), parameter.getType());
-    this.parameter = parameter;
-  }
-
-  @Override
-  public boolean isCollection() {
-    return parameter.isCollection();
-  }
-
-  @Override
-  public EdmMapping getMapping() {
-    return parameter.getMapping();
-  }
-
-  @Override
-  public Boolean isNullable() {
-    return parameter.getNullable();
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return parameter.getMaxLength();
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return parameter.getPrecision();
-  }
-
-  @Override
-  public Integer getScale() {
-    return parameter.getScale();
-  }
-
-  @Override
-  public SRID getSrid() {
-    return null; // TODO: provide implementation
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java
deleted file mode 100644
index 290a952..0000000
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java
+++ /dev/null
@@ -1,120 +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.server.core.edm.provider;
-
-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.EdmMapping;
-import org.apache.olingo.commons.api.edm.EdmTerm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.commons.api.edm.geo.SRID;
-import org.apache.olingo.commons.core.edm.AbstractEdmProperty;
-import org.apache.olingo.commons.core.edm.EdmTypeInfo;
-import org.apache.olingo.server.api.edm.provider.Property;
-
-public class EdmPropertyImpl extends AbstractEdmProperty {
-
-  private final FullQualifiedName structuredTypeName;
-
-  private final Property property;
-
-  private final EdmTypeInfo typeInfo;
-
-  public EdmPropertyImpl(final Edm edm, final FullQualifiedName structuredTypeName, final Property property) {
-    super(edm, property.getName());
-
-    this.structuredTypeName = structuredTypeName;
-    this.property = property;
-    typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(property.getType().toString()).build();
-  }
-
-  @Override
-  public EdmTypeInfo getTypeInfo() {
-    return typeInfo;
-  }
-
-  @Override
-  public boolean isCollection() {
-    return property.isCollection();
-  }
-
-  @Override
-  public EdmMapping getMapping() {
-    return property.getMapping();
-  }
-
-  @Override
-  public String getMimeType() {
-    return property.getMimeType();
-  }
-
-  @Override
-  public Boolean isNullable() {
-    return property.getNullable();
-  }
-
-  @Override
-  public Integer getMaxLength() {
-    return property.getMaxLength();
-  }
-
-  @Override
-  public Integer getPrecision() {
-    return property.getPrecision();
-  }
-
-  @Override
-  public Integer getScale() {
-    return property.getScale();
-  }
-
-  @Override
-  public SRID getSrid() {
-    return null; // TODO: provide implementation
-  }
-
-  @Override
-  public Boolean isUnicode() {
-    return property.isUnicode();
-  }
-
-  @Override
-  public String getDefaultValue() {
-    return property.getDefaultValue();
-  }
-
-  @Override
-  public FullQualifiedName getAnnotationsTargetFQN() {
-    return structuredTypeName;
-  }
-
-  @Override
-  public EdmAnnotation getAnnotation(final EdmTerm term) {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override
-  public List<EdmAnnotation> getAnnotations() {
-    // TODO: implement
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-}