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 2014/01/21 12:24:35 UTC

[2/3] [OLINGO-62] Info interfaces refactoring and tests

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnum.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnum.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnum.java
deleted file mode 100644
index d88a3b2..0000000
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnum.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata4.commons.core.edm.primitivetype;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
-import org.apache.olingo.odata4.commons.api.edm.EdmMember;
-import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
-import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-
-/**
- * Implementation of the EDM enum type.
- * @see EdmEnumType
- */
-final class EdmEnum extends AbstractPrimitiveType implements EdmEnumType {
-
-  private final String namespace;
-  private final String name;
-  private final String fullName;
-  private final EdmPrimitiveType underlyingType;
-  private final List<EdmMember> members;
-  private final Boolean isFlags;
-
-  public EdmEnum(final String namespace, final String name,
-      final EdmPrimitiveType underlyingType, final List<EdmMember> members, final Boolean isFlags) {
-    this.namespace = namespace;
-    this.name = name;
-    fullName = namespace + '.' + name;
-    uriPrefix = fullName + '\'';
-    uriSuffix = "'";
-    this.underlyingType = underlyingType;
-    this.members = members;
-    this.isFlags = isFlags;
-  }
-
-  @Override
-  public String getNamespace() {
-    return namespace;
-  }
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public EdmTypeKind getKind() {
-    return EdmTypeKind.ENUM;
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    return underlyingType.getDefaultType();
-  }
-
-  @Override
-  public EdmMember getMember(final String name) {
-    for (EdmMember member : members) {
-      if (member.getName().equals(name)) {
-        return member;
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public List<String> getMemberNames() {
-    List<String> names = new ArrayList<String>();
-    for (final EdmMember member : members) {
-      names.add(member.getName());
-    }
-    return names;
-  }
-
-  @Override
-  public EdmPrimitiveType getUnderlyingType() {
-    return underlyingType;
-  }
-
-  @Override
-  protected <T> T internalValueOfString(final String value,
-      final Boolean isNullable, final Integer maxLength, final Integer precision,
-      final Integer scale, final Boolean isUnicode, final Class<T> returnType) throws EdmPrimitiveTypeException {
-    try {
-      return EdmInt64.convertNumber(parseEnumValue(value), returnType);
-    } catch (final IllegalArgumentException e) {
-      throw new EdmPrimitiveTypeException(
-          "EdmPrimitiveTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value, returnType), e");
-    } catch (final ClassCastException e) {
-      throw new EdmPrimitiveTypeException(
-          "EdmPrimitiveTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType), e");
-    }
-  }
-
-  protected Long parseEnumValue(final String value) throws EdmPrimitiveTypeException {
-    Long result = null;
-    for (final String memberValue : value.split(",", isFlags ? -1 : 1)) {
-      Long memberValueLong = null;
-      for (final EdmMember member : members) {
-        if (member.getName().equals(memberValue) || member.getValue().equals(memberValue)) {
-          memberValueLong = Long.decode(member.getValue());
-        }
-      }
-      if (memberValueLong == null) {
-        throw new EdmPrimitiveTypeException(
-            "EdmPrimitiveTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value)");
-      }
-      result = result == null ? memberValueLong : result | memberValueLong;
-    }
-    return result;
-  }
-
-  @Override
-  protected String internalValueToString(final Object value,
-      final Boolean isNullable, final Integer maxLength, final Integer precision,
-      final Integer scale, final Boolean isUnicode) throws EdmPrimitiveTypeException {
-    if (value instanceof Byte || value instanceof Short || value instanceof Integer || value instanceof Long) {
-      return constructEnumValue(((Number) value).longValue());
-    } else {
-      throw new EdmPrimitiveTypeException(
-          "EdmPrimitiveTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass())");
-    }
-  }
-
-  protected String constructEnumValue(final long value) throws EdmPrimitiveTypeException {
-    long remaining = value;
-    StringBuilder result = new StringBuilder();
-
-    for (final EdmMember member : members) {
-      final long memberValue = Long.parseLong(member.getValue());
-      if ((memberValue & remaining) == memberValue) {
-        if (result.length() > 0) {
-          result.append(',');
-        }
-        result.append(member.getName());
-        remaining ^= memberValue;
-      }
-    }
-
-    if (remaining != 0) {
-      throw new EdmPrimitiveTypeException(
-          "EdmPrimitiveTypeException.VALUE_ILLEGAL_CONTENT.addContent(value)");
-    }
-    return result.toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuid.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuid.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuid.java
index 90cd9a1..5efde63 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuid.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmGuid.java
@@ -25,7 +25,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type Guid.
  */
-final class EdmGuid extends SingletonPrimitiveType {
+public final class EdmGuid extends SingletonPrimitiveType {
 
   private static final String PATTERN = "\\p{XDigit}{8}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{4}-\\p{XDigit}{12}";
   private static final EdmGuid instance = new EdmGuid();

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16.java
index 9ecac4d..c58712a 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt16.java
@@ -26,7 +26,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type Int16.
  */
-final class EdmInt16 extends SingletonPrimitiveType {
+public final class EdmInt16 extends SingletonPrimitiveType {
 
   private static final EdmInt16 instance = new EdmInt16();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt32.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt32.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt32.java
index 44750cf..08c3a3d 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt32.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt32.java
@@ -26,7 +26,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type Int32.
  */
-final class EdmInt32 extends SingletonPrimitiveType {
+public final class EdmInt32 extends SingletonPrimitiveType {
 
   private static final EdmInt32 instance = new EdmInt32();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt64.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt64.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt64.java
index 1f23d91..bde66df 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt64.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmInt64.java
@@ -26,7 +26,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type Int64.
  */
-final class EdmInt64 extends SingletonPrimitiveType {
+public final class EdmInt64 extends SingletonPrimitiveType {
 
   private static final EdmInt64 instance = new EdmInt64();
 
@@ -81,7 +81,7 @@ final class EdmInt64 extends SingletonPrimitiveType {
    * @throws IllegalArgumentException if the conversion is not possible
    * @throws ClassCastException if the return type is not allowed
    */
-  protected static <T> T convertNumber(final Number value, final Class<T> returnType) throws IllegalArgumentException,
+  public static <T> T convertNumber(final Number value, final Class<T> returnType) throws IllegalArgumentException,
       ClassCastException {
     if (returnType.isAssignableFrom(Long.class)) {
       return returnType.cast(value.longValue());

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmNull.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmNull.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmNull.java
index 8d4d4d6..469b2bd 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmNull.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmNull.java
@@ -24,7 +24,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the simple type Null.
  */
-final class EdmNull extends SingletonPrimitiveType {
+public final class EdmNull extends SingletonPrimitiveType {
 
   private static final EdmNull instance = new EdmNull();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmPrimitiveTypeKind.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmPrimitiveTypeKind.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmPrimitiveTypeKind.java
index 3d8fa94..93f80e3 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmPrimitiveTypeKind.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmPrimitiveTypeKind.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.commons.core.edm.primitivetype;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 
 //TODO: Should we delete this typekind and use a facade?
 public enum EdmPrimitiveTypeKind {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSByte.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSByte.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSByte.java
index 7982b99..0e01117 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSByte.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSByte.java
@@ -26,7 +26,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type SByte.
  */
-final class EdmSByte extends SingletonPrimitiveType {
+public final class EdmSByte extends SingletonPrimitiveType {
 
   private static final EdmSByte instance = new EdmSByte();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSingle.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSingle.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSingle.java
index 234e424..c48c0bd 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSingle.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmSingle.java
@@ -27,7 +27,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type Single.
  */
-final class EdmSingle extends SingletonPrimitiveType {
+public final class EdmSingle extends SingletonPrimitiveType {
 
   private static final Pattern PATTERN = Pattern.compile(
       "(?:\\+|-)?\\p{Digit}{1,9}(?:\\.\\p{Digit}{1,9})?(?:(?:E|e)(?:\\+|-)?\\p{Digit}{1,2})?");

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmString.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmString.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmString.java
index e2d7e0c..5ccb2f6 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmString.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmString.java
@@ -25,7 +25,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the EDM primitive type String.
  */
-final class EdmString extends SingletonPrimitiveType {
+public final class EdmString extends SingletonPrimitiveType {
 
   private static final Pattern PATTERN_ASCII = Pattern.compile("\\p{ASCII}*");
   private static final EdmString instance = new EdmString();

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmTimeOfDay.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmTimeOfDay.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmTimeOfDay.java
index 9b3ab1f..ef34fa9 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmTimeOfDay.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmTimeOfDay.java
@@ -25,7 +25,7 @@ import java.util.regex.Pattern;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 
-final class EdmTimeOfDay extends SingletonPrimitiveType {
+public final class EdmTimeOfDay extends SingletonPrimitiveType {
 
   private static final Pattern PATTERN = Pattern.compile(
       "(\\p{Digit}{2}):(\\p{Digit}{2})(?::(\\p{Digit}{2})(\\.(\\p{Digit}{0,3}?)0*)?)?");

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/SingletonPrimitiveType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/SingletonPrimitiveType.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/SingletonPrimitiveType.java
index 07c23e1..7688aab 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/SingletonPrimitiveType.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/SingletonPrimitiveType.java
@@ -23,7 +23,7 @@ import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
 /**
  * Abstract singleton implementation of the EDM primitive-type interface.
  */
-abstract class SingletonPrimitiveType extends AbstractPrimitiveType {
+public abstract class SingletonPrimitiveType extends AbstractPrimitiveType {
 
   @Override
   public boolean equals(final Object obj) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/Uint7.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/Uint7.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/Uint7.java
index bf057cb..5a48901 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/Uint7.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/Uint7.java
@@ -23,7 +23,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 /**
  * Implementation of the internal primitive type "unsigned 7-bit integer".
  */
-final class Uint7 extends SingletonPrimitiveType {
+public final class Uint7 extends SingletonPrimitiveType {
 
   private static final Uint7 instance = new Uint7();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImpl.java
index 0db129f..eb13549 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImpl.java
@@ -20,8 +20,8 @@ package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Action;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 
 public class EdmActionImpl extends EdmOperationImpl implements EdmAction {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImpl.java
index d8c5394..7a922e5 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImpl.java
@@ -22,8 +22,8 @@ import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
 import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.ComplexType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 
 public class EdmComplexTypeImpl extends EdmStructuralTypeImpl implements EdmComplexType {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
index 2667b08..e462aad 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityContainerImpl.java
@@ -27,11 +27,11 @@ import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
 import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
 import org.apache.olingo.odata4.commons.api.edm.EdmSingleton;
-import org.apache.olingo.odata4.commons.api.edm.helper.EntityContainerInfo;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.ActionImport;
 import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainerInfo;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
 import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
 import org.apache.olingo.odata4.commons.api.exception.ODataException;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
new file mode 100644
index 0000000..9fee4cd
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntitySetInfoImpl.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata4.commons.core.edm.provider;
+
+import java.net.URI;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
+
+public class EdmEntitySetInfoImpl implements EdmEntitySetInfo {
+
+  private final EntityContainer entityContainer;
+  private final EntitySet set;
+
+  public EdmEntitySetInfoImpl(EntityContainer entityContainer, EntitySet set) {
+    this.entityContainer = entityContainer;
+    this.set = set;
+  }
+
+  @Override
+  public String getEntityContainerName() {
+    return entityContainer.getName();
+  }
+
+  @Override
+  public String getEntitySetName() {
+    return set.getName();
+  }
+
+  @Override
+  public URI getEntitySetUri() {
+    return null;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImpl.java
index 9c28775..6f4c0c0 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImpl.java
@@ -27,8 +27,8 @@ import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmKeyPropertyRef;
 import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntityType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.PropertyRef;
 
 public class EdmEntityTypeImpl extends EdmStructuralTypeImpl implements EdmEntityType {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEnumImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEnumImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEnumImpl.java
index 605a051..fd137f6 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEnumImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEnumImpl.java
@@ -18,6 +18,7 @@
  ******************************************************************************/
 package org.apache.olingo.odata4.commons.core.edm.provider;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
@@ -25,57 +26,101 @@ import org.apache.olingo.odata4.commons.api.edm.EdmMember;
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.EnumType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmInt64;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 
 public class EdmEnumImpl extends EdmNamedImpl implements EdmEnumType {
 
   private final FullQualifiedName enumName;
+  private final EdmPrimitiveType edmPrimitiveTypeInstance;
+  private final EnumType enumType;
+  private final String uriPrefix;
+  private final String uriSuffix;
+  private List<String> memberNames;
 
   public EdmEnumImpl(final EdmProviderImpl edm, final FullQualifiedName enumName, final EnumType enumType) {
     super(edm, enumName.getName());
     this.enumName = enumName;
+    this.enumType = enumType;
+    uriPrefix = enumName.getFullQualifiedNameAsString() + '\'';
+    uriSuffix = "'";
+    FullQualifiedName underlyingTypeName = enumType.getUnderlyingType();
+    if (underlyingTypeName == null) {
+      edmPrimitiveTypeInstance = EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance();
+    } else {
+      edmPrimitiveTypeInstance =
+          EdmPrimitiveTypeKind.valueOf(underlyingTypeName.getName()).getEdmPrimitiveTypeInstance();
+      // TODO: Should we validate that the underlying type is of byte, sbyte, in16, int32 or int64?
+    }
+
   }
 
   @Override
   public boolean isCompatible(final EdmPrimitiveType primitiveType) {
-    return false;
+    return this.equals(primitiveType);
   }
 
   @Override
   public Class<?> getDefaultType() {
-    return null;
+    return edmPrimitiveTypeInstance.getDefaultType();
   }
 
   @Override
   public boolean validate(final String value, final Boolean isNullable, final Integer maxLength,
       final Integer precision, final Integer scale,
       final Boolean isUnicode) {
-    return false;
+    try {
+      valueOfString(value, isNullable, maxLength, precision, scale, isUnicode, getDefaultType());
+      return true;
+    } catch (final EdmPrimitiveTypeException e) {
+      return false;
+    }
   }
 
   @Override
-  public <T> T valueOfString(final String value, final Boolean isNullable, final Integer maxLength,
-      final Integer precision, final Integer scale,
-      final Boolean isUnicode, final Class<T> returnType) throws EdmPrimitiveTypeException {
-    return null;
+  public <T> T valueOfString(String value, Boolean isNullable, Integer maxLength, Integer precision, Integer scale,
+      Boolean isUnicode, Class<T> returnType) throws EdmPrimitiveTypeException {
+    if (value == null) {
+      if (isNullable != null && !isNullable) {
+        throw new EdmPrimitiveTypeException("EdmPrimitiveTypeException.LITERAL_NULL_NOT_ALLOWED");
+      }
+      return null;
+    }
+    return internalValueOfString(value, isNullable, maxLength, precision, scale, isUnicode, returnType);
   }
 
   @Override
-  public String valueToString(final Object value, final Boolean isNullable, final Integer maxLength,
-      final Integer precision, final Integer scale,
-      final Boolean isUnicode) throws EdmPrimitiveTypeException {
-    return null;
+  public String valueToString(Object value, Boolean isNullable, Integer maxLength, Integer precision, Integer scale,
+      Boolean isUnicode) throws EdmPrimitiveTypeException {
+    if (value == null) {
+      if (isNullable != null && !isNullable) {
+        throw new EdmPrimitiveTypeException("EdmPrimitiveTypeException.VALUE_NULL_NOT_ALLOWED");
+      }
+      return null;
+    }
+    return internalValueToString(value, isNullable, maxLength, precision, scale, isUnicode);
   }
 
   @Override
   public String toUriLiteral(final String literal) {
-    return null;
+    return literal == null ? null :
+        uriPrefix.isEmpty() && uriSuffix.isEmpty() ? literal : uriPrefix + literal + uriSuffix;
   }
 
   @Override
   public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
-    return null;
+    if (literal == null) {
+      return null;
+    } else if (uriPrefix.isEmpty() && uriSuffix.isEmpty()) {
+      return literal;
+    } else if (literal.length() >= uriPrefix.length() + uriSuffix.length()
+        && literal.startsWith(uriPrefix) && literal.endsWith(uriSuffix)) {
+      return literal.substring(uriPrefix.length(), literal.length() - uriSuffix.length());
+    } else {
+      throw new EdmPrimitiveTypeException("EdmPrimitiveTypeException.LITERAL_ILLEGAL_CONTENT.addContent(literal)");
+    }
   }
 
   @Override
@@ -85,22 +130,97 @@ public class EdmEnumImpl extends EdmNamedImpl implements EdmEnumType {
 
   @Override
   public EdmTypeKind getKind() {
-    return null;
+    return EdmTypeKind.ENUM;
   }
 
   @Override
   public EdmMember getMember(final String name) {
+    for (EdmMember member : enumType.getMembers()) {
+      if (member.getName().equals(name)) {
+        return member;
+      }
+    }
     return null;
   }
 
   @Override
   public List<String> getMemberNames() {
-    return null;
+    if (memberNames == null) {
+      memberNames = new ArrayList<String>();
+      for (final EdmMember member : enumType.getMembers()) {
+        memberNames.add(member.getName());
+      }
+    }
+    return memberNames;
   }
 
   @Override
   public EdmPrimitiveType getUnderlyingType() {
-    return null;
+    return edmPrimitiveTypeInstance;
   }
 
+  private <T> T internalValueOfString(final String value,
+      final Boolean isNullable, final Integer maxLength, final Integer precision,
+      final Integer scale, final Boolean isUnicode, final Class<T> returnType) throws EdmPrimitiveTypeException {
+    try {
+      return EdmInt64.convertNumber(parseEnumValue(value), returnType);
+    } catch (final IllegalArgumentException e) {
+      throw new EdmPrimitiveTypeException(
+          "EdmPrimitiveTypeException.LITERAL_UNCONVERTIBLE_TO_VALUE_TYPE.addContent(value, returnType), e");
+    } catch (final ClassCastException e) {
+      throw new EdmPrimitiveTypeException(
+          "EdmPrimitiveTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType), e");
+    }
+  }
+
+  private Long parseEnumValue(final String value) throws EdmPrimitiveTypeException {
+    Long result = null;
+    for (final String memberValue : value.split(",", enumType.isFlags() ? -1 : 1)) {
+      Long memberValueLong = null;
+      for (final EdmMember member : enumType.getMembers()) {
+        if (member.getName().equals(memberValue) || member.getValue().equals(memberValue)) {
+          memberValueLong = Long.decode(member.getValue());
+        }
+      }
+      if (memberValueLong == null) {
+        throw new EdmPrimitiveTypeException(
+            "EdmPrimitiveTypeException.LITERAL_ILLEGAL_CONTENT.addContent(value)");
+      }
+      result = result == null ? memberValueLong : result | memberValueLong;
+    }
+    return result;
+  }
+
+  protected String internalValueToString(final Object value,
+      final Boolean isNullable, final Integer maxLength, final Integer precision,
+      final Integer scale, final Boolean isUnicode) throws EdmPrimitiveTypeException {
+    if (value instanceof Byte || value instanceof Short || value instanceof Integer || value instanceof Long) {
+      return constructEnumValue(((Number) value).longValue());
+    } else {
+      throw new EdmPrimitiveTypeException(
+          "EdmPrimitiveTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(value.getClass())");
+    }
+  }
+
+  protected String constructEnumValue(final long value) throws EdmPrimitiveTypeException {
+    long remaining = value;
+    StringBuilder result = new StringBuilder();
+
+    for (final EdmMember member : enumType.getMembers()) {
+      final long memberValue = Long.parseLong(member.getValue());
+      if ((memberValue & remaining) == memberValue) {
+        if (result.length() > 0) {
+          result.append(',');
+        }
+        result.append(member.getName());
+        remaining ^= memberValue;
+      }
+    }
+
+    if (remaining != 0) {
+      throw new EdmPrimitiveTypeException(
+          "EdmPrimitiveTypeException.VALUE_ILLEGAL_CONTENT.addContent(value)");
+    }
+    return result.toString();
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImpl.java
index df4dbfe..4050b3d 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImpl.java
@@ -22,7 +22,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
 import org.apache.olingo.odata4.commons.api.edm.EdmReturnType;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Function;
 
 public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
new file mode 100644
index 0000000..e782956
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmFunctionImportInfoImpl.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata4.commons.core.edm.provider;
+
+import java.net.URI;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
+
+public class EdmFunctionImportInfoImpl implements EdmFunctionImportInfo {
+
+  private EntityContainer entityContainer;
+  private FunctionImport functionImport;
+
+  public EdmFunctionImportInfoImpl(EntityContainer entityContainer, FunctionImport functionImport) {
+    this.entityContainer = entityContainer;
+    this.functionImport = functionImport;
+  }
+
+  @Override
+  public String getEntityContainerName() {
+    return entityContainer.getName();
+  }
+
+  @Override
+  public String getFunctionImportName() {
+    return functionImport.getName();
+  }
+
+  @Override
+  public URI getFunctionImportUri() {
+    return null;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmOperationImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmOperationImpl.java
index 2c8cc26..c0abd24 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmOperationImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmOperationImpl.java
@@ -30,8 +30,8 @@ import org.apache.olingo.odata4.commons.api.edm.EdmOperation;
 import org.apache.olingo.odata4.commons.api.edm.EdmParameter;
 import org.apache.olingo.odata4.commons.api.edm.EdmReturnType;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntitySetPath;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Operation;
 import org.apache.olingo.odata4.commons.api.edm.provider.Parameter;
 
@@ -74,26 +74,23 @@ public class EdmOperationImpl extends EdmTypeImpl implements EdmOperation {
   }
 
   @Override
-  public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet, final String path) {
+  public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
     EntitySetPath entitySetPath = operation.getEntitySetPath();
     EdmEntitySet returnedEntitySet = null;
     if (bindingParameterEntitySet != null && entitySetPath != null && entitySetPath.getBindingParameter() != null
         && entitySetPath.getPath() != null) {
-      String finalPath = "";
-      if (path != null) {
-        finalPath = path + "/" + entitySetPath.getPath();
-      } else {
-        finalPath = entitySetPath.getPath();
+      EdmBindingTarget relatedBindingTarget =
+          bindingParameterEntitySet.getRelatedBindingTarget(entitySetPath.getPath());
+      if (relatedBindingTarget == null) {
+        throw new EdmException("Cannot find entity set with path: " + entitySetPath.getPath());
       }
-
-      EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.getRelatedBindingTarget(finalPath);
       if (relatedBindingTarget instanceof EdmEntitySet) {
         returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
       } else {
         throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName() + " must be an entity set");
       }
-    }
 
+    }
     return returnedEntitySet;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmParameterImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmParameterImpl.java
index 5516be3..fbf332a 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmParameterImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmParameterImpl.java
@@ -19,11 +19,11 @@
 package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmMapping;
 import org.apache.olingo.odata4.commons.api.edm.EdmParameter;
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
-import org.apache.olingo.odata4.commons.api.edm.helper.EdmMapping;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Parameter;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmPropertyImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmPropertyImpl.java
index 74b53b1..e7ed654 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmPropertyImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmPropertyImpl.java
@@ -19,11 +19,11 @@
 package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmMapping;
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
-import org.apache.olingo.odata4.commons.api.edm.helper.EdmMapping;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Property;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmProviderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmProviderImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmProviderImpl.java
index 08f5f15..71f2cc9 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmProviderImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmProviderImpl.java
@@ -32,14 +32,14 @@ import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
 import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
 import org.apache.olingo.odata4.commons.api.edm.EdmTypeDefinition;
-import org.apache.olingo.odata4.commons.api.edm.helper.AliasInfo;
-import org.apache.olingo.odata4.commons.api.edm.helper.EntityContainerInfo;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Action;
+import org.apache.olingo.odata4.commons.api.edm.provider.AliasInfo;
 import org.apache.olingo.odata4.commons.api.edm.provider.ComplexType;
 import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainerInfo;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntityType;
 import org.apache.olingo.odata4.commons.api.edm.provider.EnumType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.Function;
 import org.apache.olingo.odata4.commons.api.edm.provider.Parameter;
 import org.apache.olingo.odata4.commons.api.edm.provider.TypeDefinition;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImpl.java
index 50d9788..dd4c1bc 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmReturnTypeImpl.java
@@ -22,7 +22,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmException;
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.odata4.commons.api.edm.EdmReturnType;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.ReturnType;
 import org.apache.olingo.odata4.commons.core.edm.EdmImpl;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
index 454d824..01aed04 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmServiceMetadataImpl.java
@@ -19,22 +19,37 @@
 package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
 import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-import org.apache.olingo.odata4.commons.api.edm.helper.EdmEntitySetInfo;
-import org.apache.olingo.odata4.commons.api.edm.helper.EdmFunctionImportInfo;
-import org.apache.olingo.odata4.commons.api.edm.helper.EdmSingletonInfo;
 import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntitySet;
+import org.apache.olingo.odata4.commons.api.edm.provider.FunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.provider.Schema;
+import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
+import org.apache.olingo.odata4.commons.api.exception.ODataException;
 
 public class EdmServiceMetadataImpl implements EdmServiceMetadata {
 
-  public EdmServiceMetadataImpl(final EdmProvider provider) {}
+  private EdmProvider provider;
+  private ArrayList<EdmEntitySetInfo> entitySetInfos;
+  private ArrayList<EdmFunctionImportInfo> functionImportInfos;
+  private ArrayList<EdmSingletonInfo> singletonInfos;
+
+  public EdmServiceMetadataImpl(final EdmProvider provider) {
+    this.provider = provider;
+  }
 
   @Override
   public InputStream getMetadata() {
-    return null;
+    throw new RuntimeException("Not yet implemented");
   }
 
   @Override
@@ -44,17 +59,56 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
 
   @Override
   public List<EdmEntitySetInfo> getEntitySetInfos() {
-    return null;
+    if (entitySetInfos == null) {
+      try {
+        entitySetInfos = new ArrayList<EdmEntitySetInfo>();
+        for (Schema schema : provider.getSchemas()) {
+          EntityContainer entityContainer = schema.getEntityContainer();
+          for (EntitySet set : entityContainer.getEntitySets()) {
+            entitySetInfos.add(new EdmEntitySetInfoImpl(entityContainer, set));
+          }
+        }
+      } catch (ODataException e) {
+        throw new EdmException(e);
+      }
+    }
+    return entitySetInfos;
   }
 
   @Override
   public List<EdmSingletonInfo> getSingletonInfos() {
-    return null;
+    if (singletonInfos == null) {
+      try {
+        singletonInfos = new ArrayList<EdmSingletonInfo>();
+        for (Schema schema : provider.getSchemas()) {
+          EntityContainer entityContainer = schema.getEntityContainer();
+          for (Singleton singleton : entityContainer.getSingletons()) {
+            singletonInfos.add(new EdmSingletonInfoImpl(entityContainer, singleton));
+          }
+        }
+      } catch (ODataException e) {
+        throw new EdmException(e);
+      }
+    }
+    return singletonInfos;
   }
 
   @Override
   public List<EdmFunctionImportInfo> getFunctionImportInfos() {
-    return null;
+    if (functionImportInfos == null) {
+      try {
+        functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
+        for (Schema schema : provider.getSchemas()) {
+          EntityContainer entityContainer = schema.getEntityContainer();
+          for (FunctionImport functionImport : entityContainer.getFunctionImports()) {
+            functionImportInfos.add(new EdmFunctionImportInfoImpl(entityContainer, functionImport));
+          }
+        }
+      } catch (ODataException e) {
+        throw new EdmException(e);
+      }
+    }
+    return functionImportInfos;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
new file mode 100644
index 0000000..b96dbbe
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmSingletonInfoImpl.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata4.commons.core.edm.provider;
+
+import java.net.URI;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.provider.Singleton;
+
+public class EdmSingletonInfoImpl implements EdmSingletonInfo {
+
+  private final EntityContainer entityContainer;
+  private final Singleton singleton;
+
+  public EdmSingletonInfoImpl(EntityContainer entityContainer, Singleton singleton) {
+    this.entityContainer = entityContainer;
+    this.singleton = singleton;
+  }
+
+  @Override
+  public String getEntityContainerName() {
+    return entityContainer.getName();
+  }
+
+  @Override
+  public String getSingletonName() {
+    return singleton.getName();
+  }
+
+  @Override
+  public URI getEntitySetUri() {
+    return null;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmStructuralTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmStructuralTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmStructuralTypeImpl.java
index bbd2e84..e0a2465 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmStructuralTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmStructuralTypeImpl.java
@@ -27,7 +27,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmElement;
 import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.NavigationProperty;
 import org.apache.olingo.odata4.commons.api.edm.provider.Property;
 import org.apache.olingo.odata4.commons.api.edm.provider.StructuralType;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeDefinitionImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeDefinitionImpl.java
index d890242..50a112d 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeDefinitionImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeDefinitionImpl.java
@@ -22,58 +22,66 @@ import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.odata4.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.odata4.commons.api.edm.EdmTypeDefinition;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.TypeDefinition;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 
 public class EdmTypeDefinitionImpl extends EdmNamedImpl implements EdmTypeDefinition {
 
   private final FullQualifiedName typeDefinitionName;
+  private TypeDefinition typeDefinition;
+  private EdmPrimitiveType edmPrimitiveTypeInstance;
 
   public EdmTypeDefinitionImpl(final EdmProviderImpl edm, final FullQualifiedName typeDefinitionName,
       final TypeDefinition typeDefinition) {
     super(edm, typeDefinitionName.getName());
     this.typeDefinitionName = typeDefinitionName;
+    this.typeDefinition = typeDefinition;
+    //TODO: Should we check for edmNamespace in the underlying type name?
+    this.edmPrimitiveTypeInstance =
+        EdmPrimitiveTypeKind.valueOf(typeDefinition.getUnderlyingType().getName()).getEdmPrimitiveTypeInstance();
   }
 
   @Override
   public boolean isCompatible(final EdmPrimitiveType primitiveType) {
-    return false;
+    return edmPrimitiveTypeInstance.isCompatible(primitiveType);
   }
 
   @Override
   public Class<?> getDefaultType() {
-    return null;
+    return edmPrimitiveTypeInstance.getDefaultType();
   }
 
   @Override
   public boolean validate(final String value, final Boolean isNullable, final Integer maxLength,
       final Integer precision, final Integer scale,
       final Boolean isUnicode) {
-    return false;
+    return edmPrimitiveTypeInstance.validate(value, isNullable, maxLength, precision, scale, isUnicode);
   }
 
   @Override
   public <T> T valueOfString(final String value, final Boolean isNullable, final Integer maxLength,
       final Integer precision, final Integer scale,
       final Boolean isUnicode, final Class<T> returnType) throws EdmPrimitiveTypeException {
-    return null;
+    return edmPrimitiveTypeInstance
+        .valueOfString(value, isNullable, maxLength, precision, scale, isUnicode, returnType);
   }
 
   @Override
   public String valueToString(final Object value, final Boolean isNullable, final Integer maxLength,
       final Integer precision, final Integer scale,
       final Boolean isUnicode) throws EdmPrimitiveTypeException {
-    return null;
+    return edmPrimitiveTypeInstance.valueToString(value, isNullable, maxLength, precision, scale, isUnicode);
   }
 
   @Override
   public String toUriLiteral(final String literal) {
-    return null;
+    return edmPrimitiveTypeInstance.toUriLiteral(literal);
   }
 
   @Override
   public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
-    return null;
+    return edmPrimitiveTypeInstance.fromUriLiteral(literal);
   }
 
   @Override
@@ -83,31 +91,31 @@ public class EdmTypeDefinitionImpl extends EdmNamedImpl implements EdmTypeDefini
 
   @Override
   public EdmTypeKind getKind() {
-    return null;
+    return EdmTypeKind.DEFINITION;
   }
 
   @Override
   public EdmPrimitiveType getUnderlyingType() {
-    return null;
+    return edmPrimitiveTypeInstance;
   }
 
   @Override
   public Integer getMaxLength() {
-    return null;
+    return typeDefinition.getMaxLength();
   }
 
   @Override
   public Integer getPrecision() {
-    return null;
+    return typeDefinition.getPrecision();
   }
 
   @Override
   public Integer getScale() {
-    return null;
+    return typeDefinition.getScale();
   }
 
   @Override
   public Boolean isUnicode() {
-    return null;
+    return typeDefinition.getIsUnicode();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeImpl.java
index b666643..96c8861 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmTypeImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 
 public abstract class EdmTypeImpl extends EdmNamedImpl implements EdmType {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/ActionMapKeyTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/ActionMapKeyTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/ActionMapKeyTest.java
index 02759c8..54dbb1d 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/ActionMapKeyTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/ActionMapKeyTest.java
@@ -21,7 +21,7 @@ package org.apache.olingo.odata4.commons.core.edm;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotSame;
 
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.junit.Test;
 
 public class ActionMapKeyTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCachingTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCachingTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCachingTest.java
index 05bb007..a117ac8 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCachingTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCachingTest.java
@@ -40,7 +40,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
 import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
 import org.apache.olingo.odata4.commons.api.edm.EdmTypeDefinition;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCallCreateTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCallCreateTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCallCreateTest.java
index 05612ee..533869e 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCallCreateTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/EdmImplCallCreateTest.java
@@ -37,7 +37,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
 import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
 import org.apache.olingo.odata4.commons.api.edm.EdmTypeDefinition;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
index 775dc8a..fa4c205 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/FunctionMapKeyTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertNotSame;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.junit.Test;
 
 public class FunctionMapKeyTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java
deleted file mode 100644
index 883e7d7..0000000
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/primitivetype/EdmEnumTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- ******************************************************************************/
-package org.apache.olingo.odata4.commons.core.edm.primitivetype;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmEnumType;
-import org.apache.olingo.odata4.commons.api.edm.EdmMember;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.junit.Test;
-
-public class EdmEnumTest extends PrimitiveTypeBaseTest {
-
-  private final EdmEnumType instance;
-
-  public EdmEnumTest() {
-    EdmMember member1 = mock(EdmMember.class);
-    when(member1.getName()).thenReturn("first");
-    when(member1.getValue()).thenReturn("1");
-    EdmMember member2 = mock(EdmMember.class);
-    when(member2.getName()).thenReturn("second");
-    when(member2.getValue()).thenReturn("64");
-    instance = new EdmEnum("namespace", "name",
-        EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance(),
-        Arrays.asList(member1, member2),
-        true);
-  }
-
-  @Test
-  public void nameSpace() throws Exception {
-    assertEquals("namespace", instance.getNamespace());
-  }
-
-  @Test
-  public void name() throws Exception {
-    assertEquals("name", instance.getName());
-  }
-
-  @Test
-  public void kind() throws Exception {
-    assertEquals(EdmTypeKind.ENUM, instance.getKind());
-  }
-
-  @Test
-  public void compatibility() {
-    assertTrue(instance.isCompatible(instance));
-    assertFalse(instance.isCompatible(instance.getUnderlyingType()));
-  }
-
-  @Test
-  public void defaultType() throws Exception {
-    assertEquals(Byte.class, instance.getDefaultType());
-  }
-
-  @Test
-  public void members() throws Exception {
-    assertArrayEquals(new String[] { "first", "second" }, instance.getMemberNames().toArray());
-    assertEquals("64", instance.getMember("second").getValue());
-    assertNull(instance.getMember("notExisting"));
-  }
-
-  @Test
-  public void underlyingType() throws Exception {
-    assertEquals(EdmPrimitiveTypeKind.SByte.getEdmPrimitiveTypeInstance(), instance.getUnderlyingType());
-  }
-
-  @Test
-  public void validate() throws Exception {
-    assertTrue(instance.validate(null, null, null, null, null, null));
-    assertTrue(instance.validate(null, true, null, null, null, null));
-    assertFalse(instance.validate(null, false, null, null, null, null));
-    assertFalse(instance.validate("", null, null, null, null, null));
-    assertFalse(instance.validate("something", null, null, null, null, null));
-
-    assertTrue(instance.validate("second", null, null, null, null, null));
-    assertTrue(instance.validate("first,second", null, null, null, null, null));
-    assertTrue(instance.validate("64", null, null, null, null, null));
-    assertTrue(instance.validate("1,64", null, null, null, null, null));
-  }
-
-  @Test
-  public void toUriLiteral() throws Exception {
-    assertNull(instance.toUriLiteral(null));
-    assertEquals("namespace.name'first'", instance.toUriLiteral("first"));
-  }
-
-  @Test
-  public void fromUriLiteral() throws Exception {
-    assertNull(instance.fromUriLiteral(null));
-    assertEquals("first", instance.fromUriLiteral("namespace.name'first'"));
-
-    expectErrorInFromUriLiteral(instance, "");
-    expectErrorInFromUriLiteral(instance, "name'first'");
-    expectErrorInFromUriLiteral(instance, "namespace.name'first");
-    expectErrorInFromUriLiteral(instance, "namespace.namespace'first");
-  }
-
-  @Test
-  public void valueToString() throws Exception {
-    assertNull(instance.valueToString(null, null, null, null, null, null));
-    assertNull(instance.valueToString(null, true, null, null, null, null));
-    assertEquals("first", instance.valueToString(1, null, null, null, null, null));
-    assertEquals("first", instance.valueToString((byte) 1, null, null, null, null, null));
-    assertEquals("first", instance.valueToString((short) 1, null, null, null, null, null));
-    assertEquals("second", instance.valueToString(Integer.valueOf(64), null, null, null, null, null));
-    assertEquals("second", instance.valueToString(64L, null, null, null, null, null));
-    assertEquals("first,second", instance.valueToString(65, null, null, null, null, null));
-
-    expectNullErrorInValueToString(instance);
-    expectContentErrorInValueToString(instance, 3);
-    expectTypeErrorInValueToString(instance, 1.0);
-  }
-
-  @Test
-  public void valueOfString() throws Exception {
-    assertNull(instance.valueOfString(null, null, null, null, null, null, Byte.class));
-    assertNull(instance.valueOfString(null, true, null, null, null, null, Byte.class));
-    assertEquals(Short.valueOf((short) 1), instance.valueOfString("1", null, null, null, null, null, Short.class));
-    assertEquals(Integer.valueOf(1), instance.valueOfString("1", null, null, null, null, null, Integer.class));
-    assertEquals(Long.valueOf(64L), instance.valueOfString("64", null, null, null, null, null, Long.class));
-    assertEquals(Long.valueOf(1), instance.valueOfString("first", null, null, null, null, null, Long.class));
-    assertEquals(Byte.valueOf((byte) 65), instance.valueOfString("first,64", null, null, null, null, null, Byte.class));
-    assertEquals(Integer.valueOf(1), instance.valueOfString("1,1,first", null, null, null, null, null, Integer.class));
-
-    final EdmEnumType nonFlagsInstance = new EdmEnum("namespace", "name",
-        instance.getUnderlyingType(),
-        Arrays.asList(instance.getMember("first"), instance.getMember("second")),
-        false);
-    assertEquals(Integer.valueOf(1), nonFlagsInstance.valueOfString("1", null, null, null, null, null, Integer.class));
-    expectContentErrorInValueOfString(nonFlagsInstance, "1,64");
-
-    expectNullErrorInValueOfString(instance);
-    expectContentErrorInValueOfString(instance, "2");
-    expectContentErrorInValueOfString(instance, "1,");
-    expectContentErrorInValueOfString(instance, ",1");
-    expectTypeErrorInValueOfString(instance, "1");
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImplTest.java
new file mode 100644
index 0000000..58dd9da
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmActionImplTest.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
+package org.apache.olingo.odata4.commons.core.edm.provider;
+
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.olingo.odata4.commons.api.edm.provider.Action;
+import org.apache.olingo.odata4.commons.api.edm.provider.EntitySetPath;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.provider.Parameter;
+import org.apache.olingo.odata4.commons.api.edm.provider.ReturnType;
+import org.junit.Before;
+
+public class EdmActionImplTest {
+
+  private EdmActionImpl actionImpl1;
+  private EdmActionImpl actionImpl2;
+  private EdmActionImpl actionImpl3;
+
+  @Before
+  public void setup() {
+    EdmProviderImpl provider = mock(EdmProviderImpl.class);
+    List<Parameter> parameters = new ArrayList<Parameter>();
+    parameters.add(new Parameter().setName("Id").setType(new FullQualifiedName("namespace", "name")));
+    FullQualifiedName action1Name = new FullQualifiedName("namespace", "action1");
+    Action action1 = new Action().setName("action1").setBound(true).setParameters(parameters);
+    actionImpl1 = new EdmActionImpl(provider, action1Name, action1);
+
+    FullQualifiedName action2Name = new FullQualifiedName("namespace", "action2");
+    FullQualifiedName returnTypeName = new FullQualifiedName("returnNamespace", "returnName");
+    ReturnType returnType = new ReturnType().setType(returnTypeName);
+    Action action2 = new Action().setName("action2").setParameters(parameters).setReturnType(returnType);
+    actionImpl2 = new EdmActionImpl(provider, action2Name, action2);
+
+    FullQualifiedName action3Name = new FullQualifiedName("namespace", "action3");
+    EntitySetPath entitySetPath = new EntitySetPath().setBindingParameter("Id").setPath("path");
+    Action action3 =
+        new Action().setName("action3").setParameters(parameters).setReturnType(returnType).setEntitySetPath(
+            entitySetPath);
+    actionImpl3 = new EdmActionImpl(provider, action3Name, action3);
+
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImplTest.java
index 622ef04..a581ced 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImplTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmComplexTypeImplTest.java
@@ -30,9 +30,9 @@ import java.util.List;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
 import org.apache.olingo.odata4.commons.api.edm.EdmElement;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.ComplexType;
 import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.NavigationProperty;
 import org.apache.olingo.odata4.commons.api.edm.provider.Property;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/49544671/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImplTest.java
index cd58d82..f5e5586 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImplTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmEntityTypeImplTest.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.commons.core.edm.provider;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -33,10 +34,10 @@ import org.apache.olingo.odata4.commons.api.edm.EdmElement;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
 import org.apache.olingo.odata4.commons.api.edm.EdmKeyPropertyRef;
 import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
-import org.apache.olingo.odata4.commons.api.edm.helper.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.ComplexType;
 import org.apache.olingo.odata4.commons.api.edm.provider.EdmProvider;
 import org.apache.olingo.odata4.commons.api.edm.provider.EntityType;
+import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.provider.NavigationProperty;
 import org.apache.olingo.odata4.commons.api.edm.provider.Property;
 import org.apache.olingo.odata4.commons.api.edm.provider.PropertyRef;
@@ -113,6 +114,11 @@ public class EdmEntityTypeImplTest {
 
     typeWithComplexKey = new EdmEntityTypeImpl(edm, typeWithComplexKeyName, typeWithComplexKeyProvider);
   }
+  
+  @Test
+  public void hasStream(){
+    assertFalse(typeWithBaseType.hasStream());
+  }
 
   @Test
   public void complexKeyWithAlias() {
@@ -175,9 +181,6 @@ public class EdmEntityTypeImplTest {
     assertEquals("Id", keyPropertyRef.getKeyPropertyName());
     assertNull(keyPropertyRef.getAlias());
 
-    // Should we support this?
-    // EdmPoperty keyProperty = keyPropertyRef.getProperty();
-
     List<EdmKeyPropertyRef> keyPropertyRefs = typeWithBaseType.getKeyPropertyRefs();
     assertNotNull(keyPropertyRefs);
     assertEquals(1, keyPropertyRefs.size());