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

[15/57] [abbrv] [OLINGO-169] Introducing V3 and V4 metadata parsing tests - still using dummy Edm interfaces

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityKeyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityKeyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityKeyDeserializer.java
deleted file mode 100644
index 7610817..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityKeyDeserializer.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.odata4.client.core.data.impl;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.olingo.odata4.client.core.edm.EntityKeyImpl;
-import org.apache.olingo.odata4.client.core.edm.PropertyRefImpl;
-
-public class EntityKeyDeserializer extends AbstractEdmDeserializer<EntityKeyImpl> {
-
-  @Override
-  protected EntityKeyImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final EntityKeyImpl entityKey = new EntityKeyImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-
-      if (token == JsonToken.FIELD_NAME && "PropertyRef".equals(jp.getCurrentName())) {
-        jp.nextToken();
-        entityKey.getPropertyRefs().add(jp.getCodec().readValue(jp, PropertyRefImpl.class));
-      }
-    }
-
-    return entityKey;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntitySetDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntitySetDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntitySetDeserializer.java
deleted file mode 100644
index 4b9e66b..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntitySetDeserializer.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.data.impl;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntitySet;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.NavigationPropertyBindingImpl;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-public class EntitySetDeserializer extends AbstractEdmDeserializer<AbstractEntitySet> {
-
-  @Override
-  protected AbstractEntitySet doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AbstractEntitySet entitySet = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.EntitySetImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          entitySet.setName(jp.nextTextValue());
-        } else if ("EntityType".equals(jp.getCurrentName())) {
-          entitySet.setEntityType(jp.nextTextValue());
-        } else if ("IncludeInServiceDocument".equals(jp.getCurrentName())) {
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl) entitySet).
-                  setIncludeInServiceDocument(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl) entitySet).
-                  getNavigationPropertyBindings().add(
-                          jp.getCodec().readValue(jp, NavigationPropertyBindingImpl.class));
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl) entitySet).
-                  setAnnotation(jp.getCodec().readValue(jp, AnnotationImpl.class));
-        }
-      }
-    }
-
-    return entitySet;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityTypeDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityTypeDeserializer.java
deleted file mode 100644
index c6fa3a4..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EntityTypeDeserializer.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.data.impl;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntityType;
-import org.apache.olingo.odata4.client.core.edm.EntityKeyImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEntityType> {
-
-  @Override
-  protected AbstractEntityType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AbstractEntityType entityType = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          entityType.setName(jp.nextTextValue());
-        } else if ("Abstract".equals(jp.getCurrentName())) {
-          entityType.setAbstractEntityType(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("BaseType".equals(jp.getCurrentName())) {
-          entityType.setBaseType(jp.nextTextValue());
-        } else if ("OpenType".equals(jp.getCurrentName())) {
-          entityType.setOpenType(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("HasStream".equals(jp.getCurrentName())) {
-          entityType.setHasStream(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("Key".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          entityType.setKey(jp.getCodec().readValue(jp, EntityKeyImpl.class));
-        } else if ("Property".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (entityType instanceof org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl) entityType).
-                    getProperties().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.PropertyImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl) entityType).
-                    getProperties().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.PropertyImpl.class));
-          }
-        } else if ("NavigationProperty".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (entityType instanceof org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl) entityType).
-                    getNavigationProperties().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.NavigationPropertyImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl) entityType).
-                    getNavigationProperties().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.NavigationPropertyImpl.class));
-          }
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl) entityType).
-                  setAnnotation(jp.getCodec().readValue(jp, AnnotationImpl.class));
-        }
-      }
-    }
-
-    return entityType;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EnumTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EnumTypeDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EnumTypeDeserializer.java
deleted file mode 100644
index 9d3a563..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/EnumTypeDeserializer.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.odata4.client.core.data.impl;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.edm.AbstractEnumType;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-public class EnumTypeDeserializer extends AbstractEdmDeserializer<AbstractEnumType> {
-
-  @Override
-  protected AbstractEnumType doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AbstractEnumType enumType = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.EnumTypeImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          enumType.setName(jp.nextTextValue());
-        } else if ("UnderlyingType".equals(jp.getCurrentName())) {
-          enumType.setUnderlyingType(jp.nextTextValue());
-        } else if ("IsFlags".equals(jp.getCurrentName())) {
-          enumType.setFlags(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("Member".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (enumType instanceof org.apache.olingo.odata4.client.core.edm.v3.EnumTypeImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.EnumTypeImpl) enumType).
-                    getMembers().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.MemberImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl) enumType).
-                    getMembers().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.MemberImpl.class));
-          }
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl) enumType).
-                  setAnnotation(jp.getCodec().readValue(jp, AnnotationImpl.class));
-        }
-      }
-    }
-
-    return enumType;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/InjectableSerializerProvider.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/InjectableSerializerProvider.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/InjectableSerializerProvider.java
deleted file mode 100644
index e5e8b93..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/InjectableSerializerProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.data.impl;
-
-import com.fasterxml.jackson.databind.SerializationConfig;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider;
-import com.fasterxml.jackson.databind.ser.SerializerFactory;
-
-class InjectableSerializerProvider extends DefaultSerializerProvider {
-
-  private static final long serialVersionUID = 3432260063063739646L;
-
-  public InjectableSerializerProvider(
-          final SerializerProvider src, final SerializationConfig config, final SerializerFactory factory) {
-
-    super(src, config, factory);
-  }
-
-  @Override
-  public InjectableSerializerProvider createInstance(
-          final SerializationConfig config, final SerializerFactory factory) {
-
-    return this;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/SchemaDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/SchemaDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/SchemaDeserializer.java
deleted file mode 100644
index cd622ce..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/SchemaDeserializer.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.data.impl;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.olingo.odata4.client.core.edm.AbstractSchema;
-import org.apache.olingo.odata4.client.core.edm.v3.AssociationImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.UsingImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.ValueTermImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.ActionImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.FunctionImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.TypeDefinitionImpl;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-@SuppressWarnings("rawtypes")
-public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema> {
-
-  @Override
-  protected AbstractSchema doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AbstractSchema schema = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Namespace".equals(jp.getCurrentName())) {
-          schema.setNamespace(jp.nextTextValue());
-        } else if ("Alias".equals(jp.getCurrentName())) {
-          schema.setAlias(jp.nextTextValue());
-        } else if ("Using".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                  getUsings().add(jp.getCodec().readValue(jp, UsingImpl.class));
-        } else if ("Association".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                  getAssociations().add(jp.getCodec().readValue(jp, AssociationImpl.class));
-        } else if ("ComplexType".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (schema instanceof org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                    getComplexTypes().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.ComplexTypeImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
-                    getComplexTypes().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl.class));
-          }
-        } else if ("EntityType".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (schema instanceof org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                    getEntityTypes().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
-                    getEntityTypes().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl.class));
-          }
-        } else if ("EnumType".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (schema instanceof org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                    getEnumTypes().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.EnumTypeImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
-                    getEnumTypes().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl.class));
-          }
-        } else if ("ValueTerm".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                  getValueTerms().add(jp.getCodec().readValue(jp, ValueTermImpl.class));
-        } else if ("EntityContainer".equals(jp.getCurrentName())) {
-          jp.nextToken();
-
-          if (schema instanceof org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
-                    getEntityContainers().add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl.class));
-          } else {
-            org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl entityContainer
-                    = jp.getCodec().readValue(jp,
-                            org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl.class);
-            entityContainer.setDefaultEntityContainer(true);
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
-                    setEntityContainer(entityContainer);
-          }
-        } else if ("Annotations".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          if (schema instanceof org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).getAnnotationsList().
-                    add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v3.AnnotationsImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getAnnotationsList().
-                    add(jp.getCodec().readValue(jp,
-                                    org.apache.olingo.odata4.client.core.edm.v4.AnnotationsImpl.class));
-          }
-        } else if ("Action".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getActions().
-                  add(jp.getCodec().readValue(jp, ActionImpl.class));
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getAnnotations().
-                  add(jp.getCodec().readValue(jp, AnnotationImpl.class));
-        } else if ("Function".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getFunctions().
-                  add(jp.getCodec().readValue(jp, FunctionImpl.class));
-        } else if ("TypeDefinition".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
-                  getTypeDefinitions().add(jp.getCodec().readValue(jp, TypeDefinitionImpl.class));
-        }
-      }
-    }
-
-    return schema;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataDeserializerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataDeserializerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataDeserializerImpl.java
index 962f4b7..a00eba7 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataDeserializerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataDeserializerImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.data.impl.v3;
 
 import java.io.InputStream;
 import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractODataDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractODataDeserializer;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmxImpl;
 
 public class ODataDeserializerImpl extends AbstractODataDeserializer {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
index 28898de..1be5f4b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataReaderImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.data.impl.v3;
 
 import java.io.InputStream;
 import org.apache.olingo.odata4.client.core.ODataV3Client;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractODataReader;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractODataReader;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmMetadataImpl;
 
 public class ODataReaderImpl extends AbstractODataReader {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataSerializerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataSerializerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataSerializerImpl.java
index d13bca5..32111be 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataSerializerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v3/ODataSerializerImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.data.impl.v3;
 
 import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractODataSerializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractODataSerializer;
 
 public class ODataSerializerImpl extends AbstractODataSerializer {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataDeserializerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataDeserializerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataDeserializerImpl.java
index 1b12016..2f3682c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataDeserializerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataDeserializerImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.data.impl.v4;
 
 import java.io.InputStream;
 import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractODataDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractODataDeserializer;
 import org.apache.olingo.odata4.client.core.edm.v4.EdmxImpl;
 
 public class ODataDeserializerImpl extends AbstractODataDeserializer {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataReaderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataReaderImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataReaderImpl.java
index 10904ea..05989c8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataReaderImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataReaderImpl.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.data.impl.v4;
 
 import java.io.InputStream;
 import org.apache.olingo.odata4.client.core.ODataV4Client;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractODataReader;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractODataReader;
 import org.apache.olingo.odata4.client.core.edm.v4.EdmMetadataImpl;
 
 public class ODataReaderImpl extends AbstractODataReader {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataSerializerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataSerializerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataSerializerImpl.java
index a56afc1..c58e0fb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataSerializerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/data/impl/v4/ODataSerializerImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.data.impl.v4;
 
 import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractODataSerializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractODataSerializer;
 
 public class ODataSerializerImpl extends AbstractODataSerializer {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
index ebda229..f3861c8 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.ComplexType;
-import org.apache.olingo.odata4.client.core.data.impl.ComplexTypeDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.ComplexTypeDeserializer;
 
 @JsonDeserialize(using = ComplexTypeDeserializer.class)
 public abstract class AbstractComplexType extends AbstractEdmItem implements ComplexType {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmType.java
new file mode 100644
index 0000000..c2d862b
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmType.java
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.odata4.client.api.data.EdmSimpleType;
+import org.apache.olingo.odata4.client.api.edm.EdmType;
+import org.apache.olingo.odata4.client.api.edm.EdmTypeNotFoundException;
+
+/**
+ * Parse type information from metadata into semantic data.
+ */
+public abstract class AbstractEdmType<META extends AbstractEdmMetadata<
+        EDMX, DS, S, EC, E, C, FI>, EDMX extends AbstractEdmx<DS, S, EC, E, C, FI>, DS extends AbstractDataServices<
+        S, EC, E, C, FI>, S extends AbstractSchema<EC, E, C, FI>, EC extends AbstractEntityContainer<
+        FI>, E extends AbstractEntityType, C extends AbstractComplexType, FI extends AbstractFunctionImport>
+        implements EdmType {
+
+  private final String typeExpression;
+
+  private final String baseType;
+
+  private final String namespaceOrAlias;
+
+  private boolean collection;
+
+  private EdmSimpleType simpleType;
+
+  private AbstractEnumType enumType;
+
+  private C complexType;
+
+  private E entityType;
+
+  /**
+   * Constructor.
+   *
+   * @param typeExpression type expression.
+   */
+  public AbstractEdmType(final String typeExpression) {
+    this(null, typeExpression);
+  }
+
+  /**
+   * Constructor.
+   *
+   * @param metadata metadata.
+   * @param typeExpression type expression.
+   */
+  public AbstractEdmType(final META metadata, final String typeExpression) {
+    this.typeExpression = typeExpression;
+
+    final int collectionStartIdx = typeExpression.indexOf("Collection(");
+    final int collectionEndIdx = typeExpression.lastIndexOf(')');
+    if (collectionStartIdx == -1) {
+      baseType = typeExpression;
+    } else {
+      if (collectionEndIdx == -1) {
+        throw new IllegalArgumentException("Malformed type: " + typeExpression);
+      }
+
+      this.collection = true;
+      baseType = typeExpression.substring(collectionStartIdx + 11, collectionEndIdx);
+    }
+
+    final int lastDotIdx = baseType.lastIndexOf('.');
+    if (lastDotIdx == -1) {
+      throw new IllegalArgumentException("Cannot find namespace or alias in " + typeExpression);
+    }
+    namespaceOrAlias = baseType.substring(0, lastDotIdx);
+    final String typeName = baseType.substring(lastDotIdx + 1);
+    if (StringUtils.isBlank(typeName)) {
+      throw new IllegalArgumentException("Null or empty type name in " + typeExpression);
+    }
+
+    if (namespaceOrAlias.equals(EdmSimpleType.namespace())) {
+      this.simpleType = EdmSimpleType.fromValue(EdmSimpleType.namespace() + "." + typeName);
+    } else if (metadata != null) {
+      if (!metadata.isNsOrAlias(namespaceOrAlias)) {
+        throw new IllegalArgumentException("Illegal namespace or alias: " + namespaceOrAlias);
+      }
+      final S schema = metadata.getSchema(namespaceOrAlias);
+
+      for (AbstractEnumType type : schema.getEnumTypes()) {
+        if (typeName.equals(type.getName())) {
+          this.enumType = type;
+        }
+      }
+      if (this.enumType == null) {
+        for (C type : schema.getComplexTypes()) {
+          if (typeName.equals(type.getName())) {
+            this.complexType = type;
+          }
+        }
+        if (this.complexType == null) {
+          for (E type : schema.getEntityTypes()) {
+            if (typeName.equals(type.getName())) {
+              this.entityType = type;
+            }
+          }
+        }
+      }
+
+      if (!isSimpleType() && !isEnumType() && !isComplexType() && !isEntityType()) {
+        throw new IllegalArgumentException("Could not parse type information out of " + typeExpression);
+      }
+    }
+  }
+
+  /**
+   * Checks if is a collection.
+   *
+   * @return 'TRUE' if is a collection; 'FALSE' otherwise.
+   */
+  @Override
+  public final boolean isCollection() {
+    return this.collection;
+  }
+
+  /**
+   * Checks if is a simple type.
+   *
+   * @return 'TRUE' if is a simple type; 'FALSE' otherwise.
+   */
+  @Override
+  public final boolean isSimpleType() {
+    return this.simpleType != null;
+  }
+
+  /**
+   * Gets type as a simple type.
+   *
+   * @return simple type. An <tt>EdmTypeNotFoundException</tt> will be raised if it is not a simple type.
+   */
+  @Override
+  public final EdmSimpleType getSimpleType() {
+    if (!isSimpleType()) {
+      throw new EdmTypeNotFoundException(EdmSimpleType.class, this.typeExpression);
+    }
+
+    return this.simpleType;
+  }
+
+  /**
+   * Checks if is an enum type.
+   *
+   * @return 'TRUE' if is an enum type; 'FALSE' otherwise.
+   */
+  @Override
+  public final boolean isEnumType() {
+    return this.enumType != null;
+  }
+
+  /**
+   * Gets type as enum type.
+   *
+   * @return enum type. An <tt>EdmTypeNotFoundException</tt> will be raised if it is not an enum type.
+   */
+  @Override
+  public final AbstractEnumType getEnumType() {
+    if (!isEnumType()) {
+      throw new EdmTypeNotFoundException(AbstractEnumType.class, this.typeExpression);
+    }
+
+    return this.enumType;
+  }
+
+  /**
+   * Checks if is a complex type.
+   *
+   * @return 'TRUE' if is a complex type; 'FALSE' otherwise.
+   */
+  @Override
+  public final boolean isComplexType() {
+    return this.complexType != null;
+  }
+
+  /**
+   * Gets type as complex type.
+   *
+   * @return complex type. An <tt>EdmTypeNotFoundException</tt> will be raised if it is not a complex type.
+   */
+  @Override
+  public final C getComplexType() {
+    if (!isComplexType()) {
+      throw new EdmTypeNotFoundException(AbstractComplexType.class, this.typeExpression);
+    }
+
+    return this.complexType;
+  }
+
+  /**
+   * Checks if is an entity type.
+   *
+   * @return 'TRUE' if is an entity type; 'FALSE' otherwise.
+   */
+  @Override
+  public final boolean isEntityType() {
+    return this.entityType != null;
+  }
+
+  /**
+   * Gets type as entity type.
+   *
+   * @return entity type. An <tt>EdmTypeNotFoundException</tt> will be raised if it is not an entity type.
+   */
+  @Override
+  public final E getEntityType() {
+    if (!isEntityType()) {
+      throw new EdmTypeNotFoundException(AbstractEntityType.class, this.typeExpression);
+    }
+
+    return this.entityType;
+  }
+
+  /**
+   * Gets base type.
+   *
+   * @return base type.
+   */
+  @Override
+  public String getBaseType() {
+    return baseType;
+  }
+
+  /**
+   * Gets type expression.
+   *
+   * @return type expression.
+   */
+  @Override
+  public String getTypeExpression() {
+    return typeExpression;
+  }
+
+  /**
+   * Gets namespace or alias retrieved from the provided type expression.
+   *
+   * @return namespace or alias.
+   */
+  @Override
+  public String getNamespaceOrAlias() {
+    return namespaceOrAlias;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
index 588e0ea..95102f1 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
@@ -22,7 +22,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.EntityContainer;
-import org.apache.olingo.odata4.client.core.data.impl.EntityContainerDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.EntityContainerDeserializer;
 
 @JsonDeserialize(using = EntityContainerDeserializer.class)
 public abstract class AbstractEntityContainer<FI extends AbstractFunctionImport>

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntitySet.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntitySet.java
index bf01649..65679d5 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntitySet.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntitySet.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.EntitySet;
-import org.apache.olingo.odata4.client.core.data.impl.EntitySetDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.EntitySetDeserializer;
 
 @JsonDeserialize(using = EntitySetDeserializer.class)
 public abstract class AbstractEntitySet extends AbstractEdmItem implements EntitySet {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
index 3db1dd2..c564d69 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.java
@@ -21,7 +21,7 @@ package org.apache.olingo.odata4.client.core.edm;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.EntityType;
-import org.apache.olingo.odata4.client.core.data.impl.EntityTypeDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.EntityTypeDeserializer;
 
 @JsonDeserialize(using = EntityTypeDeserializer.class)
 public abstract class AbstractEntityType extends AbstractComplexType implements EntityType {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEnumType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEnumType.java
index 50075f8..1ac42eb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEnumType.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEnumType.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.EnumType;
-import org.apache.olingo.odata4.client.core.data.impl.EnumTypeDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.EnumTypeDeserializer;
 
 @JsonDeserialize(using = EnumTypeDeserializer.class)
 public abstract class AbstractEnumType extends AbstractEdmItem implements EnumType {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
index 473d265..0cf68bb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
@@ -86,6 +86,7 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Proper
   @JsonProperty("StoreGeneratedPattern")
   private StoreGeneratedPattern storeGeneratedPattern = StoreGeneratedPattern.None;
 
+  @Override
   public String getName() {
     return name;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
index d297ae9..489b422 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.java
@@ -21,7 +21,7 @@ package org.apache.olingo.odata4.client.core.edm;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.Schema;
-import org.apache.olingo.odata4.client.core.data.impl.SchemaDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.SchemaDeserializer;
 
 @JsonDeserialize(using = SchemaDeserializer.class)
 public abstract class AbstractSchema<EC extends AbstractEntityContainer<

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/DataServicesDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/DataServicesDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/DataServicesDeserializer.java
index 3b87d06..81f799a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/DataServicesDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/DataServicesDeserializer.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm;
 
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
@@ -47,12 +47,12 @@ public class DataServicesDeserializer extends AbstractEdmDeserializer<AbstractDa
           jp.nextToken();
           if (dataServices instanceof org.apache.olingo.odata4.client.core.edm.v3.DataServicesImpl) {
             ((org.apache.olingo.odata4.client.core.edm.v3.DataServicesImpl) dataServices).
-                    getSchemas().add(jp.getCodec().readValue(jp,
+                    getSchemas().add(jp.readValueAs(
                                     org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl.class));
 
           } else {
             ((org.apache.olingo.odata4.client.core.edm.v4.DataServicesImpl) dataServices).
-                    getSchemas().add(jp.getCodec().readValue(jp,
+                    getSchemas().add(jp.readValueAs(
                                     org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl.class));
           }
         }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmxDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmxDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmxDeserializer.java
index db6607c..82ad88c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmxDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmxDeserializer.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm;
 
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
@@ -47,17 +47,17 @@ public class EdmxDeserializer extends AbstractEdmDeserializer<AbstractEdmx> {
           jp.nextToken();
           if (edmx instanceof org.apache.olingo.odata4.client.core.edm.v3.EdmxImpl) {
             ((org.apache.olingo.odata4.client.core.edm.v3.EdmxImpl) edmx).
-                    setDataServices(jp.getCodec().readValue(jp,
+                    setDataServices(jp.readValueAs(
                                     org.apache.olingo.odata4.client.core.edm.v3.DataServicesImpl.class));
           } else {
             ((org.apache.olingo.odata4.client.core.edm.v4.EdmxImpl) edmx).
-                    setDataServices(jp.getCodec().readValue(jp,
+                    setDataServices(jp.readValueAs(
                                     org.apache.olingo.odata4.client.core.edm.v4.DataServicesImpl.class));
           }
         } else if ("Reference".equals(jp.getCurrentName())) {
           jp.nextToken();
           ((org.apache.olingo.odata4.client.core.edm.v4.EdmxImpl) edmx).getReferences().
-                  add(jp.getCodec().readValue(jp, ReferenceImpl.class));
+                  add(jp.readValueAs( ReferenceImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
index 3baadf3..75662a4 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
@@ -22,7 +22,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.EntityKey;
-import org.apache.olingo.odata4.client.core.data.impl.EntityKeyDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.EntityKeyDeserializer;
 
 @JsonDeserialize(using = EntityKeyDeserializer.class)
 public class EntityKeyImpl extends AbstractEdmItem implements EntityKey {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsDeserializer.java
index 77ae3a9..ef97c8b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class AnnotationsDeserializer extends AbstractEdmDeserializer<AnnotationsImpl> {
 
@@ -42,10 +42,10 @@ public class AnnotationsDeserializer extends AbstractEdmDeserializer<Annotations
           annotations.setQualifier(jp.nextTextValue());
         } else if ("typeAnnotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          annotations.getTypeAnnotations().add(jp.getCodec().readValue(jp, TypeAnnotationImpl.class));
+          annotations.getTypeAnnotations().add(jp.readValueAs( TypeAnnotationImpl.class));
         } else if ("ValueAnnotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          annotations.getValueAnnotations().add(jp.getCodec().readValue(jp, ValueAnnotationImpl.class));
+          annotations.getValueAnnotations().add(jp.readValueAs( ValueAnnotationImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationDeserializer.java
index 8700490..b8c032a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class AssociationDeserializer extends AbstractEdmDeserializer<AssociationImpl> {
 
@@ -40,10 +40,10 @@ public class AssociationDeserializer extends AbstractEdmDeserializer<Association
           association.setName(jp.nextTextValue());
         } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
           jp.nextToken();
-          association.setReferentialConstraint(jp.getCodec().readValue(jp, ReferentialConstraintImpl.class));
+          association.setReferentialConstraint(jp.readValueAs( ReferentialConstraintImpl.class));
         } else if ("End".equals(jp.getCurrentName())) {
           jp.nextToken();
-          association.getEnds().add(jp.getCodec().readValue(jp, AssociationEndImpl.class));
+          association.getEnds().add(jp.readValueAs( AssociationEndImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetDeserializer.java
index ea23648..ae0b96d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class AssociationSetDeserializer extends AbstractEdmDeserializer<AssociationSetImpl> {
 
@@ -42,7 +42,7 @@ public class AssociationSetDeserializer extends AbstractEdmDeserializer<Associat
           associationSet.setAssociation(jp.nextTextValue());
         } else if ("End".equals(jp.getCurrentName())) {
           jp.nextToken();
-          associationSet.getEnds().add(jp.getCodec().readValue(jp, AssociationSetEndImpl.class));
+          associationSet.getEnds().add(jp.readValueAs( AssociationSetEndImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java
new file mode 100644
index 0000000..a061fa2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmTypeImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.v3;
+
+import org.apache.olingo.odata4.client.core.edm.AbstractEdmType;
+
+public class EdmTypeImpl extends AbstractEdmType<
+        EdmMetadataImpl, EdmxImpl, DataServicesImpl, SchemaImpl, EntityContainerImpl, EntityTypeImpl, ComplexTypeImpl, 
+        FunctionImportImpl> {
+
+  public EdmTypeImpl(final String typeExpression) {
+    super(typeExpression);
+  }
+
+  public EdmTypeImpl(final EdmMetadataImpl metadata, final String typeExpression) {
+    super(metadata, typeExpression);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportDeserializer.java
index 1fbc2b7..3c5ba25 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class FunctionImportDeserializer extends AbstractEdmDeserializer<FunctionImportImpl> {
 
@@ -57,7 +57,7 @@ public class FunctionImportDeserializer extends AbstractEdmDeserializer<Function
           funcImp.setHttpMethod(jp.nextTextValue());
         } else if ("Parameter".equals(jp.getCurrentName())) {
           jp.nextToken();
-          funcImp.getParameters().add(jp.getCodec().readValue(jp, ParameterImpl.class));
+          funcImp.getParameters().add(jp.readValueAs( ParameterImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
index 600763c..3de9321 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 import org.apache.olingo.odata4.client.core.edm.PropertyRefImpl;
 
 public class ReferentialConstraintRoleDeserializer extends AbstractEdmDeserializer<ReferentialConstraintRole> {
@@ -41,7 +41,7 @@ public class ReferentialConstraintRoleDeserializer extends AbstractEdmDeserializ
           refConstRole.setRole(jp.nextTextValue());
         } else if ("PropertyRef".equals(jp.getCurrentName())) {
           jp.nextToken();
-          refConstRole.getPropertyRefs().add(jp.getCodec().readValue(jp, PropertyRefImpl.class));
+          refConstRole.getPropertyRefs().add(jp.readValueAs( PropertyRefImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationDeserializer.java
index 58985d3..0e873dd 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class TypeAnnotationDeserializer extends AbstractEdmDeserializer<TypeAnnotationImpl> {
 
@@ -42,7 +42,7 @@ public class TypeAnnotationDeserializer extends AbstractEdmDeserializer<TypeAnno
           typeAnnot.setQualifier(jp.nextTextValue());
         } else if ("PropertyValue".equals(jp.getCurrentName())) {
           jp.nextToken();
-          typeAnnot.getPropertyValues().add(jp.getCodec().readValue(jp, PropertyValueImpl.class));
+          typeAnnot.getPropertyValues().add(jp.readValueAs( PropertyValueImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionDeserializer.java
index d106aba..c8abf8b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class ActionDeserializer extends AbstractEdmDeserializer<ActionImpl> {
 
@@ -45,12 +45,12 @@ public class ActionDeserializer extends AbstractEdmDeserializer<ActionImpl> {
           action.setEntitySetPath(jp.nextTextValue());
         } else if ("Parameter".equals(jp.getCurrentName())) {
           jp.nextToken();
-          action.getParameters().add(jp.getCodec().readValue(jp, ParameterImpl.class));
+          action.getParameters().add(jp.readValueAs( ParameterImpl.class));
         } else if ("ReturnType".equals(jp.getCurrentName())) {
           action.setReturnType(parseReturnType(jp, "Action"));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          action.setAnnotation(jp.getCodec().readValue(jp, AnnotationImpl.class));
+          action.setAnnotation(jp.readValueAs( AnnotationImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationDeserializer.java
index a5399ab..a880924 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstruct;
 
 public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationImpl> {
@@ -46,7 +46,7 @@ public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationIm
           annotation.setConstExpr(parseAnnotationConstExprConstruct(jp));
         } else {
           // Dynamic Expressions
-          annotation.setDynExpr(jp.getCodec().readValue(jp, DynExprConstruct.class));
+          annotation.setDynExpr(jp.readValueAs( DynExprConstruct.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationImpl.java
index 21d94f5..dd404fb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationImpl.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -27,46 +27,46 @@ import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstruct;
 @JsonDeserialize(using = AnnotationDeserializer.class)
 public class AnnotationImpl extends AbstractEdmItem implements Annotation {
 
-    private static final long serialVersionUID = -5600031479702563436L;
+  private static final long serialVersionUID = -5600031479702563436L;
 
-    private String term;
+  private String term;
 
-    private String qualifier;
+  private String qualifier;
 
-    private ConstExprConstruct constExpr;
+  private ConstExprConstruct constExpr;
 
-    private DynExprConstruct dynExpr;
+  private DynExprConstruct dynExpr;
 
-    public String getTerm() {
-        return term;
-    }
+  public String getTerm() {
+    return term;
+  }
 
-    public void setTerm(final String term) {
-        this.term = term;
-    }
+  public void setTerm(final String term) {
+    this.term = term;
+  }
 
-    public String getQualifier() {
-        return qualifier;
-    }
+  public String getQualifier() {
+    return qualifier;
+  }
 
-    public void setQualifier(final String qualifier) {
-        this.qualifier = qualifier;
-    }
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
 
-    public ConstExprConstruct getConstExpr() {
-        return constExpr;
-    }
+  public ConstExprConstruct getConstExpr() {
+    return constExpr;
+  }
 
-    public void setConstExpr(final ConstExprConstruct constExpr) {
-        this.constExpr = constExpr;
-    }
+  public void setConstExpr(final ConstExprConstruct constExpr) {
+    this.constExpr = constExpr;
+  }
 
-    public DynExprConstruct getDynExpr() {
-        return dynExpr;
-    }
+  public DynExprConstruct getDynExpr() {
+    return dynExpr;
+  }
 
-    public void setDynExpr(final DynExprConstruct dynExpr) {
-        this.dynExpr = dynExpr;
-    }
+  public void setDynExpr(final DynExprConstruct dynExpr) {
+    this.dynExpr = dynExpr;
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsDeserializer.java
index 49dc359..ccca440 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsDeserializer.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class AnnotationsDeserializer extends AbstractEdmDeserializer<AnnotationsImpl> {
 
@@ -42,7 +42,7 @@ public class AnnotationsDeserializer extends AbstractEdmDeserializer<Annotations
           annotations.setQualifier(jp.nextTextValue());
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          annotations.getAnnotations().add(jp.getCodec().readValue(jp, AnnotationImpl.class));
+          annotations.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
index 2066c80..e292351 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.client.core.edm.v4;
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Property;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
 import org.apache.olingo.odata4.client.core.edm.AbstractComplexType;
 
@@ -34,7 +33,7 @@ public class ComplexTypeImpl extends AbstractComplexType implements AnnotatedEdm
 
   private boolean openType = false;
 
-  private final List<Property> properties = new ArrayList<Property>();
+  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
 
   private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
 
@@ -65,14 +64,14 @@ public class ComplexTypeImpl extends AbstractComplexType implements AnnotatedEdm
   }
 
   @Override
-  public List<Property> getProperties() {
+  public List<PropertyImpl> getProperties() {
     return properties;
   }
 
   @Override
-  public Property getProperty(final String name) {
-    Property result = null;
-    for (Property property : getProperties()) {
+  public PropertyImpl getProperty(final String name) {
+    PropertyImpl result = null;
+    for (PropertyImpl property : getProperties()) {
       if (name.equals(property.getName())) {
         result = property;
       }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java
new file mode 100644
index 0000000..f4755a1
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmTypeImpl.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.v4;
+
+import org.apache.olingo.odata4.client.core.edm.AbstractEdmType;
+
+public class EdmTypeImpl extends AbstractEdmType<
+        EdmMetadataImpl, EdmxImpl, DataServicesImpl, SchemaImpl, EntityContainerImpl, EntityTypeImpl, ComplexTypeImpl, 
+        FunctionImportImpl> {
+
+  public EdmTypeImpl(final String typeExpression) {
+    super(typeExpression);
+  }
+
+  public EdmTypeImpl(final EdmMetadataImpl metadata, final String typeExpression) {
+    super(metadata, typeExpression);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
index eb942f7..7dfe50b 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class FunctionDeserializer extends AbstractEdmDeserializer<FunctionImpl> {
 
@@ -47,12 +47,12 @@ public class FunctionDeserializer extends AbstractEdmDeserializer<FunctionImpl>
           function.setEntitySetPath(jp.nextTextValue());
         } else if ("Parameter".equals(jp.getCurrentName())) {
           jp.nextToken();
-          function.getParameters().add(jp.getCodec().readValue(jp, ParameterImpl.class));
+          function.getParameters().add(jp.readValueAs( ParameterImpl.class));
         } else if ("ReturnType".equals(jp.getCurrentName())) {
           function.setReturnType(parseReturnType(jp, "Function"));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          function.setAnnotation(jp.getCodec().readValue(jp, AnnotationImpl.class));
+          function.setAnnotation(jp.readValueAs( AnnotationImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyDeserializer.java
index ed5767c..1a195ea 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyDeserializer.java
@@ -25,7 +25,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.data.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
 public class NavigationPropertyDeserializer extends AbstractEdmDeserializer<NavigationPropertyImpl> {
 
@@ -50,13 +50,13 @@ public class NavigationPropertyDeserializer extends AbstractEdmDeserializer<Navi
           property.setContainsTarget(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
           jp.nextToken();
-          property.getReferentialConstraints().add(jp.getCodec().readValue(jp, ReferentialConstraintImpl.class));
+          property.getReferentialConstraints().add(jp.readValueAs( ReferentialConstraintImpl.class));
         } else if ("OnDelete".equals(jp.getCurrentName())) {
           jp.nextToken();
-          property.setOnDelete(jp.getCodec().readValue(jp, OnDeleteImpl.class));
+          property.setOnDelete(jp.readValueAs( OnDeleteImpl.class));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          property.setAnnotation(jp.getCodec().readValue(jp, AnnotationImpl.class));
+          property.setAnnotation(jp.readValueAs( AnnotationImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/e7135610/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
index c84a659..d48052e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
@@ -23,7 +23,6 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.api.edm.v4.ReferentialConstraint;
 import org.apache.olingo.odata4.client.core.edm.AbstractNavigationProperty;
 
 @JsonDeserialize(using = NavigationPropertyDeserializer.class)
@@ -39,7 +38,7 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
 
   private boolean containsTarget = false;
 
-  private final List<ReferentialConstraint> referentialConstraints = new ArrayList<ReferentialConstraint>();
+  private final List<ReferentialConstraintImpl> referentialConstraints = new ArrayList<ReferentialConstraintImpl>();
 
   private OnDeleteImpl onDelete;
 
@@ -77,7 +76,7 @@ public class NavigationPropertyImpl extends AbstractNavigationProperty implement
     this.containsTarget = containsTarget;
   }
 
-  public List<ReferentialConstraint> getReferentialConstraints() {
+  public List<ReferentialConstraintImpl> getReferentialConstraints() {
     return referentialConstraints;
   }