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/05 16:06:20 UTC

[01/22] [OLINGO-169] Package renaming according to latest ML discussion

Repository: incubator-olingo-odata4
Updated Branches:
  refs/heads/olingo169 eb886d6a5 -> bae3d847a


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
new file mode 100644
index 0000000..06385db
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
@@ -0,0 +1,57 @@
+/*
+ * 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.xml.v4;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class SingletonDeserializer extends AbstractEdmDeserializer<SingletonImpl> {
+
+  @Override
+  protected SingletonImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final SingletonImpl singleton = new SingletonImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          singleton.setName(jp.nextTextValue());
+        } else if ("Type".equals(jp.getCurrentName())) {
+          singleton.setType(jp.nextTextValue());
+        } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          singleton.getNavigationPropertyBindings().add(
+                  jp.readValueAs(NavigationPropertyBindingImpl.class));
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          singleton.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return singleton;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
new file mode 100644
index 0000000..09044bc
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.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.client.core.edm.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
+
+@JsonDeserialize(using = SingletonDeserializer.class)
+public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton {
+
+  private static final long serialVersionUID = 941802518279658559L;
+
+  private String name;
+
+  private String type;
+
+  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
+          = new ArrayList<NavigationPropertyBindingImpl>();
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
+    return navigationPropertyBindings;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
new file mode 100644
index 0000000..c281b11
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermDeserializer.java
@@ -0,0 +1,75 @@
+/*
+ * 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.xml.v4;
+
+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 java.math.BigInteger;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.CSDLElement;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+
+public class TermDeserializer extends AbstractEdmDeserializer<TermImpl> {
+
+  @Override
+  protected TermImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final TermImpl term = new TermImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          term.setName(jp.nextTextValue());
+        } else if ("Type".equals(jp.getCurrentName())) {
+          term.setType(jp.nextTextValue());
+        } else if ("BaseTerm".equals(jp.getCurrentName())) {
+          term.setBaseTerm(jp.nextTextValue());
+        } else if ("DefaultValue".equals(jp.getCurrentName())) {
+          term.setDefaultValue(jp.nextTextValue());
+        } else if ("Nullable".equals(jp.getCurrentName())) {
+          term.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          term.setMaxLength(jp.nextTextValue());
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          term.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          term.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          term.setSrid(jp.nextTextValue());
+        } else if ("AppliesTo".equals(jp.getCurrentName())) {
+          for (String split : StringUtils.split(jp.nextTextValue())) {
+            term.getAppliesTo().add(CSDLElement.valueOf(split));
+          }
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          term.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return term;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
new file mode 100644
index 0000000..bcce72a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TermImpl.java
@@ -0,0 +1,148 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.CSDLElement;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Term;
+
+@JsonDeserialize(using = TermDeserializer.class)
+public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
+
+  private static final long serialVersionUID = -5888231162358116515L;
+
+  private String name;
+
+  private String type;
+
+  private String baseTerm;
+
+  private String defaultValue;
+
+  private boolean nullable = true;
+
+  private String maxLength;
+
+  private BigInteger precision;
+
+  private BigInteger scale;
+
+  private String srid;
+
+  private final List<CSDLElement> appliesTo = new ArrayList<CSDLElement>();
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public String getBaseTerm() {
+    return baseTerm;
+  }
+
+  @Override
+  public void setBaseTerm(final String baseTerm) {
+    this.baseTerm = baseTerm;
+  }
+
+  @Override
+  public String getDefaultValue() {
+    return defaultValue;
+  }
+
+  @Override
+  public void setDefaultValue(final String defaultValue) {
+    this.defaultValue = defaultValue;
+  }
+
+  @Override
+  public boolean isNullable() {
+    return nullable;
+  }
+
+  @Override
+  public void setNullable(final boolean nullable) {
+    this.nullable = nullable;
+  }
+
+  @Override
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  @Override
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  @Override
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  @Override
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  @Override
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  @Override
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+
+  @Override
+  public String getSrid() {
+    return srid;
+  }
+
+  @Override
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+  @Override
+  public List<CSDLElement> getAppliesTo() {
+    return appliesTo;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
new file mode 100644
index 0000000..36b4cbe
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
@@ -0,0 +1,65 @@
+/*
+ * 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.xml.v4;
+
+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 java.math.BigInteger;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+
+public class TypeDefinitionDeserializer extends AbstractEdmDeserializer<TypeDefinitionImpl> {
+
+  @Override
+  protected TypeDefinitionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final TypeDefinitionImpl typeDefinition = new TypeDefinitionImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          typeDefinition.setName(jp.nextTextValue());
+        } else if ("UnderlyingType".equals(jp.getCurrentName())) {
+          typeDefinition.setUnderlyingType(jp.nextTextValue());
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          typeDefinition.setMaxLength(jp.nextTextValue());
+        } else if ("Unicode".equals(jp.getCurrentName())) {
+          typeDefinition.setUnicode(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          typeDefinition.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          typeDefinition.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          typeDefinition.setSrid(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          typeDefinition.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
+        }
+      }
+    }
+
+    return typeDefinition;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
new file mode 100644
index 0000000..061a4a6
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
@@ -0,0 +1,122 @@
+/*
+ * 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.xml.v4;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinition {
+
+  private static final long serialVersionUID = -5888231162358116515L;
+
+  private String name;
+
+  private String underlyingType;
+
+  private String maxLength;
+
+  private BigInteger precision;
+
+  private BigInteger scale;
+
+  private boolean unicode = true;
+
+  private String srid;
+
+  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getUnderlyingType() {
+    return underlyingType;
+  }
+
+  @Override
+  public void setUnderlyingType(final String underlyingType) {
+    this.underlyingType = underlyingType;
+  }
+
+  @Override
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  @Override
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  @Override
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  @Override
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  @Override
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  @Override
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+
+  @Override
+  public boolean isUnicode() {
+    return unicode;
+  }
+
+  @Override
+  public void setUnicode(final boolean unicode) {
+    this.unicode = unicode;
+  }
+
+  @Override
+  public String getSrid() {
+    return srid;
+  }
+
+  @Override
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+  @Override
+  public List<AnnotationImpl> getAnnotations() {
+    return annotations;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
index c6b5bba..bd8c3e9 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
@@ -25,7 +25,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.edm.v4.ReturnTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ReturnTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;
 
 public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/ComplexTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/ComplexTypeDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/ComplexTypeDeserializer.java
index 81bbd48..1ceca91 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/ComplexTypeDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/ComplexTypeDeserializer.java
@@ -24,8 +24,8 @@ 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.AbstractComplexType;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractComplexType;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
 public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractComplexType> {
@@ -35,8 +35,8 @@ public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractCom
           throws IOException, JsonProcessingException {
 
     final AbstractComplexType complexType = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.ComplexTypeImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl();
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
@@ -44,33 +44,33 @@ public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractCom
         if ("Name".equals(jp.getCurrentName())) {
           complexType.setName(jp.nextTextValue());
         } else if ("Abstract".equals(jp.getCurrentName())) {
-          ((org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl) complexType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
                   setAbstractEntityType(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("BaseType".equals(jp.getCurrentName())) {
-          ((org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl) complexType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
                   setBaseType(jp.nextTextValue());
         } else if ("OpenType".equals(jp.getCurrentName())) {
-          ((org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl) complexType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
                   setOpenType(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("Property".equals(jp.getCurrentName())) {
           jp.nextToken();
-          if (complexType instanceof org.apache.olingo.odata4.client.core.edm.v3.ComplexTypeImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.ComplexTypeImpl) complexType).
+          if (complexType instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl) complexType).
                     getProperties().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.PropertyImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl) complexType).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
                     getProperties().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.PropertyImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.PropertyImpl.class));
           }
         } else if ("NavigationProperty".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl) complexType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
                   getNavigationProperties().add(jp.readValueAs(
-                                  org.apache.olingo.odata4.client.core.edm.v4.NavigationPropertyImpl.class));
+                                  org.apache.olingo.odata4.client.core.edm.xml.v4.NavigationPropertyImpl.class));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl) complexType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
                   setAnnotation(jp.readValueAs(AnnotationImpl.class));
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityContainerDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityContainerDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityContainerDeserializer.java
index babfaa8..92be399 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityContainerDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityContainerDeserializer.java
@@ -24,11 +24,11 @@ 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.AbstractEntityContainer;
-import org.apache.olingo.odata4.client.core.edm.v3.AssociationSetImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.ActionImportImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.SingletonImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityContainer;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.AssociationSetImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ActionImportImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.SingletonImpl;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
 @SuppressWarnings("rawtypes")
@@ -39,8 +39,8 @@ public class EntityContainerDeserializer extends AbstractEdmDeserializer<Abstrac
           throws IOException, JsonProcessingException {
 
     final AbstractEntityContainer entityContainer = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl();
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
@@ -55,41 +55,41 @@ public class EntityContainerDeserializer extends AbstractEdmDeserializer<Abstrac
           entityContainer.setDefaultEntityContainer(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("EntitySet".equals(jp.getCurrentName())) {
           jp.nextToken();
-          if (entityContainer instanceof org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl) entityContainer).
+          if (entityContainer instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl) entityContainer).
                     getEntitySets().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.EntitySetImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.EntitySetImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl) entityContainer).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).
                     getEntitySets().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.EntitySetImpl.class));
           }
         } else if ("AssociationSet".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl) entityContainer).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl) entityContainer).
                   getAssociationSets().add(jp.readValueAs(AssociationSetImpl.class));
         } else if ("Singleton".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl) entityContainer).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).
                   getSingletons().add(jp.readValueAs(SingletonImpl.class));
         } else if ("ActionImport".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl) entityContainer).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).
                   getActionImports().add(jp.readValueAs(ActionImportImpl.class));
         } else if ("FunctionImport".equals(jp.getCurrentName())) {
           jp.nextToken();
-          if (entityContainer instanceof org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl) {
-            ((org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl) entityContainer).
+          if (entityContainer instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl) entityContainer).
                     getFunctionImports().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.FunctionImportImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.FunctionImportImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl) entityContainer).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).
                     getFunctionImports().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.FunctionImportImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImportImpl.class));
           }
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl) entityContainer).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).
                   setAnnotation(jp.readValueAs(AnnotationImpl.class));
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityKeyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityKeyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityKeyDeserializer.java
index 7569c7b..dd26a97 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityKeyDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityKeyDeserializer.java
@@ -23,8 +23,8 @@ 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;
+import org.apache.olingo.odata4.client.core.edm.xml.EntityKeyImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.PropertyRefImpl;
 
 public class EntityKeyDeserializer extends AbstractEdmDeserializer<EntityKeyImpl> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntitySetDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntitySetDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntitySetDeserializer.java
index 078fc65..a5fa924 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntitySetDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntitySetDeserializer.java
@@ -24,9 +24,9 @@ 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.client.core.edm.xml.AbstractEntitySet;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.NavigationPropertyBindingImpl;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
 public class EntitySetDeserializer extends AbstractEdmDeserializer<AbstractEntitySet> {
@@ -36,8 +36,8 @@ public class EntitySetDeserializer extends AbstractEdmDeserializer<AbstractEntit
           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();
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.EntitySetImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.EntitySetImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
@@ -47,16 +47,16 @@ public class EntitySetDeserializer extends AbstractEdmDeserializer<AbstractEntit
         } 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).
+          ((org.apache.olingo.odata4.client.core.edm.xml.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).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntitySetImpl) entitySet).
                   getNavigationPropertyBindings().add(
                           jp.readValueAs(NavigationPropertyBindingImpl.class));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl) entitySet).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntitySetImpl) entitySet).
                   setAnnotation(jp.readValueAs(AnnotationImpl.class));
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityTypeDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityTypeDeserializer.java
index f8af8b2..610b751 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityTypeDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EntityTypeDeserializer.java
@@ -24,9 +24,9 @@ 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.client.core.edm.xml.AbstractEntityType;
+import org.apache.olingo.odata4.client.core.edm.xml.EntityKeyImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
 public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEntityType> {
@@ -36,8 +36,8 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEnti
           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();
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
@@ -57,29 +57,29 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEnti
           entityType.setKey(jp.readValueAs(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).
+          if (entityType instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl) entityType).
                     getProperties().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.PropertyImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl) entityType).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl) entityType).
                     getProperties().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.PropertyImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.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).
+          if (entityType instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl) entityType).
                     getNavigationProperties().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.NavigationPropertyImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.NavigationPropertyImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl) entityType).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl) entityType).
                     getNavigationProperties().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.NavigationPropertyImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.NavigationPropertyImpl.class));
           }
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl) entityType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl) entityType).
                   setAnnotation(jp.readValueAs(AnnotationImpl.class));
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EnumTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EnumTypeDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EnumTypeDeserializer.java
index 867fac4..086d99c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EnumTypeDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/EnumTypeDeserializer.java
@@ -24,8 +24,8 @@ 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.client.core.edm.xml.AbstractEnumType;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
 public class EnumTypeDeserializer extends AbstractEdmDeserializer<AbstractEnumType> {
@@ -35,8 +35,8 @@ public class EnumTypeDeserializer extends AbstractEdmDeserializer<AbstractEnumTy
           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();
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
@@ -49,18 +49,18 @@ public class EnumTypeDeserializer extends AbstractEdmDeserializer<AbstractEnumTy
           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).
+          if (enumType instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl) enumType).
                     getMembers().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.MemberImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.MemberImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl) enumType).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl) enumType).
                     getMembers().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.MemberImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.MemberImpl.class));
           }
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl) enumType).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl) enumType).
                   setAnnotation(jp.readValueAs(AnnotationImpl.class));
         }
       }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/SchemaDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/SchemaDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/SchemaDeserializer.java
index 6c07a3b..c17c4cd 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/SchemaDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/SchemaDeserializer.java
@@ -23,14 +23,14 @@ 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.client.core.edm.xml.AbstractSchema;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.AssociationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.UsingImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.ValueTermImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ActionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.TypeDefinitionImpl;
 import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
 
 @SuppressWarnings("rawtypes")
@@ -41,8 +41,8 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
           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();
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl();
 
     for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
       final JsonToken token = jp.getCurrentToken();
@@ -53,90 +53,90 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
           schema.setAlias(jp.nextTextValue());
         } else if ("Using".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                   getUsings().add(jp.readValueAs( UsingImpl.class));
         } else if ("Association".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                   getAssociations().add(jp.readValueAs( 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).
+          if (schema instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                     getComplexTypes().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.ComplexTypeImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).
                     getComplexTypes().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.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).
+          if (schema instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                     getEntityTypes().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).
                     getEntityTypes().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.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).
+          if (schema instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                     getEnumTypes().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.EnumTypeImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).
                     getEnumTypes().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl.class));
           }
         } else if ("ValueTerm".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl) schema).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                   getValueTerms().add(jp.readValueAs( 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).
+          if (schema instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).
                     getEntityContainers().add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl.class));
           } else {
-            org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl entityContainer
+            org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl entityContainer
                     = jp.readValueAs(
-                            org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl.class);
+                            org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl.class);
             entityContainer.setDefaultEntityContainer(true);
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
+            ((org.apache.olingo.odata4.client.core.edm.xml.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().
+          if (schema instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl) schema).getAnnotationsList().
                     add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.AnnotationsImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.AnnotationsImpl.class));
           } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getAnnotationsList().
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotationsList().
                     add(jp.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.AnnotationsImpl.class));
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationsImpl.class));
           }
         } else if ("Action".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getActions().
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).getActions().
                   add(jp.readValueAs( ActionImpl.class));
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getAnnotations().
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotations().
                   add(jp.readValueAs( AnnotationImpl.class));
         } else if ("Function".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).getFunctions().
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).getFunctions().
                   add(jp.readValueAs( FunctionImpl.class));
         } else if ("TypeDefinition".equals(jp.getCurrentName())) {
           jp.nextToken();
-          ((org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl) schema).
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl) schema).
                   getTypeDefinitions().add(jp.readValueAs( TypeDefinitionImpl.class));
         }
       }

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

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
index f887096..b23cb72 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
@@ -28,13 +28,13 @@ import org.apache.olingo.odata4.client.api.edm.EdmType;
 import org.apache.olingo.odata4.client.api.http.HttpMethod;
 import org.apache.olingo.odata4.client.core.AbstractTest;
 import org.apache.olingo.odata4.client.core.ODataV3Client;
-import org.apache.olingo.odata4.client.core.edm.v3.ComplexTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.EntityContainerImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.EntityTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.FunctionImportImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.SchemaImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.FunctionImportImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl;
 import org.junit.Test;
 
 public class MetadataTest extends AbstractTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
index b3c2092..38709ed 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
@@ -28,20 +28,20 @@ import java.util.List;
 import org.apache.olingo.odata4.client.api.data.EdmSimpleType;
 import org.apache.olingo.odata4.client.core.AbstractTest;
 import org.apache.olingo.odata4.client.core.ODataV4Client;
-import org.apache.olingo.odata4.client.core.edm.v4.FunctionImportImpl;
-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.AnnotationsImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.ComplexTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImportImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ActionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationsImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.v4.EdmMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.v4.EdmTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.EntityContainerImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.EntitySetImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.EntityTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.EnumTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.FunctionImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.SingletonImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EntitySetImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.SingletonImpl;
 import org.apache.olingo.odata4.client.core.edm.v4.annotation.Apply;
 import org.apache.olingo.odata4.client.core.edm.v4.annotation.Collection;
 import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;


[14/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmServiceMetadataImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmServiceMetadataImpl.java
index f44f1d6..ba8a46a 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmServiceMetadataImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmServiceMetadataImpl.java
@@ -23,12 +23,18 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.olingo.odata4.commons.api.ODataException;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
 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.core.edm.EdmSingletonInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmActionImportInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmFunctionImportInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmEntitySetInfoImpl;
+import org.apache.olingo.odata4.server.api.edm.provider.ActionImport;
 import org.apache.olingo.odata4.server.api.edm.provider.EdmProvider;
 import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
 import org.apache.olingo.odata4.server.api.edm.provider.EntitySet;
@@ -39,11 +45,17 @@ import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
 public class EdmServiceMetadataImpl implements EdmServiceMetadata {
 
   private EdmProvider provider;
-  private ArrayList<EdmEntitySetInfo> entitySetInfos;
-  private ArrayList<EdmFunctionImportInfo> functionImportInfos;
-  private ArrayList<EdmSingletonInfo> singletonInfos;
+
   private List<Schema> schemas;
 
+  private List<EdmEntitySetInfo> entitySetInfos;
+
+  private List<EdmSingletonInfo> singletonInfos;
+
+  private List<EdmActionImportInfo> actionImportInfos;
+
+  private List<EdmFunctionImportInfo> functionImportInfos;
+
   public EdmServiceMetadataImpl(final EdmProvider provider) {
     this.provider = provider;
   }
@@ -70,12 +82,12 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
           }
         }
         for (Schema schema : schemas) {
-          EntityContainer entityContainer = schema.getEntityContainer();
+          final EntityContainer entityContainer = schema.getEntityContainer();
           if (entityContainer != null) {
-            List<EntitySet> entitySets = entityContainer.getEntitySets();
+            final List<EntitySet> entitySets = entityContainer.getEntitySets();
             if (entitySets != null) {
               for (EntitySet set : entitySets) {
-                entitySetInfos.add(new EdmEntitySetInfoImpl(entityContainer, set));
+                entitySetInfos.add(new EdmEntitySetInfoImpl(entityContainer.getName(), set.getName()));
               }
             }
           }
@@ -99,12 +111,12 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
           }
         }
         for (Schema schema : schemas) {
-          EntityContainer entityContainer = schema.getEntityContainer();
+          final EntityContainer entityContainer = schema.getEntityContainer();
           if (entityContainer != null) {
-            List<Singleton> singletons = entityContainer.getSingletons();
+            final List<Singleton> singletons = entityContainer.getSingletons();
             if (singletons != null) {
               for (Singleton singleton : singletons) {
-                singletonInfos.add(new EdmSingletonInfoImpl(entityContainer, singleton));
+                singletonInfos.add(new EdmSingletonInfoImpl(entityContainer.getName(), singleton.getName()));
               }
             }
           }
@@ -117,6 +129,35 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
   }
 
   @Override
+  public List<EdmActionImportInfo> getActionImportInfos() {
+    if (actionImportInfos == null) {
+      try {
+        actionImportInfos = new ArrayList<EdmActionImportInfo>();
+        if (schemas == null) {
+          schemas = provider.getSchemas();
+          if (schemas == null) {
+            throw new EdmException("Provider doe not define any schemas.");
+          }
+        }
+        for (Schema schema : schemas) {
+          final EntityContainer entityContainer = schema.getEntityContainer();
+          if (entityContainer != null) {
+            final List<ActionImport> actionImports = entityContainer.getActionImports();
+            if (actionImports != null) {
+              for (ActionImport actionImport : actionImports) {
+                actionImportInfos.add(new EdmActionImportInfoImpl(entityContainer.getName(), actionImport.getName()));
+              }
+            }
+          }
+        }
+      } catch (ODataException e) {
+        throw new EdmException(e);
+      }
+    }
+    return actionImportInfos;
+  }
+
+  @Override
   public List<EdmFunctionImportInfo> getFunctionImportInfos() {
     if (functionImportInfos == null) {
       try {
@@ -128,12 +169,13 @@ public class EdmServiceMetadataImpl implements EdmServiceMetadata {
           }
         }
         for (Schema schema : schemas) {
-          EntityContainer entityContainer = schema.getEntityContainer();
+          final EntityContainer entityContainer = schema.getEntityContainer();
           if (entityContainer != null) {
-            List<FunctionImport> functionImports = entityContainer.getFunctionImports();
+            final List<FunctionImport> functionImports = entityContainer.getFunctionImports();
             if (functionImports != null) {
               for (FunctionImport functionImport : functionImports) {
-                functionImportInfos.add(new EdmFunctionImportInfoImpl(entityContainer, functionImport));
+                functionImportInfos.add(
+                        new EdmFunctionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
               }
             }
           }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImpl.java
index 1ca0fc5..9fbd0b0 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImpl.java
@@ -18,13 +18,14 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.EdmSingleton;
 import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
 
 public class EdmSingletonImpl extends EdmBindingTargetImpl implements EdmSingleton {
 
-  public EdmSingletonImpl(final EdmProviderImpl edm, final EdmEntityContainer container, final Singleton singleton) {
+  public EdmSingletonImpl(final Edm edm, final EdmEntityContainer container, final Singleton singleton) {
     super(edm, container, singleton);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImpl.java
deleted file mode 100644
index d69bc99..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImpl.java
+++ /dev/null
@@ -1,53 +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.server.core.edm.provider;
-
-import java.net.URI;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
-import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
-
-public class EdmSingletonInfoImpl implements EdmSingletonInfo {
-
-  private final EntityContainer entityContainer;
-  private final Singleton singleton;
-
-  public EdmSingletonInfoImpl(final EntityContainer entityContainer, final 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() {
-    throw new EdmException("Not yet implemented");
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuralTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuralTypeImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuralTypeImpl.java
deleted file mode 100644
index 8849dd0..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuralTypeImpl.java
+++ /dev/null
@@ -1,129 +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.server.core.edm.provider;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmElement;
-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.EdmType;
-import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.server.api.edm.provider.NavigationProperty;
-import org.apache.olingo.odata4.server.api.edm.provider.Property;
-import org.apache.olingo.odata4.server.api.edm.provider.StructuralType;
-
-public abstract class EdmStructuralTypeImpl extends EdmTypeImpl implements EdmStructuralType {
-
-  private final Map<String, EdmElement> properties = new HashMap<String, EdmElement>();
-  private ArrayList<String> navigationPropertyNames;
-  private ArrayList<String> propertyNames;
-  protected final EdmStructuralType baseType;
-  private final StructuralType structuralType;
-
-  public EdmStructuralTypeImpl(final EdmProviderImpl edm, final FullQualifiedName name,
-      final StructuralType structuralType, final EdmTypeKind kind) {
-    super(edm, name, kind);
-    this.structuralType = structuralType;
-    baseType = buildBaseType(structuralType.getBaseType());
-    buildProperties(structuralType.getProperties());
-    buildNavigationProperties(structuralType.getNavigationProperties());
-  }
-
-  private void buildNavigationProperties(final List<NavigationProperty> providerNavigationProperties) {
-    if (providerNavigationProperties != null) {
-      for (NavigationProperty navigationProperty : providerNavigationProperties) {
-        properties.put(navigationProperty.getName(), new EdmNavigationPropertyImpl(edm, navigationProperty));
-      }
-    }
-
-  }
-
-  private void buildProperties(final List<Property> providerProperties) {
-    if (providerProperties != null) {
-      for (Property property : providerProperties) {
-        properties.put(property.getName(), new EdmPropertyImpl(edm, property));
-      }
-    }
-
-  }
-
-  @Override
-  public EdmElement getProperty(final String name) {
-    EdmElement property = null;
-    if (baseType != null) {
-      property = baseType.getProperty(name);
-    }
-    if (property == null) {
-      property = properties.get(name);
-    }
-    return property;
-  }
-
-  @Override
-  public List<String> getPropertyNames() {
-    if (propertyNames == null) {
-      propertyNames = new ArrayList<String>();
-      if (baseType != null) {
-        propertyNames.addAll(baseType.getPropertyNames());
-      }
-      for (Property property : structuralType.getProperties()) {
-        propertyNames.add(property.getName());
-      }
-    }
-    return propertyNames;
-  }
-
-  @Override
-  public List<String> getNavigationPropertyNames() {
-    if (navigationPropertyNames == null) {
-      navigationPropertyNames = new ArrayList<String>();
-      if (baseType != null) {
-        navigationPropertyNames.addAll(baseType.getNavigationPropertyNames());
-      }
-      for (NavigationProperty navProperty : structuralType.getNavigationProperties()) {
-        navigationPropertyNames.add(navProperty.getName());
-      }
-    }
-    return navigationPropertyNames;
-  }
-
-  @Override
-  public boolean compatibleTo(final EdmType targetType) {
-    EdmStructuralType sourceType = this;
-    if (targetType == null) {
-      throw new EdmException("Target type must not be null");
-    }
-    while (sourceType.getName() != targetType.getName() ||
-        sourceType.getNamespace() != targetType.getNamespace()) {
-      sourceType = sourceType.getBaseType();
-      if (sourceType == null) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-  protected abstract EdmStructuralType buildBaseType(FullQualifiedName baseTypeName);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuredTypeHelperImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuredTypeHelperImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuredTypeHelperImpl.java
new file mode 100644
index 0000000..cc7eac7
--- /dev/null
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmStructuredTypeHelperImpl.java
@@ -0,0 +1,72 @@
+/*
+ * 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.server.core.edm.provider;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+import org.apache.olingo.odata4.commons.core.edm.EdmStructuredTypeHelper;
+import org.apache.olingo.odata4.server.api.edm.provider.NavigationProperty;
+import org.apache.olingo.odata4.server.api.edm.provider.Property;
+import org.apache.olingo.odata4.server.api.edm.provider.StructuredType;
+
+public class EdmStructuredTypeHelperImpl implements EdmStructuredTypeHelper {
+
+  private final Edm edm;
+
+  private final StructuredType structuredType;
+
+  private Map<String, EdmProperty> properties;
+
+  private Map<String, EdmNavigationProperty> navigationProperties;
+
+  public EdmStructuredTypeHelperImpl(final Edm edm, final StructuredType structuredType) {
+    this.edm = edm;
+    this.structuredType = structuredType;
+  }
+
+  @Override
+  public Map<String, EdmProperty> getProperties() {
+    if (properties == null) {
+      properties = new LinkedHashMap<String, EdmProperty>();
+      if (structuredType.getProperties() != null) {
+        for (Property property : structuredType.getProperties()) {
+          properties.put(property.getName(), new EdmPropertyImpl(edm, property));
+        }
+      }
+    }
+    return properties;
+  }
+
+  @Override
+  public Map<String, EdmNavigationProperty> getNavigationProperties() {
+    if (navigationProperties == null) {
+      navigationProperties = new LinkedHashMap<String, EdmNavigationProperty>();
+      if (structuredType.getNavigationProperties() != null) {
+        for (NavigationProperty navigationProperty : structuredType.getNavigationProperties()) {
+          navigationProperties.put(navigationProperty.getName(),
+                  new EdmNavigationPropertyImpl(edm, navigationProperty));
+        }
+      }
+    }
+    return navigationProperties;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeDefinitionImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeDefinitionImpl.java
index ad44f08..3c370e7 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeDefinitionImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeDefinitionImpl.java
@@ -18,88 +18,36 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 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.EdmPrimitiveTypeException;
 import org.apache.olingo.odata4.commons.api.edm.EdmTypeDefinition;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmTypeDefinition;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
 import org.apache.olingo.odata4.server.api.edm.provider.TypeDefinition;
 
-public class EdmTypeDefinitionImpl extends EdmNamedImpl implements EdmTypeDefinition {
+public class EdmTypeDefinitionImpl extends AbstractEdmTypeDefinition 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;
+  public EdmTypeDefinitionImpl(final Edm edm, final FullQualifiedName typeDefinitionName,
+          final TypeDefinition typeDefinition) {
+
+    super(edm, typeDefinitionName);
     this.typeDefinition = typeDefinition;
     // TODO: Should we check for edmNamespace in the underlying type name?
     try {
-      edmPrimitiveTypeInstance =
-          EdmPrimitiveTypeKind.valueOf(typeDefinition.getUnderlyingType().getName()).getEdmPrimitiveTypeInstance();
+      edmPrimitiveTypeInstance = EdmPrimitiveTypeKind.valueOf(
+              typeDefinition.getUnderlyingType().getName()).getEdmPrimitiveTypeInstance();
     } catch (IllegalArgumentException e) {
       throw new EdmException("Invalid underlying type: " + typeDefinitionName, e);
     }
   }
 
   @Override
-  public boolean isCompatible(final EdmPrimitiveType primitiveType) {
-    return edmPrimitiveTypeInstance.isCompatible(primitiveType);
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    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 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 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 edmPrimitiveTypeInstance.valueToString(value, isNullable, maxLength, precision, scale, isUnicode);
-  }
-
-  @Override
-  public String toUriLiteral(final String literal) {
-    return edmPrimitiveTypeInstance.toUriLiteral(literal);
-  }
-
-  @Override
-  public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
-    return edmPrimitiveTypeInstance.fromUriLiteral(literal);
-  }
-
-  @Override
-  public String getNamespace() {
-    return typeDefinitionName.getNamespace();
-  }
-
-  @Override
-  public EdmTypeKind getKind() {
-    return EdmTypeKind.DEFINITION;
-  }
-
-  @Override
   public EdmPrimitiveType getUnderlyingType() {
     return edmPrimitiveTypeInstance;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImpl.java
deleted file mode 100644
index 3f232c5..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImpl.java
+++ /dev/null
@@ -1,46 +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.server.core.edm.provider;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmType;
-import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-
-public abstract class EdmTypeImpl extends EdmNamedImpl implements EdmType {
-
-  private final EdmTypeKind kind;
-  private final String namespace;
-
-  public EdmTypeImpl(final EdmProviderImpl edm, final FullQualifiedName name, final EdmTypeKind kind) {
-    super(edm, name.getName());
-    namespace = name.getNamespace();
-    this.kind = kind;
-  }
-
-  @Override
-  public String getNamespace() {
-    return namespace;
-  }
-
-  @Override
-  public EdmTypeKind getKind() {
-    return kind;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/UriResourceTypedImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/UriResourceTypedImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/UriResourceTypedImpl.java
index 2cec8de..a5b21b1 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/UriResourceTypedImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/UriResourceTypedImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.server.core.uri;
 
-import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
+import org.apache.olingo.odata4.commons.api.edm.EdmStructuredType;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.odata4.server.api.uri.UriResourceKind;
@@ -36,7 +36,7 @@ public abstract class UriResourceTypedImpl extends UriResourceImpl implements Ur
     return typeFilter;
   }
 
-  public UriResourceTypedImpl setTypeFilter(final EdmStructuralType typeFilter) {
+  public UriResourceTypedImpl setTypeFilter(final EdmStructuredType typeFilter) {
     this.typeFilter = typeFilter;
     return this;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/parser/UriParseTreeVisitor.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/parser/UriParseTreeVisitor.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/parser/UriParseTreeVisitor.java
index f13484f..1561f17 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/parser/UriParseTreeVisitor.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/uri/parser/UriParseTreeVisitor.java
@@ -38,7 +38,7 @@ import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
 import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
 import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
 import org.apache.olingo.odata4.commons.api.edm.EdmSingleton;
-import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
+import org.apache.olingo.odata4.commons.api.edm.EdmStructuredType;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
@@ -387,12 +387,12 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
         return null;
       }
 
-      if (!(source.type instanceof EdmStructuralType)) {
+      if (!(source.type instanceof EdmStructuredType)) {
         throw wrap(new UriParserSemanticException("Can not parse'" + odi
             + "'Previous path segment not a structural type."));
       }
 
-      EdmStructuralType structType = (EdmStructuralType) source.type;
+      EdmStructuredType structType = (EdmStructuredType) source.type;
 
       EdmElement property = structType.getProperty(odi);
       if (property == null) {
@@ -1815,11 +1815,11 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
         }
       }
 
-      if (!(prevType instanceof EdmStructuralType)) {
+      if (!(prevType instanceof EdmStructuredType)) {
         throw wrap(new UriParserSemanticException("Previous select item is not a structural type"));
       }
 
-      EdmStructuralType structType = (EdmStructuralType) prevType;
+      EdmStructuredType structType = (EdmStructuredType) prevType;
       EdmElement element = structType.getProperty(odi);
       if (element == null) {
         throw wrap(new UriParserSemanticException("Previous select item has not property: " + odi));
@@ -1888,7 +1888,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
         if (prevType instanceof EdmComplexType) {
           EdmComplexType ct = edm.getComplexType(fullName);
           if (ct != null) {
-            if ((ct.compatibleTo((EdmStructuralType) prevType))) {
+            if ((ct.compatibleTo((EdmStructuredType) prevType))) {
               UriResourceStartingTypeFilterImpl resourcePart = new UriResourceStartingTypeFilterImpl();
               resourcePart.setCollectionTypeFilter(ct);
 
@@ -1907,7 +1907,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
         } else if (prevType instanceof EdmEntityType) {
           EdmEntityType et = edm.getEntityType(fullName);
           if (et != null) {
-            if ((et.compatibleTo((EdmStructuralType) prevType))) {
+            if ((et.compatibleTo((EdmStructuredType) prevType))) {
               UriResourceStartingTypeFilterImpl resourcePart = new UriResourceStartingTypeFilterImpl();
               resourcePart.setCollectionTypeFilter(et);
 
@@ -1938,7 +1938,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
         if (prevType instanceof EdmComplexType) {
           EdmComplexType ct = edm.getComplexType(fullName);
           if (ct != null) {
-            if ((ct.compatibleTo((EdmStructuralType) prevType))) {
+            if ((ct.compatibleTo((EdmStructuredType) prevType))) {
               UriResourceStartingTypeFilterImpl resourcePart = new UriResourceStartingTypeFilterImpl();
               resourcePart.setCollectionTypeFilter(ct);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImplTest.java
index a6b5c36..866f347 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImplTest.java
@@ -57,20 +57,20 @@ public class EdmActionImplTest {
     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);
+    actionImpl1 = EdmActionImpl.getInstance(provider, action1Name, action1);
 
     FullQualifiedName action2Name = new FullQualifiedName("namespace", "action2");
     FullQualifiedName returnTypeName = new FullQualifiedName("Edm", "String");
     ReturnType returnType = new ReturnType().setType(returnTypeName);
     Action action2 = new Action().setName("action2").setParameters(parameters).setReturnType(returnType);
-    actionImpl2 = new EdmActionImpl(provider, action2Name, action2);
+    actionImpl2 = EdmActionImpl.getInstance(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);
+    actionImpl3 = EdmActionImpl.getInstance(provider, action3Name, action3);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImplTest.java
index a829c89..033800d 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImplTest.java
@@ -31,15 +31,18 @@ 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.FullQualifiedName;
 import org.apache.olingo.odata4.server.api.edm.provider.ActionImport;
-import org.apache.olingo.odata4.server.api.edm.provider.Target;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 import org.junit.Before;
 import org.junit.Test;
 
 public class EdmActionImportImplTest {
 
   EdmEntityContainer container;
+
   EdmActionImport actionImport;
+
   private EdmAction action;
+
   private EdmEntitySet entitySet;
 
   @Before
@@ -47,8 +50,8 @@ public class EdmActionImportImplTest {
     FullQualifiedName actionFqn = new FullQualifiedName("namespace", "actionName");
     FullQualifiedName entityContainerFqn = new FullQualifiedName("namespace", "containerName");
     Target target = new Target().setEntityContainer(entityContainerFqn).setTargetName("entitySetName");
-    ActionImport providerActionImport =
-        new ActionImport().setName("actionImportName").setAction(actionFqn).setEntitySet(target);
+    ActionImport providerActionImport
+            = new ActionImport().setName("actionImportName").setAction(actionFqn).setEntitySet(target);
 
     EdmProviderImpl edm = mock(EdmProviderImpl.class);
     container = mock(EdmEntityContainer.class);
@@ -58,7 +61,7 @@ public class EdmActionImportImplTest {
 
     entitySet = mock(EdmEntitySet.class);
     when(container.getEntitySet("entitySetName")).thenReturn(entitySet);
-    actionImport = new EdmActionImportImpl(edm, "actionImportName", container, providerActionImport);
+    actionImport = new EdmActionImportImpl(edm, container, "actionImportName", providerActionImport);
   }
 
   @Test
@@ -82,8 +85,8 @@ public class EdmActionImportImplTest {
   public void getReturnedEntitySetNonExistingContainer() {
     Target target = new Target();
     ActionImport providerActionImport = new ActionImport().setName("actionImportName").setEntitySet(target);
-    EdmActionImport actionImport =
-        new EdmActionImportImpl(mock(EdmProviderImpl.class), "actionImportName", container, providerActionImport);
+    EdmActionImport actionImport
+            = new EdmActionImportImpl(mock(EdmProviderImpl.class), container, "actionImportName", providerActionImport);
     actionImport.getReturnedEntitySet();
   }
 
@@ -93,7 +96,7 @@ public class EdmActionImportImplTest {
     ActionImport providerActionImport = new ActionImport().setName("actionImportName").setEntitySet(target);
     EdmProviderImpl edm = mock(EdmProviderImpl.class);
     when(edm.getEntityContainer(null)).thenReturn(container);
-    EdmActionImport actionImport = new EdmActionImportImpl(edm, "actionImportName", container, providerActionImport);
+    EdmActionImport actionImport = new EdmActionImportImpl(edm, container, "actionImportName", providerActionImport);
     actionImport.getReturnedEntitySet();
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImplTest.java
index 33832ed..9ae780b 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImplTest.java
@@ -61,7 +61,7 @@ public class EdmComplexTypeImplTest {
         .setNavigationProperties(baseNavigationProperties);
     when(provider.getComplexType(baseName)).thenReturn(baseComplexType);
 
-    baseType = new EdmComplexTypeImpl(edm, baseName, baseComplexType);
+    baseType = EdmComplexTypeImpl.getInstance(edm, baseName, baseComplexType);
 
     FullQualifiedName name = new FullQualifiedName("namespace", "typeName");
     ComplexType complexType = new ComplexType().setBaseType(baseName);
@@ -73,14 +73,14 @@ public class EdmComplexTypeImplTest {
         .setNavigationProperties(navigationProperties);
     when(provider.getComplexType(name)).thenReturn(complexType);
 
-    type = new EdmComplexTypeImpl(edm, name, complexType);
+    type = EdmComplexTypeImpl.getInstance(edm, name, complexType);
   }
 
   @Test
   public void noPropertiesAndNoNavPropertiesMustNotResultInException() {
     EdmProviderImpl edm = mock(EdmProviderImpl.class);
     ComplexType complexType = new ComplexType().setName("n");
-    new EdmComplexTypeImpl(edm, new FullQualifiedName("n", "n"), complexType);
+    EdmComplexTypeImpl.getInstance(edm, new FullQualifiedName("n", "n"), complexType);
   }
 
   @Test
@@ -158,6 +158,6 @@ public class EdmComplexTypeImplTest {
         new ComplexType().setBaseType(new FullQualifiedName("wrong", "wrong"));
     complexTypeForNonexistingBaseType.setName("typeName");
     when(provider.getComplexType(typeWithNonexistingBaseTypeName)).thenReturn(complexTypeForNonexistingBaseType);
-    new EdmComplexTypeImpl(edm, typeWithNonexistingBaseTypeName, complexTypeForNonexistingBaseType);
+    EdmComplexTypeImpl.getInstance(edm, typeWithNonexistingBaseTypeName, complexTypeForNonexistingBaseType);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImplTest.java
index 5bd5fa3..85df520 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImplTest.java
@@ -36,7 +36,7 @@ import org.apache.olingo.odata4.server.api.edm.provider.EntitySet;
 import org.apache.olingo.odata4.server.api.edm.provider.EntityType;
 import org.apache.olingo.odata4.server.api.edm.provider.NavigationPropertyBinding;
 import org.apache.olingo.odata4.server.api.edm.provider.PropertyRef;
-import org.apache.olingo.odata4.server.api.edm.provider.Target;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 import org.junit.Test;
 
 public class EdmEntitySetImplTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImplTest.java
deleted file mode 100644
index d002dd4..0000000
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImplTest.java
+++ /dev/null
@@ -1,51 +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.server.core.edm.provider;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata4.server.api.edm.provider.EntitySet;
-import org.junit.Test;
-
-public class EdmEntitySetInfoImplTest {
-
-  @Test
-  public void entitySetTest() {
-    EntitySet providerEntitySet = new EntitySet().setName("name");
-    EntityContainer providerContainer = new EntityContainer().setName("container");
-
-    EdmEntitySetInfo info = new EdmEntitySetInfoImpl(providerContainer, providerEntitySet);
-
-    assertEquals("name", info.getEntitySetName());
-    assertEquals("container", info.getEntityContainerName());
-  }
-
-  @Test(expected = EdmException.class)
-  public void getUriTest() {
-    EntitySet providerEntitySet = new EntitySet().setName("name");
-    EntityContainer providerContainer = new EntityContainer().setName("container");
-
-    EdmEntitySetInfo info = new EdmEntitySetInfoImpl(providerContainer, providerEntitySet);
-    info.getEntitySetUri();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImplTest.java
index 4e2ca11..a4a26d8 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImplTest.java
@@ -72,7 +72,7 @@ public class EdmEntityTypeImplTest {
     baseType.setNavigationProperties(navigationProperties);
     when(provider.getEntityType(baseName)).thenReturn(baseType);
 
-    this.baseType = new EdmEntityTypeImpl(edm, baseName, baseType);
+    this.baseType = EdmEntityTypeImpl.getInstance(edm, baseName, baseType);
 
     FullQualifiedName typeName = new FullQualifiedName("namespace", "typeName");
     EntityType type = new EntityType();
@@ -87,7 +87,7 @@ public class EdmEntityTypeImplTest {
     type.setNavigationProperties(typeNavigationProperties);
     when(provider.getEntityType(typeName)).thenReturn(type);
 
-    typeWithBaseType = new EdmEntityTypeImpl(edm, typeName, type);
+    typeWithBaseType = EdmEntityTypeImpl.getInstance(edm, typeName, type);
 
     FullQualifiedName typeWithComplexKeyName = new FullQualifiedName("namespace", "typeName");
     EntityType typeWithComplexKeyProvider = new EntityType();
@@ -112,7 +112,7 @@ public class EdmEntityTypeImplTest {
     typeWithComplexKeyProvider.setKey(keyForTypeWithComplexKey);
     when(provider.getEntityType(typeWithComplexKeyName)).thenReturn(typeWithComplexKeyProvider);
 
-    typeWithComplexKey = new EdmEntityTypeImpl(edm, typeWithComplexKeyName, typeWithComplexKeyProvider);
+    typeWithComplexKey = EdmEntityTypeImpl.getInstance(edm, typeWithComplexKeyName, typeWithComplexKeyProvider);
   }
 
   @Test
@@ -246,21 +246,21 @@ public class EdmEntityTypeImplTest {
   public void noKeyOnTypeWithoutBaseTypeMustResultInException() {
     EdmProviderImpl edm = mock(EdmProviderImpl.class);
     EntityType entityType = new EntityType().setName("n");
-    new EdmEntityTypeImpl(edm, new FullQualifiedName("n", "n"), entityType);
+    EdmEntityTypeImpl.getInstance(edm, new FullQualifiedName("n", "n"), entityType);
   }
 
   @Test
   public void abstractTypeDoesNotNeedKey() {
     EdmProviderImpl edm = mock(EdmProviderImpl.class);
     EntityType entityType = new EntityType().setName("n").setAbstract(true);
-    new EdmEntityTypeImpl(edm, new FullQualifiedName("n", "n"), entityType);
+    EdmEntityTypeImpl.getInstance(edm, new FullQualifiedName("n", "n"), entityType);
   }
 
   @Test(expected = EdmException.class)
   public void invalidBaseType() {
     EdmProviderImpl edm = mock(EdmProviderImpl.class);
     EntityType entityType = new EntityType().setName("n").setBaseType(new FullQualifiedName("wrong", "wrong"));
-    new EdmEntityTypeImpl(edm, new FullQualifiedName("n", "n"), entityType);
+    EdmEntityTypeImpl.getInstance(edm, new FullQualifiedName("n", "n"), entityType);
   }
 
   @Test
@@ -270,7 +270,7 @@ public class EdmEntityTypeImplTest {
     FullQualifiedName baseName = new FullQualifiedName("n", "base");
     when(provider.getEntityType(baseName)).thenReturn(new EntityType().setName("base").setAbstract(true));
     EntityType entityType = new EntityType().setName("n").setAbstract(true).setBaseType(baseName);
-    new EdmEntityTypeImpl(edm, new FullQualifiedName("n", "n"), entityType);
+    EdmEntityTypeImpl.getInstance(edm, new FullQualifiedName("n", "n"), entityType);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTest.java
index 4c31103..b55f625 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTest.java
@@ -51,11 +51,11 @@ public class EdmEnumTest extends PrimitiveTypeBaseTest {
             EdmPrimitiveTypeKind.SByte.getFullQualifiedName());
 
     FullQualifiedName enumName = new FullQualifiedName("namespace", "name");
-    instance = new EdmEnumImpl(mock(EdmProviderImpl.class), enumName, enumType);
+    instance = new EdmEnumTypeImpl(mock(EdmProviderImpl.class), enumName, enumType);
 
     EnumType enumType2 = new EnumType().setName("name").setMembers(memberList).setFlags(false).setUnderlyingType(
         EdmPrimitiveTypeKind.SByte.getFullQualifiedName());
-    nonFlagsInstance = new EdmEnumImpl(mock(EdmProviderImpl.class), enumName, enumType2);
+    nonFlagsInstance = new EdmEnumTypeImpl(mock(EdmProviderImpl.class), enumName, enumType2);
 
 //    EdmMember member1 = mock(EdmMember.class);
 //    when(member1.getName()).thenReturn("first");

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImplTest.java
index 6ed7ef1..f5488d3 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImplTest.java
@@ -44,9 +44,9 @@ public class EdmFunctionImplTest {
     EdmProviderImpl provider = mock(EdmProviderImpl.class);
 
     Function function1 = new Function().setReturnType(new ReturnType().setType(new FullQualifiedName("Edm", "String")));
-    functionImpl1 = new EdmFunctionImpl(provider, new FullQualifiedName("namespace", "name"), function1);
+    functionImpl1 = EdmFunctionImpl.getInstance(provider, new FullQualifiedName("namespace", "name"), function1);
     Function function2 = new Function().setComposable(true);
-    functionImpl2 = new EdmFunctionImpl(provider, new FullQualifiedName("namespace", "name"), function2);
+    functionImpl2 = EdmFunctionImpl.getInstance(provider, new FullQualifiedName("namespace", "name"), function2);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImplTest.java
index 3a98a88..f7d7e59 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImplTest.java
@@ -69,7 +69,7 @@ public class EdmFunctionImportImplTest {
     when(provider.getFunctionImport(containerName, functionImportName)).thenReturn(functionImportProvider);
 
     final EdmFunctionImport functionImport =
-        new EdmFunctionImportImpl(edm, "test", entityContainer, functionImportProvider);
+        new EdmFunctionImportImpl(edm, entityContainer, "test", functionImportProvider);
     assertEquals(functionImportName, entityContainer.getFunctionImport(functionImportName).getName());
     assertEquals("test", functionImport.getName());
     final EdmFunction function = functionImport.getFunction(Collections.<String> emptyList());

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImplTest.java
deleted file mode 100644
index 136d38c..0000000
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImplTest.java
+++ /dev/null
@@ -1,50 +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.server.core.edm.provider;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
-import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata4.server.api.edm.provider.FunctionImport;
-import org.junit.Test;
-
-public class EdmFunctionImportInfoImplTest {
-
-  @Test
-  public void functionImportTest() {
-    FunctionImport providerFunctionImport = new FunctionImport().setName("name");
-    EntityContainer providerContainer = new EntityContainer().setName("container");
-
-    EdmFunctionImportInfo info = new EdmFunctionImportInfoImpl(providerContainer, providerFunctionImport);
-
-    assertEquals("name", info.getFunctionImportName());
-    assertEquals("container", info.getEntityContainerName());
-  }
-
-  @Test(expected = EdmException.class)
-  public void getUriTest() {
-    FunctionImport providerFunctionImport = new FunctionImport().setName("name");
-    EntityContainer providerContainer = new EntityContainer().setName("container");
-
-    EdmFunctionImportInfo info = new EdmFunctionImportInfoImpl(providerContainer, providerFunctionImport);
-    info.getFunctionImportUri();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImplTest.java
index 4a356fb..ce2e374 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImplTest.java
@@ -41,7 +41,7 @@ public class EdmKeyPropertyRefImplTest {
     PropertyRef providerRef = new PropertyRef().setPropertyName("Id");
     EdmEntityType etMock = mock(EdmEntityType.class);
     EdmProperty keyPropertyMock = mock(EdmProperty.class);
-    when(etMock.getProperty("Id")).thenReturn(keyPropertyMock);
+    when(etMock.getStructuralProperty("Id")).thenReturn(keyPropertyMock);
     EdmKeyPropertyRef ref = new EdmKeyPropertyRefImpl(etMock, providerRef);
     assertEquals("Id", ref.getKeyPropertyName());
     assertNull(ref.getAlias());
@@ -58,11 +58,11 @@ public class EdmKeyPropertyRefImplTest {
     PropertyRef providerRef = new PropertyRef().setPropertyName("Id").setAlias("alias").setPath("comp/Id");
     EdmEntityType etMock = mock(EdmEntityType.class);
     EdmProperty keyPropertyMock = mock(EdmProperty.class);
-    EdmElement compMock = mock(EdmProperty.class);
+    EdmProperty compMock = mock(EdmProperty.class);
     EdmComplexType compTypeMock = mock(EdmComplexType.class);
-    when(compTypeMock.getProperty("Id")).thenReturn(keyPropertyMock);
+    when(compTypeMock.getStructuralProperty("Id")).thenReturn(keyPropertyMock);
     when(compMock.getType()).thenReturn(compTypeMock);
-    when(etMock.getProperty("comp")).thenReturn(compMock);
+    when(etMock.getStructuralProperty("comp")).thenReturn(compMock);
     EdmKeyPropertyRef ref = new EdmKeyPropertyRefImpl(etMock, providerRef);
     assertEquals("alias", ref.getAlias());
     assertEquals("comp/Id", ref.getPath());
@@ -103,15 +103,15 @@ public class EdmKeyPropertyRefImplTest {
     PropertyRef providerRef = new PropertyRef().setPropertyName("Id").setAlias("alias").setPath("comp/comp2/Id");
     EdmEntityType etMock = mock(EdmEntityType.class);
     EdmProperty keyPropertyMock = mock(EdmProperty.class);
-    EdmElement compMock = mock(EdmProperty.class);
+    EdmProperty compMock = mock(EdmProperty.class);
     EdmComplexType compTypeMock = mock(EdmComplexType.class);
-    EdmElement comp2Mock = mock(EdmProperty.class);
+    EdmProperty comp2Mock = mock(EdmProperty.class);
     EdmComplexType comp2TypeMock = mock(EdmComplexType.class);
-    when(comp2TypeMock.getProperty("Id")).thenReturn(keyPropertyMock);
+    when(comp2TypeMock.getStructuralProperty("Id")).thenReturn(keyPropertyMock);
     when(comp2Mock.getType()).thenReturn(comp2TypeMock);
-    when(compTypeMock.getProperty("comp2")).thenReturn(comp2Mock);
+    when(compTypeMock.getStructuralProperty("comp2")).thenReturn(comp2Mock);
     when(compMock.getType()).thenReturn(compTypeMock);
-    when(etMock.getProperty("comp")).thenReturn(compMock);
+    when(etMock.getStructuralProperty("comp")).thenReturn(compMock);
     EdmKeyPropertyRef ref = new EdmKeyPropertyRefImpl(etMock, providerRef);
 
     EdmProperty property = ref.getProperty();

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImplTest.java
index 0f249d6..26dffae 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImplTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.core.edm.EdmMemberImpl;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
 
@@ -29,7 +30,7 @@ public class EdmMemberImplTest {
   @Test
   public void enumMember() {
     EnumMember member = new EnumMember().setName("name").setValue("value");
-    EdmMemberImpl memberImpl = new EdmMemberImpl(mock(EdmProviderImpl.class), member);
+    EdmMemberImpl memberImpl = new EdmMemberImpl(mock(EdmProviderImpl.class), member.getName(), member.getValue());
 
     assertEquals("name", memberImpl.getName());
     assertEquals("value", memberImpl.getValue());

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImplTest.java
index a777be7..986acca 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImplTest.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata4.server.core.edm.provider;
 import static org.junit.Assert.assertEquals;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmNamed;
+import org.apache.olingo.odata4.commons.core.edm.EdmNamedImpl;
 import org.junit.Test;
 
 public class EdmNamedImplTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImplTest.java
index b253c55..d87e871 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonImplTest.java
@@ -37,7 +37,7 @@ import org.apache.olingo.odata4.server.api.edm.provider.EntityType;
 import org.apache.olingo.odata4.server.api.edm.provider.NavigationPropertyBinding;
 import org.apache.olingo.odata4.server.api.edm.provider.PropertyRef;
 import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
-import org.apache.olingo.odata4.server.api.edm.provider.Target;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 import org.junit.Test;
 
 public class EdmSingletonImplTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImplTest.java
deleted file mode 100644
index a8d6175..0000000
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmSingletonInfoImplTest.java
+++ /dev/null
@@ -1,51 +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.server.core.edm.provider;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
-import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
-import org.junit.Test;
-
-public class EdmSingletonInfoImplTest {
-
-  @Test
-  public void singletonTest() {
-    Singleton providerSingleton = new Singleton().setName("name");
-    EntityContainer providerContainer = new EntityContainer().setName("container");
-
-    EdmSingletonInfo info = new EdmSingletonInfoImpl(providerContainer, providerSingleton);
-
-    assertEquals("name", info.getSingletonName());
-    assertEquals("container", info.getEntityContainerName());
-  }
-
-  @Test(expected = EdmException.class)
-  public void getUriTest() {
-    Singleton providerSingleton = new Singleton().setName("name");
-    EntityContainer providerContainer = new EntityContainer().setName("container");
-
-    EdmSingletonInfo info = new EdmSingletonInfoImpl(providerContainer, providerSingleton);
-    info.getEntitySetUri();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImplTest.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImplTest.java
index 1ca05ad..2a467b2 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImplTest.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/edm/provider/EdmTypeImplTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
 import org.apache.olingo.odata4.commons.api.edm.EdmType;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.EdmTypeImpl;
 import org.junit.Test;
 
 public class EdmTypeImplTest {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/testutil/EdmTechProvider.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/testutil/EdmTechProvider.java b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/testutil/EdmTechProvider.java
index acedb6f..c7b0724 100644
--- a/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/testutil/EdmTechProvider.java
+++ b/odata4-lib/odata4-server-core/src/test/java/org/apache/olingo/odata4/server/core/testutil/EdmTechProvider.java
@@ -45,7 +45,7 @@ import org.apache.olingo.odata4.server.api.edm.provider.PropertyRef;
 import org.apache.olingo.odata4.server.api.edm.provider.ReferentialConstraint;
 import org.apache.olingo.odata4.server.api.edm.provider.ReturnType;
 import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
-import org.apache.olingo.odata4.server.api.edm.provider.Target;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 
 public class EdmTechProvider extends EdmProvider {
 


[07/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ExprConstruct.java
new file mode 100644
index 0000000..7a3e6f2
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ExprConstruct.java
@@ -0,0 +1,23 @@
+/*
+ * 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.api.edm.xml.v4.annotation;
+
+public interface ExprConstruct {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
index 73b3b7e..fe6872c 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.api.op;
 
 import java.io.InputStream;
 import java.io.Serializable;
-import org.apache.olingo.odata4.client.api.edm.Edmx;
+import org.apache.olingo.odata4.client.api.edm.xml.Edmx;
 import org.w3c.dom.Element;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
deleted file mode 100644
index 63f272a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractAnnotations.java
+++ /dev/null
@@ -1,53 +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.edm;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public abstract class AbstractAnnotations extends AbstractEdmItem
-        implements org.apache.olingo.odata4.client.api.edm.AbstractAnnotations {
-
-  private static final long serialVersionUID = 4926640428016042620L;
-
-  @JsonProperty(value = "Target", required = true)
-  private String target;
-
-  @JsonProperty("Qualifier")
-  private String qualifier;
-
-  @Override
-  public String getTarget() {
-    return target;
-  }
-
-  @Override
-  public void setTarget(final String target) {
-    this.target = target;
-  }
-
-  @Override
-  public String getQualifier() {
-    return qualifier;
-  }
-
-  @Override
-  public void setQualifier(final String qualifier) {
-    this.qualifier = qualifier;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 926db3a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractComplexType.java
+++ /dev/null
@@ -1,53 +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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.ComplexType;
-import org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty;
-import org.apache.olingo.odata4.client.api.edm.CommonProperty;
-import org.apache.olingo.odata4.client.core.op.impl.ComplexTypeDeserializer;
-
-@JsonDeserialize(using = ComplexTypeDeserializer.class)
-public abstract class AbstractComplexType extends AbstractEdmItem implements ComplexType {
-
-  private static final long serialVersionUID = -4765071294433482957L;
-
-  private String name;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public CommonProperty getProperty(final String name) {
-    return getOneByName(name, getProperties());
-  }
-
-  @Override
-  public CommonNavigationProperty getNavigationProperty(final String name) {
-    return getOneByName(name, getNavigationProperties());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
deleted file mode 100644
index 378ff01..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractDataServices.java
+++ /dev/null
@@ -1,52 +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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.DataServices;
-
-@JsonDeserialize(using = DataServicesDeserializer.class)
-public abstract class AbstractDataServices extends AbstractEdmItem implements DataServices {
-
-  private static final long serialVersionUID = -9126377222393876166L;
-
-  private String dataServiceVersion;
-
-  private String maxDataServiceVersion;
-
-  @Override
-  public String getDataServiceVersion() {
-    return dataServiceVersion;
-  }
-
-  @Override
-  public void setDataServiceVersion(final String version) {
-    this.dataServiceVersion = version;
-  }
-
-  @Override
-  public String getMaxDataServiceVersion() {
-    return maxDataServiceVersion;
-  }
-
-  @Override
-  public void setMaxDataServiceVersion(final String version) {
-    this.maxDataServiceVersion = version;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
deleted file mode 100644
index f359a04..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmItem.java
+++ /dev/null
@@ -1,61 +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.edm;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public abstract class AbstractEdmItem {
-
-  protected <T extends Named> T getOneByName(final String name, final Collection<T> items) {
-    final List<T> result = getAllByName(name, items);
-    return result.isEmpty() ? null : result.get(0);
-  }
-
-  protected <T extends Named> List<T> getAllByName(final String name, final Collection<T> items) {
-    final List<T> result = new ArrayList<T>();
-    for (T type : items) {
-      if (name.equals(type.getName())) {
-        result.add(type);
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    return EqualsBuilder.reflectionEquals(this, obj);
-  }
-
-  @Override
-  public int hashCode() {
-    return HashCodeBuilder.reflectionHashCode(this);
-  }
-
-  @Override
-  public String toString() {
-    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
index e8f923a..2e6cc1a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
@@ -25,8 +25,9 @@ import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.odata4.client.api.ODataClient;
 import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
-import org.apache.olingo.odata4.client.api.edm.Edmx;
-import org.apache.olingo.odata4.client.api.edm.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.Edmx;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
 /**
  * Entry point for access information about EDM metadata.

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
index 0cf93d6..2d4dccf 100644
--- 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
@@ -20,13 +20,16 @@ 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.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
 import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
 import org.apache.olingo.odata4.client.api.edm.EdmType;
 import org.apache.olingo.odata4.client.api.edm.EdmTypeNotFoundException;
-import org.apache.olingo.odata4.client.api.edm.EntityType;
-import org.apache.olingo.odata4.client.api.edm.EnumType;
-import org.apache.olingo.odata4.client.api.edm.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractComplexType;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityType;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEnumType;
 
 /**
  * Parse type information from metadata into semantic data.

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmx.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmx.java
deleted file mode 100644
index dac8d09..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmx.java
+++ /dev/null
@@ -1,53 +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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.DataServices;
-import org.apache.olingo.odata4.client.api.edm.Edmx;
-
-@JsonDeserialize(using = EdmxDeserializer.class)
-public abstract class AbstractEdmx extends AbstractEdmItem implements Edmx {
-
-  private static final long serialVersionUID = -5480835122183091469L;
-
-  private String version;
-
-  private DataServices dataServices;
-
-  @Override
-  public String getVersion() {
-    return version;
-  }
-
-  @Override
-  public void setVersion(final String version) {
-    this.version = version;
-  }
-
-  @Override
-  public DataServices getDataServices() {
-    return dataServices;
-  }
-
-  @Override
-  public void setDataServices(final DataServices dataServices) {
-    this.dataServices = dataServices;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 15789a7..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityContainer.java
+++ /dev/null
@@ -1,107 +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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.EntityContainer;
-import org.apache.olingo.odata4.client.api.edm.EntitySet;
-import org.apache.olingo.odata4.client.api.edm.CommonFunctionImport;
-import org.apache.olingo.odata4.client.core.op.impl.EntityContainerDeserializer;
-
-@JsonDeserialize(using = EntityContainerDeserializer.class)
-public abstract class AbstractEntityContainer extends AbstractEdmItem implements EntityContainer {
-
-  private static final long serialVersionUID = 4121974387552855032L;
-
-  private String name;
-
-  private String _extends;
-
-  private boolean lazyLoadingEnabled;
-
-  private boolean defaultEntityContainer;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getExtends() {
-    return _extends;
-  }
-
-  @Override
-  public void setExtends(final String _extends) {
-    this._extends = _extends;
-  }
-
-  @Override
-  public boolean isLazyLoadingEnabled() {
-    return lazyLoadingEnabled;
-  }
-
-  @Override
-  public void setLazyLoadingEnabled(final boolean lazyLoadingEnabled) {
-    this.lazyLoadingEnabled = lazyLoadingEnabled;
-  }
-
-  @Override
-  public boolean isDefaultEntityContainer() {
-    return defaultEntityContainer;
-  }
-
-  @Override
-  public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
-    this.defaultEntityContainer = defaultEntityContainer;
-  }
-
-  @Override
-  public EntitySet getEntitySet(final String name) {
-    return getOneByName(name, getEntitySets());
-  }
-
-  /**
-   * Gets the first function import with given name.
-   *
-   * @param name name.
-   * @return function import.
-   */
-  @Override
-  public CommonFunctionImport getFunctionImport(final String name) {
-    return getOneByName(name, getFunctionImports());
-  }
-
-  /**
-   * Gets all function imports with given name.
-   *
-   * @param name name.
-   * @return function imports.
-   */
-  @Override
-  public List<? extends CommonFunctionImport> getFunctionImports(final String name) {
-    return getAllByName(name, getFunctionImports());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 83f7a38..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntitySet.java
+++ /dev/null
@@ -1,53 +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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.EntitySet;
-import org.apache.olingo.odata4.client.core.op.impl.EntitySetDeserializer;
-
-@JsonDeserialize(using = EntitySetDeserializer.class)
-public abstract class AbstractEntitySet extends AbstractEdmItem implements EntitySet {
-
-  private static final long serialVersionUID = -6577263439520376420L;
-
-  private String name;
-
-  private String entityType;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getEntityType() {
-    return entityType;
-  }
-
-  @Override
-  public void setEntityType(final String entityType) {
-    this.entityType = entityType;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 27eeabb..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEntityType.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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.EntityKey;
-import org.apache.olingo.odata4.client.api.edm.EntityType;
-import org.apache.olingo.odata4.client.core.op.impl.EntityTypeDeserializer;
-
-@JsonDeserialize(using = EntityTypeDeserializer.class)
-public abstract class AbstractEntityType extends AbstractComplexType implements EntityType {
-
-  private static final long serialVersionUID = -1579462552966168139L;
-
-  private boolean abstractEntityType = false;
-
-  private String baseType;
-
-  private boolean openType = false;
-
-  private boolean hasStream = false;
-
-  private EntityKeyImpl key;
-
-  @Override
-  public boolean isAbstractEntityType() {
-    return abstractEntityType;
-  }
-
-  @Override
-  public void setAbstractEntityType(final boolean abstractEntityType) {
-    this.abstractEntityType = abstractEntityType;
-  }
-
-  @Override
-  public String getBaseType() {
-    return baseType;
-  }
-
-  @Override
-  public void setBaseType(final String baseType) {
-    this.baseType = baseType;
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return openType;
-  }
-
-  @Override
-  public void setOpenType(final boolean openType) {
-    this.openType = openType;
-  }
-
-  @Override
-  public EntityKeyImpl getKey() {
-    return key;
-  }
-
-  public void setKey(final EntityKey key) {
-    this.key = (EntityKeyImpl) key;
-  }
-
-  @Override
-  public boolean isHasStream() {
-    return hasStream;
-  }
-
-  @Override
-  public void setHasStream(final boolean hasStream) {
-    this.hasStream = hasStream;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 0b21697..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEnumType.java
+++ /dev/null
@@ -1,88 +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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.EnumType;
-import org.apache.olingo.odata4.client.api.edm.Member;
-import org.apache.olingo.odata4.client.core.op.impl.EnumTypeDeserializer;
-
-@JsonDeserialize(using = EnumTypeDeserializer.class)
-public abstract class AbstractEnumType extends AbstractEdmItem implements EnumType {
-
-  private static final long serialVersionUID = 2688487586103418210L;
-
-  private String name;
-
-  private String underlyingType;
-
-  private boolean flags;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getUnderlyingType() {
-    return underlyingType;
-  }
-
-  @Override
-  public void setUnderlyingType(final String underlyingType) {
-    this.underlyingType = underlyingType;
-  }
-
-  @Override
-  public boolean isFlags() {
-    return flags;
-  }
-
-  @Override
-  public void setFlags(final boolean flags) {
-    this.flags = flags;
-  }
-
-  @Override
-  public Member getMember(final String name) {
-    Member result = null;
-    for (Member member : getMembers()) {
-      if (name.equals(member.getName())) {
-        result = member;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public Member getMember(final Integer value) {
-    Member result = null;
-    for (Member member : getMembers()) {
-      if (value.equals(member.getValue())) {
-        result = member;
-      }
-    }
-    return result;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractMember.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractMember.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractMember.java
deleted file mode 100644
index 7f53394..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractMember.java
+++ /dev/null
@@ -1,51 +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.edm;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.Member;
-
-public abstract class AbstractMember extends AbstractEdmItem implements Member {
-
-  private static final long serialVersionUID = -1852481655317148552L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty("Value")
-  private Integer value;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public Integer getValue() {
-    return value;
-  }
-
-  public void setValue(final Integer value) {
-    this.value = value;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
deleted file mode 100644
index c369887..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractNavigationProperty.java
+++ /dev/null
@@ -1,40 +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.edm;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty;
-
-public class AbstractNavigationProperty extends AbstractEdmItem implements CommonNavigationProperty {
-
-  private static final long serialVersionUID = 3112463683071069594L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
deleted file mode 100644
index f709d50..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractParameter.java
+++ /dev/null
@@ -1,106 +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.edm;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.CommonParameter;
-
-public abstract class AbstractParameter extends AbstractEdmItem implements CommonParameter {
-
-  private static final long serialVersionUID = -4305016554930334342L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Type", required = true)
-  private String type;
-
-  @JsonProperty(value = "Nullable")
-  private boolean nullable = true;
-
-  @JsonProperty("MaxLength")
-  private String maxLength;
-
-  @JsonProperty("Precision")
-  private BigInteger precision;
-
-  @JsonProperty("Scale")
-  private BigInteger scale;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  @Override
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  @Override
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  @Override
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  @Override
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 893504a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractProperty.java
+++ /dev/null
@@ -1,197 +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.edm;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.CommonProperty;
-import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
-import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
-
-public abstract class AbstractProperty extends AbstractEdmItem implements CommonProperty {
-
-  private static final long serialVersionUID = -6004492361142315153L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Type", required = true)
-  private String type;
-
-  @JsonProperty(value = "Nullable")
-  private boolean nullable = true;
-
-  @JsonProperty(value = "DefaultValue")
-  private String defaultValue;
-
-  @JsonProperty(value = "MaxLength")
-  private String maxLength;
-
-  @JsonProperty(value = "FixedLength")
-  private boolean fixedLength;
-
-  @JsonProperty(value = "Precision")
-  private BigInteger precision;
-
-  @JsonProperty(value = "Scale")
-  private BigInteger scale;
-
-  @JsonProperty(value = "Unicode")
-  private boolean unicode = true;
-
-  @JsonProperty(value = "Collation")
-  private String collation;
-
-  @JsonProperty(value = "SRID")
-  private String srid;
-
-  @JsonProperty(value = "ConcurrencyMode")
-  private ConcurrencyMode concurrencyMode;
-
-  @JsonProperty("StoreGeneratedPattern")
-  private StoreGeneratedPattern storeGeneratedPattern = StoreGeneratedPattern.None;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  @Override
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getDefaultValue() {
-    return defaultValue;
-  }
-
-  @Override
-  public void setDefaultValue(final String defaultValue) {
-    this.defaultValue = defaultValue;
-  }
-
-  @Override
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  @Override
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public boolean isFixedLength() {
-    return fixedLength;
-  }
-
-  @Override
-  public void setFixedLength(final boolean fixedLength) {
-    this.fixedLength = fixedLength;
-  }
-
-  @Override
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  @Override
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  @Override
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public boolean isUnicode() {
-    return unicode;
-  }
-
-  @Override
-  public void setUnicode(final boolean unicode) {
-    this.unicode = unicode;
-  }
-
-  @Override
-  public String getCollation() {
-    return collation;
-  }
-
-  @Override
-  public void setCollation(final String collation) {
-    this.collation = collation;
-  }
-
-  @Override
-  public String getSrid() {
-    return srid;
-  }
-
-  @Override
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-  @Override
-  public ConcurrencyMode getConcurrencyMode() {
-    return concurrencyMode;
-  }
-
-  @Override
-  public void setConcurrencyMode(final ConcurrencyMode concurrencyMode) {
-    this.concurrencyMode = concurrencyMode;
-  }
-
-  public StoreGeneratedPattern getStoreGeneratedPattern() {
-    return storeGeneratedPattern;
-  }
-
-  public void setStoreGeneratedPattern(final StoreGeneratedPattern storeGeneratedPattern) {
-    this.storeGeneratedPattern = storeGeneratedPattern;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 809bc8d..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractSchema.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.edm;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.ComplexType;
-import org.apache.olingo.odata4.client.api.edm.EntityType;
-import org.apache.olingo.odata4.client.api.edm.EnumType;
-import org.apache.olingo.odata4.client.api.edm.Schema;
-import org.apache.olingo.odata4.client.core.op.impl.SchemaDeserializer;
-
-@JsonDeserialize(using = SchemaDeserializer.class)
-public abstract class AbstractSchema extends AbstractEdmItem implements Schema {
-
-  private static final long serialVersionUID = -1356392748971378455L;
-
-  private String namespace;
-
-  private String alias;
-
-  @Override
-  public String getNamespace() {
-    return namespace;
-  }
-
-  @Override
-  public void setNamespace(final String namespace) {
-    this.namespace = namespace;
-  }
-
-  @Override
-  public String getAlias() {
-    return alias;
-  }
-
-  @Override
-  public void setAlias(final String alias) {
-    this.alias = alias;
-  }
-
-  @Override
-  public EnumType getEnumType(final String name) {
-    return getOneByName(name, getEnumTypes());
-  }
-
-  @Override
-  public ComplexType getComplexType(final String name) {
-    return getOneByName(name, getComplexTypes());
-  }
-
-  @Override
-  public EntityType getEntityType(final String name) {
-    return getOneByName(name, getEntityTypes());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 81f799a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/DataServicesDeserializer.java
+++ /dev/null
@@ -1,64 +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.edm;
-
-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;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-public class DataServicesDeserializer extends AbstractEdmDeserializer<AbstractDataServices> {
-
-  @Override
-  protected AbstractDataServices doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AbstractDataServices dataServices = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.DataServicesImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.DataServicesImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("DataServiceVersion".equals(jp.getCurrentName())) {
-          dataServices.setDataServiceVersion(jp.nextTextValue());
-        } else if ("MaxDataServiceVersion".equals(jp.getCurrentName())) {
-          dataServices.setMaxDataServiceVersion(jp.nextTextValue());
-        } else if ("Schema".equals(jp.getCurrentName())) {
-          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.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.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v4.SchemaImpl.class));
-          }
-        }
-      }
-    }
-
-    return dataServices;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 82ad88c..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmxDeserializer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm;
-
-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;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.olingo.odata4.client.core.edm.v4.ReferenceImpl;
-import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
-
-@SuppressWarnings("rawtypes")
-public class EdmxDeserializer extends AbstractEdmDeserializer<AbstractEdmx> {
-
-  @Override
-  protected AbstractEdmx doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AbstractEdmx edmx = ODataServiceVersion.V30 == client.getServiceVersion()
-            ? new org.apache.olingo.odata4.client.core.edm.v3.EdmxImpl()
-            : new org.apache.olingo.odata4.client.core.edm.v4.EdmxImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Version".equals(jp.getCurrentName())) {
-          edmx.setVersion(jp.nextTextValue());
-        } else if ("DataServices".equals(jp.getCurrentName())) {
-          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.readValueAs(
-                                    org.apache.olingo.odata4.client.core.edm.v3.DataServicesImpl.class));
-          } else {
-            ((org.apache.olingo.odata4.client.core.edm.v4.EdmxImpl) edmx).
-                    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.readValueAs( ReferenceImpl.class));
-        }
-      }
-    }
-
-    return edmx;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 7d5de43..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EntityKeyImpl.java
+++ /dev/null
@@ -1,38 +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.edm;
-
-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.op.impl.EntityKeyDeserializer;
-
-@JsonDeserialize(using = EntityKeyDeserializer.class)
-public class EntityKeyImpl extends AbstractEdmItem implements EntityKey {
-
-  private static final long serialVersionUID = 2586047015894794685L;
-
-  private final List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
-
-  @Override
-  public List<PropertyRefImpl> getPropertyRefs() {
-    return propertyRefs;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
deleted file mode 100644
index 98f3a8a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/OnDeleteImpl.java
+++ /dev/null
@@ -1,42 +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.edm;
-
-import org.apache.olingo.odata4.client.api.edm.v4.OnDeleteAction;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.OnDelete;
-
-public class OnDeleteImpl extends AbstractEdmItem implements OnDelete {
-
-  private static final long serialVersionUID = -5321523424474336347L;
-
-  @JsonProperty(value = "Action", required = true)
-  private OnDeleteAction action = OnDeleteAction.None;
-
-  @Override
-  public OnDeleteAction getAction() {
-    return action;
-  }
-
-  @Override
-  public void setAction(final OnDeleteAction action) {
-    this.action = action;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
deleted file mode 100644
index f34d0d4..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/PropertyRefImpl.java
+++ /dev/null
@@ -1,54 +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.edm;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.PropertyRef;
-
-public class PropertyRefImpl extends AbstractEdmItem implements PropertyRef {
-
-  private static final long serialVersionUID = 6738212067449628983L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Alias")
-  private String alias;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getAlias() {
-    return alias;
-  }
-
-  @Override
-  public void setAlias(final String alias) {
-    this.alias = alias;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index ef97c8b..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsDeserializer.java
+++ /dev/null
@@ -1,55 +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.edm.v3;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class AnnotationsDeserializer extends AbstractEdmDeserializer<AnnotationsImpl> {
-
-  @Override
-  protected AnnotationsImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AnnotationsImpl annotations = new AnnotationsImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Target".equals(jp.getCurrentName())) {
-          annotations.setTarget(jp.nextTextValue());
-        } else if ("Qualifier".equals(jp.getCurrentName())) {
-          annotations.setQualifier(jp.nextTextValue());
-        } else if ("typeAnnotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          annotations.getTypeAnnotations().add(jp.readValueAs( TypeAnnotationImpl.class));
-        } else if ("ValueAnnotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          annotations.getValueAnnotations().add(jp.readValueAs( ValueAnnotationImpl.class));
-        }
-      }
-    }
-
-    return annotations;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
deleted file mode 100644
index 7b68771..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AnnotationsImpl.java
+++ /dev/null
@@ -1,46 +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.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v3.Annotations;
-import org.apache.olingo.odata4.client.core.edm.AbstractAnnotations;
-
-@JsonDeserialize(using = AnnotationsDeserializer.class)
-public class AnnotationsImpl extends AbstractAnnotations implements Annotations {
-
-  private static final long serialVersionUID = 3877353656301805410L;
-
-  private final List<TypeAnnotationImpl> typeAnnotations = new ArrayList<TypeAnnotationImpl>();
-
-  private final List<ValueAnnotationImpl> valueAnnotations = new ArrayList<ValueAnnotationImpl>();
-
-  @Override
-  public List<TypeAnnotationImpl> getTypeAnnotations() {
-    return typeAnnotations;
-  }
-
-  @Override
-  public List<ValueAnnotationImpl> getValueAnnotations() {
-    return valueAnnotations;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index b8c032a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationDeserializer.java
+++ /dev/null
@@ -1,53 +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.edm.v3;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class AssociationDeserializer extends AbstractEdmDeserializer<AssociationImpl> {
-
-  @Override
-  protected AssociationImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AssociationImpl association = new AssociationImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          association.setName(jp.nextTextValue());
-        } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          association.setReferentialConstraint(jp.readValueAs( ReferentialConstraintImpl.class));
-        } else if ("End".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          association.getEnds().add(jp.readValueAs( AssociationEndImpl.class));
-        }
-      }
-    }
-
-    return association;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
deleted file mode 100644
index 0b41ff7..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationEndImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.OnDelete;
-import org.apache.olingo.odata4.client.api.edm.v3.AssociationEnd;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class AssociationEndImpl extends AbstractEdmItem implements AssociationEnd {
-
-  private static final long serialVersionUID = 3305394053564979376L;
-
-  @JsonProperty(value = "Type", required = true)
-  private String type;
-
-  @JsonProperty(value = "Role")
-  private String role;
-
-  @JsonProperty(value = "Multiplicity")
-  private String multiplicity;
-
-  @JsonProperty(value = "OnDelete")
-  private OnDelete onDelete;
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public String getRole() {
-    return role;
-  }
-
-  @Override
-  public void setRole(final String role) {
-    this.role = role;
-  }
-
-  @Override
-  public String getMultiplicity() {
-    return multiplicity;
-  }
-
-  @Override
-  public void setMultiplicity(final String multiplicity) {
-    this.multiplicity = multiplicity;
-  }
-
-  @Override
-  public OnDelete getOnDelete() {
-    return onDelete;
-  }
-
-  @Override
-  public void setOnDelete(final OnDelete onDelete) {
-    this.onDelete = onDelete;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
deleted file mode 100644
index f7e2a31..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationImpl.java
+++ /dev/null
@@ -1,63 +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.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v3.Association;
-import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraint;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-@JsonDeserialize(using = AssociationDeserializer.class)
-public class AssociationImpl extends AbstractEdmItem implements Association {
-
-  private static final long serialVersionUID = 73763231919532482L;
-
-  private String name;
-
-  private ReferentialConstraint referentialConstraint;
-
-  private List<AssociationEndImpl> ends = new ArrayList<AssociationEndImpl>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public ReferentialConstraint getReferentialConstraint() {
-    return referentialConstraint;
-  }
-
-  @Override
-  public void setReferentialConstraint(final ReferentialConstraint referentialConstraint) {
-    this.referentialConstraint = referentialConstraint;
-  }
-
-  @Override
-  public List<AssociationEndImpl> getEnds() {
-    return ends;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index ae0b96d..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetDeserializer.java
+++ /dev/null
@@ -1,52 +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.edm.v3;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class AssociationSetDeserializer extends AbstractEdmDeserializer<AssociationSetImpl> {
-
-  @Override
-  protected AssociationSetImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AssociationSetImpl associationSet = new AssociationSetImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          associationSet.setName(jp.nextTextValue());
-        } else if ("Association".equals(jp.getCurrentName())) {
-          associationSet.setAssociation(jp.nextTextValue());
-        } else if ("End".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          associationSet.getEnds().add(jp.readValueAs( AssociationSetEndImpl.class));
-        }
-      }
-    }
-
-    return associationSet;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
deleted file mode 100644
index 13abf06..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetEndImpl.java
+++ /dev/null
@@ -1,54 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.AssociationSetEnd;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class AssociationSetEndImpl extends AbstractEdmItem implements AssociationSetEnd {
-
-  private static final long serialVersionUID = -6238344152962217446L;
-
-  @JsonProperty("Role")
-  private String role;
-
-  @JsonProperty(value = "EntitySet", required = true)
-  private String entitySet;
-
-  @Override
-  public String getRole() {
-    return role;
-  }
-
-  @Override
-  public void setRole(final String role) {
-    this.role = role;
-  }
-
-  @Override
-  public String getEntitySet() {
-    return entitySet;
-  }
-
-  @Override
-  public void setEntitySet(final String entitySet) {
-    this.entitySet = entitySet;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
deleted file mode 100644
index 557c766..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/AssociationSetImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v3.AssociationSet;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-@JsonDeserialize(using = AssociationSetDeserializer.class)
-public class AssociationSetImpl extends AbstractEdmItem implements AssociationSet {
-
-  private static final long serialVersionUID = 1248430921598774799L;
-
-  private String name;
-
-  private String association;
-
-  private List<AssociationSetEndImpl> ends = new ArrayList<AssociationSetEndImpl>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getAssociation() {
-    return association;
-  }
-
-  @Override
-  public void setAssociation(final String association) {
-    this.association = association;
-  }
-
-  @Override
-  public List<AssociationSetEndImpl> getEnds() {
-    return ends;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
deleted file mode 100644
index e755581..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ComplexTypeImpl.java
+++ /dev/null
@@ -1,54 +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.edm.v3;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.ComplexType;
-import org.apache.olingo.odata4.client.core.edm.AbstractComplexType;
-
-public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
-
-  private static final long serialVersionUID = -1251230308269425962L;
-
-  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
-
-  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
-
-  @Override
-  public PropertyImpl getProperty(final String name) {
-    return (PropertyImpl) super.getProperty(name);
-  }
-
-  @Override
-  public List<PropertyImpl> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public NavigationPropertyImpl getNavigationProperty(String name) {
-    return (NavigationPropertyImpl) super.getNavigationProperty(name);
-  }
-
-  @Override
-  public List<NavigationPropertyImpl> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/DataServicesImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/DataServicesImpl.java
deleted file mode 100644
index 2d64109..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/DataServicesImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v3;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.core.edm.AbstractDataServices;
-
-public class DataServicesImpl extends AbstractDataServices {
-
-  private static final long serialVersionUID = 633129618050875211L;
-
-  private final List<SchemaImpl> schemas = new ArrayList<SchemaImpl>();
-
-  @Override
-  public List<SchemaImpl> getSchemas() {
-    return schemas;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
index 4076b35..f7e1993 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
@@ -22,6 +22,7 @@ import java.io.InputStream;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.ODataClient;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmMetadata;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl;
 
 public class EdmMetadataImpl extends AbstractEdmMetadata {
 


[04/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
index bc5fc31..b32dcae 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
@@ -18,9 +18,9 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 abstract class AnnotatedDynExprConstruct extends DynExprConstructImpl implements AnnotatedEdmItem {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
index 6292de9..8d49884 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
@@ -21,7 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 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.ExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = ApplyDeserializer.class)
 public class Apply extends AnnotatedDynExprConstruct {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
index f65b7fa..6468685 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class ApplyDeserializer extends AbstractEdmDeserializer<Apply> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
index 65d41d5..970d33f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = CastDeserializer.class)
 public class Cast extends AnnotatedDynExprConstruct {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
index b97c5e5..a404944 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
@@ -25,7 +25,7 @@ import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import java.math.BigInteger;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class CastDeserializer extends AbstractEdmDeserializer<Cast> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
index e7d9359..62925d1 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
@@ -21,7 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 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.ExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = CollectionDeserializer.class)
 public class Collection extends DynExprConstructImpl {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
index 51b6244..9d27cdb 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ConstExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
 
 public class ConstExprConstructImpl extends ExprConstructImpl implements ConstExprConstruct {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
index 9442977..ececbf2 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = DynExprConstructDeserializer.class)
 public abstract class DynExprConstructImpl extends ExprConstructImpl implements DynExprConstruct {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
index b35a424..a455a86 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 
 public class DynExprDoubleParamOp extends DynExprConstructImpl {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
index 52befcd..fa5862f 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 
 public class DynExprSingleParamOp extends DynExprConstructImpl {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
index 5cee1e8..b628006 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
@@ -18,8 +18,8 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
 public abstract class ExprConstructImpl extends AbstractEdmItem implements ExprConstruct {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
index 5c43058..f1c285d 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
@@ -18,7 +18,7 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
 
 public class If extends AnnotatedDynExprConstruct {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
index 7779b55..036a13c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = IsOfDeserializer.class)
 public class IsOf extends AnnotatedDynExprConstruct {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
index d8602c9..68e5358 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
@@ -25,7 +25,7 @@ import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import java.math.BigInteger;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class IsOfDeserializer extends AbstractEdmDeserializer<IsOf> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
index 217c7df..be762a9 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 
 @JsonDeserialize(using = LabeledElementDeserializer.class)
 public class LabeledElement extends AnnotatedDynExprConstruct {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
index 4ae9f64..60d9c57 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class LabeledElementDeserializer extends AbstractEdmDeserializer<LabeledElement> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
index 98896d7..8d7e21e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class NullDeserializer extends AbstractEdmDeserializer<Null> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
index 3abbd5f..4411682 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = PropertyValueDeserializer.class)
 public class PropertyValue extends AnnotatedDynExprConstruct {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
index af2ffb5..fd3dfae 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class PropertyValueDeserializer extends AbstractEdmDeserializer<PropertyValue> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
index 6c97568..dbd4567 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 
 public class RecordDeserializer extends AbstractEdmDeserializer<Record> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
index 91f52e7..eb32b16 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.odata4.client.core.edm.v4.annotation;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
 
 @JsonDeserialize(using = UrlRefDeserializer.class)
 public class UrlRef extends DynExprConstructImpl {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
new file mode 100644
index 0000000..07a069a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractAnnotations.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public abstract class AbstractAnnotations extends AbstractEdmItem
+        implements org.apache.olingo.odata4.client.api.edm.xml.AbstractAnnotations {
+
+  private static final long serialVersionUID = 4926640428016042620L;
+
+  @JsonProperty(value = "Target", required = true)
+  private String target;
+
+  @JsonProperty("Qualifier")
+  private String qualifier;
+
+  @Override
+  public String getTarget() {
+    return target;
+  }
+
+  @Override
+  public void setTarget(final String target) {
+    this.target = target;
+  }
+
+  @Override
+  public String getQualifier() {
+    return qualifier;
+  }
+
+  @Override
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
new file mode 100644
index 0000000..37f50e6
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractComplexType.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonNavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonProperty;
+import org.apache.olingo.odata4.client.core.op.impl.ComplexTypeDeserializer;
+
+@JsonDeserialize(using = ComplexTypeDeserializer.class)
+public abstract class AbstractComplexType extends AbstractEdmItem implements ComplexType {
+
+  private static final long serialVersionUID = -4765071294433482957L;
+
+  private String name;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public CommonProperty getProperty(final String name) {
+    return getOneByName(name, getProperties());
+  }
+
+  @Override
+  public CommonNavigationProperty getNavigationProperty(final String name) {
+    return getOneByName(name, getNavigationProperties());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.java
new file mode 100644
index 0000000..4af14e5
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractDataServices.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.client.core.edm.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.DataServices;
+
+@JsonDeserialize(using = DataServicesDeserializer.class)
+public abstract class AbstractDataServices extends AbstractEdmItem implements DataServices {
+
+  private static final long serialVersionUID = -9126377222393876166L;
+
+  private String dataServiceVersion;
+
+  private String maxDataServiceVersion;
+
+  @Override
+  public String getDataServiceVersion() {
+    return dataServiceVersion;
+  }
+
+  @Override
+  public void setDataServiceVersion(final String version) {
+    this.dataServiceVersion = version;
+  }
+
+  @Override
+  public String getMaxDataServiceVersion() {
+    return maxDataServiceVersion;
+  }
+
+  @Override
+  public void setMaxDataServiceVersion(final String version) {
+    this.maxDataServiceVersion = version;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmItem.java
new file mode 100644
index 0000000..eaa21cc
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmItem.java
@@ -0,0 +1,61 @@
+/*
+ * 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.xml;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public abstract class AbstractEdmItem {
+
+  protected <T extends Named> T getOneByName(final String name, final Collection<T> items) {
+    final List<T> result = getAllByName(name, items);
+    return result.isEmpty() ? null : result.get(0);
+  }
+
+  protected <T extends Named> List<T> getAllByName(final String name, final Collection<T> items) {
+    final List<T> result = new ArrayList<T>();
+    for (T type : items) {
+      if (name.equals(type.getName())) {
+        result.add(type);
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public boolean equals(final Object obj) {
+    return EqualsBuilder.reflectionEquals(this, obj);
+  }
+
+  @Override
+  public int hashCode() {
+    return HashCodeBuilder.reflectionHashCode(this);
+  }
+
+  @Override
+  public String toString() {
+    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
new file mode 100644
index 0000000..31c478e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmx.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.DataServices;
+import org.apache.olingo.odata4.client.api.edm.xml.Edmx;
+
+@JsonDeserialize(using = EdmxDeserializer.class)
+public abstract class AbstractEdmx extends AbstractEdmItem implements Edmx {
+
+  private static final long serialVersionUID = -5480835122183091469L;
+
+  private String version;
+
+  private DataServices dataServices;
+
+  @Override
+  public String getVersion() {
+    return version;
+  }
+
+  @Override
+  public void setVersion(final String version) {
+    this.version = version;
+  }
+
+  @Override
+  public DataServices getDataServices() {
+    return dataServices;
+  }
+
+  @Override
+  public void setDataServices(final DataServices dataServices) {
+    this.dataServices = dataServices;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
new file mode 100644
index 0000000..1d9e179
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityContainer.java
@@ -0,0 +1,107 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport;
+import org.apache.olingo.odata4.client.core.op.impl.EntityContainerDeserializer;
+
+@JsonDeserialize(using = EntityContainerDeserializer.class)
+public abstract class AbstractEntityContainer extends AbstractEdmItem implements EntityContainer {
+
+  private static final long serialVersionUID = 4121974387552855032L;
+
+  private String name;
+
+  private String _extends;
+
+  private boolean lazyLoadingEnabled;
+
+  private boolean defaultEntityContainer;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getExtends() {
+    return _extends;
+  }
+
+  @Override
+  public void setExtends(final String _extends) {
+    this._extends = _extends;
+  }
+
+  @Override
+  public boolean isLazyLoadingEnabled() {
+    return lazyLoadingEnabled;
+  }
+
+  @Override
+  public void setLazyLoadingEnabled(final boolean lazyLoadingEnabled) {
+    this.lazyLoadingEnabled = lazyLoadingEnabled;
+  }
+
+  @Override
+  public boolean isDefaultEntityContainer() {
+    return defaultEntityContainer;
+  }
+
+  @Override
+  public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
+    this.defaultEntityContainer = defaultEntityContainer;
+  }
+
+  @Override
+  public EntitySet getEntitySet(final String name) {
+    return getOneByName(name, getEntitySets());
+  }
+
+  /**
+   * Gets the first function import with given name.
+   *
+   * @param name name.
+   * @return function import.
+   */
+  @Override
+  public CommonFunctionImport getFunctionImport(final String name) {
+    return getOneByName(name, getFunctionImports());
+  }
+
+  /**
+   * Gets all function imports with given name.
+   *
+   * @param name name.
+   * @return function imports.
+   */
+  @Override
+  public List<? extends CommonFunctionImport> getFunctionImports(final String name) {
+    return getAllByName(name, getFunctionImports());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
new file mode 100644
index 0000000..8eff752
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntitySet.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
+import org.apache.olingo.odata4.client.core.op.impl.EntitySetDeserializer;
+
+@JsonDeserialize(using = EntitySetDeserializer.class)
+public abstract class AbstractEntitySet extends AbstractEdmItem implements EntitySet {
+
+  private static final long serialVersionUID = -6577263439520376420L;
+
+  private String name;
+
+  private String entityType;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getEntityType() {
+    return entityType;
+  }
+
+  @Override
+  public void setEntityType(final String entityType) {
+    this.entityType = entityType;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
new file mode 100644
index 0000000..9ddcc09
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEntityType.java
@@ -0,0 +1,90 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityKey;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.core.op.impl.EntityTypeDeserializer;
+
+@JsonDeserialize(using = EntityTypeDeserializer.class)
+public abstract class AbstractEntityType extends AbstractComplexType implements EntityType {
+
+  private static final long serialVersionUID = -1579462552966168139L;
+
+  private boolean abstractEntityType = false;
+
+  private String baseType;
+
+  private boolean openType = false;
+
+  private boolean hasStream = false;
+
+  private EntityKeyImpl key;
+
+  @Override
+  public boolean isAbstractEntityType() {
+    return abstractEntityType;
+  }
+
+  @Override
+  public void setAbstractEntityType(final boolean abstractEntityType) {
+    this.abstractEntityType = abstractEntityType;
+  }
+
+  @Override
+  public String getBaseType() {
+    return baseType;
+  }
+
+  @Override
+  public void setBaseType(final String baseType) {
+    this.baseType = baseType;
+  }
+
+  @Override
+  public boolean isOpenType() {
+    return openType;
+  }
+
+  @Override
+  public void setOpenType(final boolean openType) {
+    this.openType = openType;
+  }
+
+  @Override
+  public EntityKeyImpl getKey() {
+    return key;
+  }
+
+  public void setKey(final EntityKey key) {
+    this.key = (EntityKeyImpl) key;
+  }
+
+  @Override
+  public boolean isHasStream() {
+    return hasStream;
+  }
+
+  @Override
+  public void setHasStream(final boolean hasStream) {
+    this.hasStream = hasStream;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
new file mode 100644
index 0000000..0d54f18
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEnumType.java
@@ -0,0 +1,88 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.Member;
+import org.apache.olingo.odata4.client.core.op.impl.EnumTypeDeserializer;
+
+@JsonDeserialize(using = EnumTypeDeserializer.class)
+public abstract class AbstractEnumType extends AbstractEdmItem implements EnumType {
+
+  private static final long serialVersionUID = 2688487586103418210L;
+
+  private String name;
+
+  private String underlyingType;
+
+  private boolean flags;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getUnderlyingType() {
+    return underlyingType;
+  }
+
+  @Override
+  public void setUnderlyingType(final String underlyingType) {
+    this.underlyingType = underlyingType;
+  }
+
+  @Override
+  public boolean isFlags() {
+    return flags;
+  }
+
+  @Override
+  public void setFlags(final boolean flags) {
+    this.flags = flags;
+  }
+
+  @Override
+  public Member getMember(final String name) {
+    Member result = null;
+    for (Member member : getMembers()) {
+      if (name.equals(member.getName())) {
+        result = member;
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public Member getMember(final Integer value) {
+    Member result = null;
+    for (Member member : getMembers()) {
+      if (value.equals(member.getValue())) {
+        result = member;
+      }
+    }
+    return result;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
new file mode 100644
index 0000000..c1b2f95
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
@@ -0,0 +1,51 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.Member;
+
+public abstract class AbstractMember extends AbstractEdmItem implements Member {
+
+  private static final long serialVersionUID = -1852481655317148552L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty("Value")
+  private Integer value;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public Integer getValue() {
+    return value;
+  }
+
+  public void setValue(final Integer value) {
+    this.value = value;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
new file mode 100644
index 0000000..3917bce
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractNavigationProperty.java
@@ -0,0 +1,40 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonNavigationProperty;
+
+public class AbstractNavigationProperty extends AbstractEdmItem implements CommonNavigationProperty {
+
+  private static final long serialVersionUID = 3112463683071069594L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
new file mode 100644
index 0000000..66f9dea
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
@@ -0,0 +1,106 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
+
+public abstract class AbstractParameter extends AbstractEdmItem implements CommonParameter {
+
+  private static final long serialVersionUID = -4305016554930334342L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty(value = "Type", required = true)
+  private String type;
+
+  @JsonProperty(value = "Nullable")
+  private boolean nullable = true;
+
+  @JsonProperty("MaxLength")
+  private String maxLength;
+
+  @JsonProperty("Precision")
+  private BigInteger precision;
+
+  @JsonProperty("Scale")
+  private BigInteger scale;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public boolean isNullable() {
+    return nullable;
+  }
+
+  @Override
+  public void setNullable(final boolean nullable) {
+    this.nullable = nullable;
+  }
+
+  @Override
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  @Override
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  @Override
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  @Override
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  @Override
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  @Override
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
new file mode 100644
index 0000000..3f2754a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
@@ -0,0 +1,197 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonProperty;
+import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
+import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
+
+public abstract class AbstractProperty extends AbstractEdmItem implements CommonProperty {
+
+  private static final long serialVersionUID = -6004492361142315153L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty(value = "Type", required = true)
+  private String type;
+
+  @JsonProperty(value = "Nullable")
+  private boolean nullable = true;
+
+  @JsonProperty(value = "DefaultValue")
+  private String defaultValue;
+
+  @JsonProperty(value = "MaxLength")
+  private String maxLength;
+
+  @JsonProperty(value = "FixedLength")
+  private boolean fixedLength;
+
+  @JsonProperty(value = "Precision")
+  private BigInteger precision;
+
+  @JsonProperty(value = "Scale")
+  private BigInteger scale;
+
+  @JsonProperty(value = "Unicode")
+  private boolean unicode = true;
+
+  @JsonProperty(value = "Collation")
+  private String collation;
+
+  @JsonProperty(value = "SRID")
+  private String srid;
+
+  @JsonProperty(value = "ConcurrencyMode")
+  private ConcurrencyMode concurrencyMode;
+
+  @JsonProperty("StoreGeneratedPattern")
+  private StoreGeneratedPattern storeGeneratedPattern = StoreGeneratedPattern.None;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public boolean isNullable() {
+    return nullable;
+  }
+
+  @Override
+  public void setNullable(final boolean nullable) {
+    this.nullable = nullable;
+  }
+
+  @Override
+  public String getDefaultValue() {
+    return defaultValue;
+  }
+
+  @Override
+  public void setDefaultValue(final String defaultValue) {
+    this.defaultValue = defaultValue;
+  }
+
+  @Override
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  @Override
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  @Override
+  public boolean isFixedLength() {
+    return fixedLength;
+  }
+
+  @Override
+  public void setFixedLength(final boolean fixedLength) {
+    this.fixedLength = fixedLength;
+  }
+
+  @Override
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  @Override
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  @Override
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  @Override
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+
+  @Override
+  public boolean isUnicode() {
+    return unicode;
+  }
+
+  @Override
+  public void setUnicode(final boolean unicode) {
+    this.unicode = unicode;
+  }
+
+  @Override
+  public String getCollation() {
+    return collation;
+  }
+
+  @Override
+  public void setCollation(final String collation) {
+    this.collation = collation;
+  }
+
+  @Override
+  public String getSrid() {
+    return srid;
+  }
+
+  @Override
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+  @Override
+  public ConcurrencyMode getConcurrencyMode() {
+    return concurrencyMode;
+  }
+
+  @Override
+  public void setConcurrencyMode(final ConcurrencyMode concurrencyMode) {
+    this.concurrencyMode = concurrencyMode;
+  }
+
+  public StoreGeneratedPattern getStoreGeneratedPattern() {
+    return storeGeneratedPattern;
+  }
+
+  public void setStoreGeneratedPattern(final StoreGeneratedPattern storeGeneratedPattern) {
+    this.storeGeneratedPattern = storeGeneratedPattern;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
new file mode 100644
index 0000000..8f6d7c2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractSchema.java
@@ -0,0 +1,71 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.core.op.impl.SchemaDeserializer;
+
+@JsonDeserialize(using = SchemaDeserializer.class)
+public abstract class AbstractSchema extends AbstractEdmItem implements Schema {
+
+  private static final long serialVersionUID = -1356392748971378455L;
+
+  private String namespace;
+
+  private String alias;
+
+  @Override
+  public String getNamespace() {
+    return namespace;
+  }
+
+  @Override
+  public void setNamespace(final String namespace) {
+    this.namespace = namespace;
+  }
+
+  @Override
+  public String getAlias() {
+    return alias;
+  }
+
+  @Override
+  public void setAlias(final String alias) {
+    this.alias = alias;
+  }
+
+  @Override
+  public EnumType getEnumType(final String name) {
+    return getOneByName(name, getEnumTypes());
+  }
+
+  @Override
+  public ComplexType getComplexType(final String name) {
+    return getOneByName(name, getComplexTypes());
+  }
+
+  @Override
+  public EntityType getEntityType(final String name) {
+    return getOneByName(name, getEntityTypes());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/DataServicesDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/DataServicesDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/DataServicesDeserializer.java
new file mode 100644
index 0000000..f1c045f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/DataServicesDeserializer.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml;
+
+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;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import java.io.IOException;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+
+public class DataServicesDeserializer extends AbstractEdmDeserializer<AbstractDataServices> {
+
+  @Override
+  protected AbstractDataServices doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AbstractDataServices dataServices = ODataServiceVersion.V30 == client.getServiceVersion()
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.DataServicesImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.DataServicesImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("DataServiceVersion".equals(jp.getCurrentName())) {
+          dataServices.setDataServiceVersion(jp.nextTextValue());
+        } else if ("MaxDataServiceVersion".equals(jp.getCurrentName())) {
+          dataServices.setMaxDataServiceVersion(jp.nextTextValue());
+        } else if ("Schema".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          if (dataServices instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.DataServicesImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.DataServicesImpl) dataServices).
+                    getSchemas().add(jp.readValueAs(
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl.class));
+
+          } else {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.DataServicesImpl) dataServices).
+                    getSchemas().add(jp.readValueAs(
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl.class));
+          }
+        }
+      }
+    }
+
+    return dataServices;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EdmxDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EdmxDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EdmxDeserializer.java
new file mode 100644
index 0000000..8aa791d
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EdmxDeserializer.java
@@ -0,0 +1,67 @@
+/*
+ * 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.xml;
+
+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;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import java.io.IOException;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ReferenceImpl;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+
+@SuppressWarnings("rawtypes")
+public class EdmxDeserializer extends AbstractEdmDeserializer<AbstractEdmx> {
+
+  @Override
+  protected AbstractEdmx doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AbstractEdmx edmx = ODataServiceVersion.V30 == client.getServiceVersion()
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.EdmxImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.EdmxImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Version".equals(jp.getCurrentName())) {
+          edmx.setVersion(jp.nextTextValue());
+        } else if ("DataServices".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          if (edmx instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.EdmxImpl) {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v3.EdmxImpl) edmx).
+                    setDataServices(jp.readValueAs(
+                                    org.apache.olingo.odata4.client.core.edm.xml.v3.DataServicesImpl.class));
+          } else {
+            ((org.apache.olingo.odata4.client.core.edm.xml.v4.EdmxImpl) edmx).
+                    setDataServices(jp.readValueAs(
+                                    org.apache.olingo.odata4.client.core.edm.xml.v4.DataServicesImpl.class));
+          }
+        } else if ("Reference".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.EdmxImpl) edmx).getReferences().
+                  add(jp.readValueAs( ReferenceImpl.class));
+        }
+      }
+    }
+
+    return edmx;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java
new file mode 100644
index 0000000..7434d96
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/EntityKeyImpl.java
@@ -0,0 +1,38 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityKey;
+import org.apache.olingo.odata4.client.core.op.impl.EntityKeyDeserializer;
+
+@JsonDeserialize(using = EntityKeyDeserializer.class)
+public class EntityKeyImpl extends AbstractEdmItem implements EntityKey {
+
+  private static final long serialVersionUID = 2586047015894794685L;
+
+  private final List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
+
+  @Override
+  public List<PropertyRefImpl> getPropertyRefs() {
+    return propertyRefs;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
new file mode 100644
index 0000000..a74f1e3
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/OnDeleteImpl.java
@@ -0,0 +1,42 @@
+/*
+ * 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.xml;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.OnDeleteAction;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
+
+public class OnDeleteImpl extends AbstractEdmItem implements OnDelete {
+
+  private static final long serialVersionUID = -5321523424474336347L;
+
+  @JsonProperty(value = "Action", required = true)
+  private OnDeleteAction action = OnDeleteAction.None;
+
+  @Override
+  public OnDeleteAction getAction() {
+    return action;
+  }
+
+  @Override
+  public void setAction(final OnDeleteAction action) {
+    this.action = action;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
new file mode 100644
index 0000000..a74963b
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyRefImpl.java
@@ -0,0 +1,54 @@
+/*
+ * 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.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.PropertyRef;
+
+public class PropertyRefImpl extends AbstractEdmItem implements PropertyRef {
+
+  private static final long serialVersionUID = 6738212067449628983L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty(value = "Alias")
+  private String alias;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getAlias() {
+    return alias;
+  }
+
+  @Override
+  public void setAlias(final String alias) {
+    this.alias = alias;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsDeserializer.java
new file mode 100644
index 0000000..d3c4e18
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsDeserializer.java
@@ -0,0 +1,55 @@
+/*
+ * 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.xml.v3;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class AnnotationsDeserializer extends AbstractEdmDeserializer<AnnotationsImpl> {
+
+  @Override
+  protected AnnotationsImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AnnotationsImpl annotations = new AnnotationsImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Target".equals(jp.getCurrentName())) {
+          annotations.setTarget(jp.nextTextValue());
+        } else if ("Qualifier".equals(jp.getCurrentName())) {
+          annotations.setQualifier(jp.nextTextValue());
+        } else if ("typeAnnotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          annotations.getTypeAnnotations().add(jp.readValueAs( TypeAnnotationImpl.class));
+        } else if ("ValueAnnotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          annotations.getValueAnnotations().add(jp.readValueAs( ValueAnnotationImpl.class));
+        }
+      }
+    }
+
+    return annotations;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
new file mode 100644
index 0000000..c2f4672
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AnnotationsImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Annotations;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractAnnotations;
+
+@JsonDeserialize(using = AnnotationsDeserializer.class)
+public class AnnotationsImpl extends AbstractAnnotations implements Annotations {
+
+  private static final long serialVersionUID = 3877353656301805410L;
+
+  private final List<TypeAnnotationImpl> typeAnnotations = new ArrayList<TypeAnnotationImpl>();
+
+  private final List<ValueAnnotationImpl> valueAnnotations = new ArrayList<ValueAnnotationImpl>();
+
+  @Override
+  public List<TypeAnnotationImpl> getTypeAnnotations() {
+    return typeAnnotations;
+  }
+
+  @Override
+  public List<ValueAnnotationImpl> getValueAnnotations() {
+    return valueAnnotations;
+  }
+
+}


[10/22] git commit: [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
[OLINGO-169] Package renaming according to latest ML discussion


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

Branch: refs/heads/olingo169
Commit: cdb520e34b29e2ca538b3c6d8e9d505bde6f57c3
Parents: eb886d6
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Feb 27 10:54:04 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Feb 27 10:54:04 2014 +0100

----------------------------------------------------------------------
 .../client/api/edm/AbstractAnnotations.java     |  30 ---
 .../client/api/edm/CommonFunctionImport.java    |  22 ---
 .../api/edm/CommonNavigationProperty.java       |  22 ---
 .../odata4/client/api/edm/CommonParameter.java  |  45 -----
 .../odata4/client/api/edm/CommonProperty.java   |  74 -------
 .../odata4/client/api/edm/ComplexType.java      |  32 ---
 .../odata4/client/api/edm/DataServices.java     |  34 ----
 .../odata4/client/api/edm/EdmMetadata.java      |   1 +
 .../olingo/odata4/client/api/edm/EdmType.java   |   3 +
 .../olingo/odata4/client/api/edm/Edmx.java      |  30 ---
 .../odata4/client/api/edm/EntityContainer.java  |  58 ------
 .../olingo/odata4/client/api/edm/EntityKey.java |  26 ---
 .../olingo/odata4/client/api/edm/EntitySet.java |  26 ---
 .../odata4/client/api/edm/EntityType.java       |  42 ----
 .../olingo/odata4/client/api/edm/EnumType.java  |  38 ----
 .../olingo/odata4/client/api/edm/Member.java    |  26 ---
 .../olingo/odata4/client/api/edm/Named.java     |  26 ---
 .../olingo/odata4/client/api/edm/OnDelete.java  |  28 ---
 .../odata4/client/api/edm/PropertyRef.java      |  26 ---
 .../olingo/odata4/client/api/edm/Schema.java    |  79 --------
 .../odata4/client/api/edm/v3/Annotations.java   |  29 ---
 .../odata4/client/api/edm/v3/Association.java   |  32 ---
 .../client/api/edm/v3/AssociationEnd.java       |  40 ----
 .../client/api/edm/v3/AssociationSet.java       |  31 ---
 .../client/api/edm/v3/AssociationSetEnd.java    |  30 ---
 .../client/api/edm/v3/FunctionImport.java       |  60 ------
 .../client/api/edm/v3/NavigationProperty.java   |  34 ----
 .../odata4/client/api/edm/v3/Parameter.java     |  26 ---
 .../odata4/client/api/edm/v3/ParameterMode.java |  27 ---
 .../odata4/client/api/edm/v3/Property.java      |  50 -----
 .../odata4/client/api/edm/v3/PropertyValue.java |  59 ------
 .../api/edm/v3/ReferentialConstraint.java       |  30 ---
 .../api/edm/v3/ReferentialConstraintRole.java   |  32 ---
 .../client/api/edm/v3/TypeAnnotation.java       |  35 ----
 .../olingo/odata4/client/api/edm/v3/Using.java  |  31 ---
 .../client/api/edm/v3/ValueAnnotation.java      |  63 ------
 .../odata4/client/api/edm/v3/ValueTerm.java     |  28 ---
 .../olingo/odata4/client/api/edm/v4/Action.java |  43 ----
 .../odata4/client/api/edm/v4/ActionImport.java  |  26 ---
 .../client/api/edm/v4/AnnotatedEdmItem.java     |  26 ---
 .../odata4/client/api/edm/v4/Annotation.java    |  41 ----
 .../odata4/client/api/edm/v4/Annotations.java   |  29 ---
 .../odata4/client/api/edm/v4/CSDLElement.java   |  37 ----
 .../odata4/client/api/edm/v4/ComplexType.java   |  35 ----
 .../olingo/odata4/client/api/edm/v4/Edmx.java   |  26 ---
 .../client/api/edm/v4/EntityContainer.java      |  43 ----
 .../odata4/client/api/edm/v4/EntitySet.java     |  30 ---
 .../odata4/client/api/edm/v4/EntityType.java    |  23 ---
 .../odata4/client/api/edm/v4/Function.java      |  26 ---
 .../client/api/edm/v4/FunctionImport.java       |  32 ---
 .../odata4/client/api/edm/v4/Include.java       |  30 ---
 .../client/api/edm/v4/IncludeAnnotations.java   |  34 ----
 .../client/api/edm/v4/NavigationProperty.java   |  49 -----
 .../api/edm/v4/NavigationPropertyBinding.java   |  31 ---
 .../client/api/edm/v4/OnDeleteAction.java       |  28 ---
 .../client/api/edm/v4/OperationImport.java      |  28 ---
 .../odata4/client/api/edm/v4/Parameter.java     |  26 ---
 .../odata4/client/api/edm/v4/Property.java      |  25 ---
 .../odata4/client/api/edm/v4/Reference.java     |  35 ----
 .../api/edm/v4/ReferentialConstraint.java       |  31 ---
 .../odata4/client/api/edm/v4/ReturnType.java    |  48 -----
 .../odata4/client/api/edm/v4/Singleton.java     |  32 ---
 .../olingo/odata4/client/api/edm/v4/Term.java   |  60 ------
 .../client/api/edm/v4/TypeDefinition.java       |  52 -----
 .../edm/v4/annotation/ConstExprConstruct.java   |  56 ------
 .../api/edm/v4/annotation/DynExprConstruct.java |  23 ---
 .../api/edm/v4/annotation/ExprConstruct.java    |  23 ---
 .../client/api/edm/xml/AbstractAnnotations.java |  30 +++
 .../api/edm/xml/CommonFunctionImport.java       |  22 +++
 .../api/edm/xml/CommonNavigationProperty.java   |  22 +++
 .../client/api/edm/xml/CommonParameter.java     |  45 +++++
 .../client/api/edm/xml/CommonProperty.java      |  74 +++++++
 .../odata4/client/api/edm/xml/ComplexType.java  |  32 +++
 .../odata4/client/api/edm/xml/DataServices.java |  34 ++++
 .../olingo/odata4/client/api/edm/xml/Edmx.java  |  30 +++
 .../client/api/edm/xml/EntityContainer.java     |  58 ++++++
 .../odata4/client/api/edm/xml/EntityKey.java    |  26 +++
 .../odata4/client/api/edm/xml/EntitySet.java    |  26 +++
 .../odata4/client/api/edm/xml/EntityType.java   |  42 ++++
 .../odata4/client/api/edm/xml/EnumType.java     |  38 ++++
 .../odata4/client/api/edm/xml/Member.java       |  26 +++
 .../olingo/odata4/client/api/edm/xml/Named.java |  26 +++
 .../odata4/client/api/edm/xml/OnDelete.java     |  28 +++
 .../odata4/client/api/edm/xml/PropertyRef.java  |  26 +++
 .../odata4/client/api/edm/xml/Schema.java       |  79 ++++++++
 .../client/api/edm/xml/v3/Annotations.java      |  29 +++
 .../client/api/edm/xml/v3/Association.java      |  32 +++
 .../client/api/edm/xml/v3/AssociationEnd.java   |  40 ++++
 .../client/api/edm/xml/v3/AssociationSet.java   |  31 +++
 .../api/edm/xml/v3/AssociationSetEnd.java       |  30 +++
 .../client/api/edm/xml/v3/FunctionImport.java   |  60 ++++++
 .../api/edm/xml/v3/NavigationProperty.java      |  34 ++++
 .../odata4/client/api/edm/xml/v3/Parameter.java |  26 +++
 .../client/api/edm/xml/v3/ParameterMode.java    |  27 +++
 .../odata4/client/api/edm/xml/v3/Property.java  |  50 +++++
 .../client/api/edm/xml/v3/PropertyValue.java    |  59 ++++++
 .../api/edm/xml/v3/ReferentialConstraint.java   |  30 +++
 .../edm/xml/v3/ReferentialConstraintRole.java   |  32 +++
 .../client/api/edm/xml/v3/TypeAnnotation.java   |  35 ++++
 .../odata4/client/api/edm/xml/v3/Using.java     |  31 +++
 .../client/api/edm/xml/v3/ValueAnnotation.java  |  63 ++++++
 .../odata4/client/api/edm/xml/v3/ValueTerm.java |  28 +++
 .../odata4/client/api/edm/xml/v4/Action.java    |  43 ++++
 .../client/api/edm/xml/v4/ActionImport.java     |  26 +++
 .../client/api/edm/xml/v4/AnnotatedEdmItem.java |  26 +++
 .../client/api/edm/xml/v4/Annotation.java       |  41 ++++
 .../client/api/edm/xml/v4/Annotations.java      |  29 +++
 .../client/api/edm/xml/v4/CSDLElement.java      |  37 ++++
 .../client/api/edm/xml/v4/ComplexType.java      |  35 ++++
 .../odata4/client/api/edm/xml/v4/Edmx.java      |  26 +++
 .../client/api/edm/xml/v4/EntityContainer.java  |  43 ++++
 .../odata4/client/api/edm/xml/v4/EntitySet.java |  30 +++
 .../client/api/edm/xml/v4/EntityType.java       |  23 +++
 .../odata4/client/api/edm/xml/v4/Function.java  |  26 +++
 .../client/api/edm/xml/v4/FunctionImport.java   |  32 +++
 .../odata4/client/api/edm/xml/v4/Include.java   |  30 +++
 .../api/edm/xml/v4/IncludeAnnotations.java      |  34 ++++
 .../api/edm/xml/v4/NavigationProperty.java      |  49 +++++
 .../edm/xml/v4/NavigationPropertyBinding.java   |  31 +++
 .../client/api/edm/xml/v4/OnDeleteAction.java   |  28 +++
 .../client/api/edm/xml/v4/OperationImport.java  |  28 +++
 .../odata4/client/api/edm/xml/v4/Parameter.java |  26 +++
 .../odata4/client/api/edm/xml/v4/Property.java  |  25 +++
 .../odata4/client/api/edm/xml/v4/Reference.java |  35 ++++
 .../api/edm/xml/v4/ReferentialConstraint.java   |  31 +++
 .../client/api/edm/xml/v4/ReturnType.java       |  48 +++++
 .../odata4/client/api/edm/xml/v4/Singleton.java |  32 +++
 .../odata4/client/api/edm/xml/v4/Term.java      |  60 ++++++
 .../client/api/edm/xml/v4/TypeDefinition.java   |  52 +++++
 .../xml/v4/annotation/ConstExprConstruct.java   |  56 ++++++
 .../edm/xml/v4/annotation/DynExprConstruct.java |  23 +++
 .../edm/xml/v4/annotation/ExprConstruct.java    |  23 +++
 .../odata4/client/api/op/ODataDeserializer.java |   2 +-
 .../client/core/edm/AbstractAnnotations.java    |  53 -----
 .../client/core/edm/AbstractComplexType.java    |  53 -----
 .../client/core/edm/AbstractDataServices.java   |  52 -----
 .../odata4/client/core/edm/AbstractEdmItem.java |  61 ------
 .../client/core/edm/AbstractEdmMetadata.java    |   5 +-
 .../odata4/client/core/edm/AbstractEdmType.java |  11 +-
 .../odata4/client/core/edm/AbstractEdmx.java    |  53 -----
 .../core/edm/AbstractEntityContainer.java       | 107 ----------
 .../client/core/edm/AbstractEntitySet.java      |  53 -----
 .../client/core/edm/AbstractEntityType.java     |  90 ---------
 .../client/core/edm/AbstractEnumType.java       |  88 ---------
 .../odata4/client/core/edm/AbstractMember.java  |  51 -----
 .../core/edm/AbstractNavigationProperty.java    |  40 ----
 .../client/core/edm/AbstractParameter.java      | 106 ----------
 .../client/core/edm/AbstractProperty.java       | 197 -------------------
 .../odata4/client/core/edm/AbstractSchema.java  |  71 -------
 .../core/edm/DataServicesDeserializer.java      |  64 ------
 .../client/core/edm/EdmxDeserializer.java       |  67 -------
 .../odata4/client/core/edm/EntityKeyImpl.java   |  38 ----
 .../odata4/client/core/edm/OnDeleteImpl.java    |  42 ----
 .../odata4/client/core/edm/PropertyRefImpl.java |  54 -----
 .../core/edm/v3/AnnotationsDeserializer.java    |  55 ------
 .../client/core/edm/v3/AnnotationsImpl.java     |  46 -----
 .../core/edm/v3/AssociationDeserializer.java    |  53 -----
 .../client/core/edm/v3/AssociationEndImpl.java  |  81 --------
 .../client/core/edm/v3/AssociationImpl.java     |  63 ------
 .../core/edm/v3/AssociationSetDeserializer.java |  52 -----
 .../core/edm/v3/AssociationSetEndImpl.java      |  54 -----
 .../client/core/edm/v3/AssociationSetImpl.java  |  62 ------
 .../client/core/edm/v3/ComplexTypeImpl.java     |  54 -----
 .../client/core/edm/v3/DataServicesImpl.java    |  36 ----
 .../client/core/edm/v3/EdmMetadataImpl.java     |   1 +
 .../odata4/client/core/edm/v3/EdmTypeImpl.java  |   3 +
 .../odata4/client/core/edm/v3/EdmxImpl.java     |  32 ---
 .../client/core/edm/v3/EntityContainerImpl.java |  65 ------
 .../client/core/edm/v3/EntitySetImpl.java       |  27 ---
 .../client/core/edm/v3/EntityTypeImpl.java      |  53 -----
 .../odata4/client/core/edm/v3/EnumTypeImpl.java |  46 -----
 .../core/edm/v3/FunctionImportDeserializer.java |  67 -------
 .../client/core/edm/v3/FunctionImportImpl.java  | 146 --------------
 .../odata4/client/core/edm/v3/MemberImpl.java   |  27 ---
 .../core/edm/v3/NavigationPropertyImpl.java     |  68 -------
 .../client/core/edm/v3/ParameterImpl.java       |  43 ----
 .../odata4/client/core/edm/v3/PropertyImpl.java |  96 ---------
 .../client/core/edm/v3/PropertyValueImpl.java   | 135 -------------
 .../core/edm/v3/ReferentialConstraintImpl.java  |  58 ------
 .../ReferentialConstraintRoleDeserializer.java  |  51 -----
 .../edm/v3/ReferentialConstraintRoleImpl.java   |  50 -----
 .../odata4/client/core/edm/v3/SchemaImpl.java   | 129 ------------
 .../core/edm/v3/TypeAnnotationDeserializer.java |  52 -----
 .../client/core/edm/v3/TypeAnnotationImpl.java  |  63 ------
 .../odata4/client/core/edm/v3/UsingImpl.java    |  54 -----
 .../client/core/edm/v3/ValueAnnotationImpl.java | 148 --------------
 .../client/core/edm/v3/ValueTermImpl.java       |  54 -----
 .../core/edm/v4/AbstractAnnotatedEdmItem.java   |  45 -----
 .../client/core/edm/v4/ActionDeserializer.java  |  60 ------
 .../odata4/client/core/edm/v4/ActionImpl.java   |  92 ---------
 .../client/core/edm/v4/ActionImportImpl.java    |  67 -------
 .../core/edm/v4/AnnotationDeserializer.java     |  57 ------
 .../client/core/edm/v4/AnnotationImpl.java      |  82 --------
 .../core/edm/v4/AnnotationsDeserializer.java    |  53 -----
 .../client/core/edm/v4/AnnotationsImpl.java     |  49 -----
 .../client/core/edm/v4/ComplexTypeImpl.java     | 103 ----------
 .../client/core/edm/v4/DataServicesImpl.java    |  36 ----
 .../client/core/edm/v4/EdmMetadataImpl.java     |   3 +
 .../odata4/client/core/edm/v4/EdmTypeImpl.java  |   3 +
 .../odata4/client/core/edm/v4/EdmxImpl.java     |  42 ----
 .../client/core/edm/v4/EntityContainerImpl.java | 123 ------------
 .../client/core/edm/v4/EntitySetImpl.java       |  63 ------
 .../client/core/edm/v4/EntityTypeImpl.java      |  67 -------
 .../odata4/client/core/edm/v4/EnumTypeImpl.java |  60 ------
 .../core/edm/v4/FunctionDeserializer.java       |  62 ------
 .../odata4/client/core/edm/v4/FunctionImpl.java |  41 ----
 .../client/core/edm/v4/FunctionImportImpl.java  |  96 ---------
 .../core/edm/v4/IncludeAnnotationsImpl.java     |  68 -------
 .../odata4/client/core/edm/v4/IncludeImpl.java  |  55 ------
 .../odata4/client/core/edm/v4/MemberImpl.java   |  45 -----
 .../edm/v4/NavigationPropertyBindingImpl.java   |  55 ------
 .../edm/v4/NavigationPropertyDeserializer.java  |  67 -------
 .../core/edm/v4/NavigationPropertyImpl.java     | 114 -----------
 .../client/core/edm/v4/ParameterImpl.java       |  42 ----
 .../odata4/client/core/edm/v4/PropertyImpl.java |  44 -----
 .../core/edm/v4/ReferenceDeserializer.java      |  58 ------
 .../client/core/edm/v4/ReferenceImpl.java       |  67 -------
 .../core/edm/v4/ReferentialConstraintImpl.java  |  54 -----
 .../client/core/edm/v4/ReturnTypeImpl.java      | 108 ----------
 .../odata4/client/core/edm/v4/SchemaImpl.java   | 165 ----------------
 .../core/edm/v4/SingletonDeserializer.java      |  57 ------
 .../client/core/edm/v4/SingletonImpl.java       |  63 ------
 .../client/core/edm/v4/TermDeserializer.java    |  75 -------
 .../odata4/client/core/edm/v4/TermImpl.java     | 148 --------------
 .../core/edm/v4/TypeDefinitionDeserializer.java |  65 ------
 .../client/core/edm/v4/TypeDefinitionImpl.java  | 122 ------------
 .../annotation/AnnotatedDynExprConstruct.java   |   6 +-
 .../client/core/edm/v4/annotation/Apply.java    |   2 +-
 .../edm/v4/annotation/ApplyDeserializer.java    |   2 +-
 .../client/core/edm/v4/annotation/Cast.java     |   2 +-
 .../edm/v4/annotation/CastDeserializer.java     |   2 +-
 .../core/edm/v4/annotation/Collection.java      |   2 +-
 .../v4/annotation/ConstExprConstructImpl.java   |   2 +-
 .../edm/v4/annotation/DynExprConstructImpl.java |   2 +-
 .../edm/v4/annotation/DynExprDoubleParamOp.java |   2 +-
 .../edm/v4/annotation/DynExprSingleParamOp.java |   2 +-
 .../edm/v4/annotation/ExprConstructImpl.java    |   4 +-
 .../client/core/edm/v4/annotation/If.java       |   2 +-
 .../client/core/edm/v4/annotation/IsOf.java     |   2 +-
 .../edm/v4/annotation/IsOfDeserializer.java     |   2 +-
 .../core/edm/v4/annotation/LabeledElement.java  |   2 +-
 .../annotation/LabeledElementDeserializer.java  |   2 +-
 .../edm/v4/annotation/NullDeserializer.java     |   2 +-
 .../core/edm/v4/annotation/PropertyValue.java   |   2 +-
 .../annotation/PropertyValueDeserializer.java   |   2 +-
 .../edm/v4/annotation/RecordDeserializer.java   |   2 +-
 .../client/core/edm/v4/annotation/UrlRef.java   |   2 +-
 .../core/edm/xml/AbstractAnnotations.java       |  53 +++++
 .../core/edm/xml/AbstractComplexType.java       |  53 +++++
 .../core/edm/xml/AbstractDataServices.java      |  52 +++++
 .../client/core/edm/xml/AbstractEdmItem.java    |  61 ++++++
 .../client/core/edm/xml/AbstractEdmx.java       |  53 +++++
 .../core/edm/xml/AbstractEntityContainer.java   | 107 ++++++++++
 .../client/core/edm/xml/AbstractEntitySet.java  |  53 +++++
 .../client/core/edm/xml/AbstractEntityType.java |  90 +++++++++
 .../client/core/edm/xml/AbstractEnumType.java   |  88 +++++++++
 .../client/core/edm/xml/AbstractMember.java     |  51 +++++
 .../edm/xml/AbstractNavigationProperty.java     |  40 ++++
 .../client/core/edm/xml/AbstractParameter.java  | 106 ++++++++++
 .../client/core/edm/xml/AbstractProperty.java   | 197 +++++++++++++++++++
 .../client/core/edm/xml/AbstractSchema.java     |  71 +++++++
 .../core/edm/xml/DataServicesDeserializer.java  |  64 ++++++
 .../client/core/edm/xml/EdmxDeserializer.java   |  67 +++++++
 .../client/core/edm/xml/EntityKeyImpl.java      |  38 ++++
 .../client/core/edm/xml/OnDeleteImpl.java       |  42 ++++
 .../client/core/edm/xml/PropertyRefImpl.java    |  54 +++++
 .../edm/xml/v3/AnnotationsDeserializer.java     |  55 ++++++
 .../client/core/edm/xml/v3/AnnotationsImpl.java |  46 +++++
 .../edm/xml/v3/AssociationDeserializer.java     |  53 +++++
 .../core/edm/xml/v3/AssociationEndImpl.java     |  81 ++++++++
 .../client/core/edm/xml/v3/AssociationImpl.java |  63 ++++++
 .../edm/xml/v3/AssociationSetDeserializer.java  |  52 +++++
 .../core/edm/xml/v3/AssociationSetEndImpl.java  |  54 +++++
 .../core/edm/xml/v3/AssociationSetImpl.java     |  62 ++++++
 .../client/core/edm/xml/v3/ComplexTypeImpl.java |  54 +++++
 .../core/edm/xml/v3/DataServicesImpl.java       |  36 ++++
 .../odata4/client/core/edm/xml/v3/EdmxImpl.java |  32 +++
 .../core/edm/xml/v3/EntityContainerImpl.java    |  65 ++++++
 .../client/core/edm/xml/v3/EntitySetImpl.java   |  27 +++
 .../client/core/edm/xml/v3/EntityTypeImpl.java  |  53 +++++
 .../client/core/edm/xml/v3/EnumTypeImpl.java    |  46 +++++
 .../edm/xml/v3/FunctionImportDeserializer.java  |  67 +++++++
 .../core/edm/xml/v3/FunctionImportImpl.java     | 146 ++++++++++++++
 .../client/core/edm/xml/v3/MemberImpl.java      |  27 +++
 .../core/edm/xml/v3/NavigationPropertyImpl.java |  68 +++++++
 .../client/core/edm/xml/v3/ParameterImpl.java   |  43 ++++
 .../client/core/edm/xml/v3/PropertyImpl.java    |  96 +++++++++
 .../core/edm/xml/v3/PropertyValueImpl.java      | 135 +++++++++++++
 .../edm/xml/v3/ReferentialConstraintImpl.java   |  58 ++++++
 .../ReferentialConstraintRoleDeserializer.java  |  51 +++++
 .../xml/v3/ReferentialConstraintRoleImpl.java   |  50 +++++
 .../client/core/edm/xml/v3/SchemaImpl.java      | 129 ++++++++++++
 .../edm/xml/v3/TypeAnnotationDeserializer.java  |  52 +++++
 .../core/edm/xml/v3/TypeAnnotationImpl.java     |  63 ++++++
 .../client/core/edm/xml/v3/UsingImpl.java       |  54 +++++
 .../core/edm/xml/v3/ValueAnnotationImpl.java    | 148 ++++++++++++++
 .../client/core/edm/xml/v3/ValueTermImpl.java   |  54 +++++
 .../edm/xml/v4/AbstractAnnotatedEdmItem.java    |  45 +++++
 .../core/edm/xml/v4/ActionDeserializer.java     |  60 ++++++
 .../client/core/edm/xml/v4/ActionImpl.java      |  92 +++++++++
 .../core/edm/xml/v4/ActionImportImpl.java       |  67 +++++++
 .../core/edm/xml/v4/AnnotationDeserializer.java |  57 ++++++
 .../client/core/edm/xml/v4/AnnotationImpl.java  |  82 ++++++++
 .../edm/xml/v4/AnnotationsDeserializer.java     |  53 +++++
 .../client/core/edm/xml/v4/AnnotationsImpl.java |  49 +++++
 .../client/core/edm/xml/v4/ComplexTypeImpl.java | 103 ++++++++++
 .../core/edm/xml/v4/DataServicesImpl.java       |  36 ++++
 .../odata4/client/core/edm/xml/v4/EdmxImpl.java |  42 ++++
 .../core/edm/xml/v4/EntityContainerImpl.java    | 123 ++++++++++++
 .../client/core/edm/xml/v4/EntitySetImpl.java   |  63 ++++++
 .../client/core/edm/xml/v4/EntityTypeImpl.java  |  67 +++++++
 .../client/core/edm/xml/v4/EnumTypeImpl.java    |  60 ++++++
 .../core/edm/xml/v4/FunctionDeserializer.java   |  62 ++++++
 .../client/core/edm/xml/v4/FunctionImpl.java    |  41 ++++
 .../core/edm/xml/v4/FunctionImportImpl.java     |  96 +++++++++
 .../core/edm/xml/v4/IncludeAnnotationsImpl.java |  68 +++++++
 .../client/core/edm/xml/v4/IncludeImpl.java     |  55 ++++++
 .../client/core/edm/xml/v4/MemberImpl.java      |  45 +++++
 .../xml/v4/NavigationPropertyBindingImpl.java   |  55 ++++++
 .../xml/v4/NavigationPropertyDeserializer.java  |  67 +++++++
 .../core/edm/xml/v4/NavigationPropertyImpl.java | 114 +++++++++++
 .../client/core/edm/xml/v4/ParameterImpl.java   |  42 ++++
 .../client/core/edm/xml/v4/PropertyImpl.java    |  44 +++++
 .../core/edm/xml/v4/ReferenceDeserializer.java  |  58 ++++++
 .../client/core/edm/xml/v4/ReferenceImpl.java   |  67 +++++++
 .../edm/xml/v4/ReferentialConstraintImpl.java   |  54 +++++
 .../client/core/edm/xml/v4/ReturnTypeImpl.java  | 108 ++++++++++
 .../client/core/edm/xml/v4/SchemaImpl.java      | 165 ++++++++++++++++
 .../core/edm/xml/v4/SingletonDeserializer.java  |  57 ++++++
 .../client/core/edm/xml/v4/SingletonImpl.java   |  63 ++++++
 .../core/edm/xml/v4/TermDeserializer.java       |  75 +++++++
 .../odata4/client/core/edm/xml/v4/TermImpl.java | 148 ++++++++++++++
 .../edm/xml/v4/TypeDefinitionDeserializer.java  |  65 ++++++
 .../core/edm/xml/v4/TypeDefinitionImpl.java     | 122 ++++++++++++
 .../core/op/impl/AbstractEdmDeserializer.java   |   2 +-
 .../core/op/impl/ComplexTypeDeserializer.java   |  30 +--
 .../op/impl/EntityContainerDeserializer.java    |  42 ++--
 .../core/op/impl/EntityKeyDeserializer.java     |   4 +-
 .../core/op/impl/EntitySetDeserializer.java     |  16 +-
 .../core/op/impl/EntityTypeDeserializer.java    |  32 +--
 .../core/op/impl/EnumTypeDeserializer.java      |  20 +-
 .../client/core/op/impl/SchemaDeserializer.java |  86 ++++----
 .../core/op/impl/v3/ODataDeserializerImpl.java  |   2 +-
 .../core/op/impl/v4/ODataDeserializerImpl.java  |   2 +-
 .../odata4/client/core/v3/MetadataTest.java     |  10 +-
 .../odata4/client/core/v4/MetadataTest.java     |  24 +--
 346 files changed, 8543 insertions(+), 8525 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java
deleted file mode 100644
index cf52cf4..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/AbstractAnnotations.java
+++ /dev/null
@@ -1,30 +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.api.edm;
-
-public abstract interface AbstractAnnotations {
-
-  String getTarget();
-
-  void setTarget(String target);
-
-  String getQualifier();
-
-  void setQualifier(String qualifier);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java
deleted file mode 100644
index 739d08a..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonFunctionImport.java
+++ /dev/null
@@ -1,22 +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.api.edm;
-
-public interface CommonFunctionImport extends Named {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java
deleted file mode 100644
index 2637a0c..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonNavigationProperty.java
+++ /dev/null
@@ -1,22 +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.api.edm;
-
-public interface CommonNavigationProperty extends Named {
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java
deleted file mode 100644
index 31f737f..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonParameter.java
+++ /dev/null
@@ -1,45 +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.api.edm;
-
-import java.math.BigInteger;
-
-public interface CommonParameter extends Named {
-
-  String getType();
-
-  void setType(String type);
-
-  boolean isNullable();
-
-  void setNullable(boolean nullable);
-
-  String getMaxLength();
-
-  void setMaxLength(String maxLength);
-
-  BigInteger getPrecision();
-
-  void setPrecision(BigInteger precision);
-
-  BigInteger getScale();
-
-  void setScale(BigInteger scale);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java
deleted file mode 100644
index 16cc03a..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/CommonProperty.java
+++ /dev/null
@@ -1,74 +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.api.edm;
-
-import java.math.BigInteger;
-import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
-import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
-
-public interface CommonProperty extends Named {
-
-  String getType();
-
-  void setType(String type);
-
-  boolean isNullable();
-
-  void setNullable(boolean nullable);
-
-  String getDefaultValue();
-
-  void setDefaultValue(String defaultValue);
-
-  String getMaxLength();
-
-  void setMaxLength(String maxLength);
-
-  boolean isFixedLength();
-
-  void setFixedLength(boolean fixedLength);
-
-  BigInteger getPrecision();
-
-  void setPrecision(BigInteger precision);
-
-  BigInteger getScale();
-
-  void setScale(BigInteger scale);
-
-  boolean isUnicode();
-
-  void setUnicode(boolean unicode);
-
-  String getCollation();
-
-  void setCollation(String collation);
-
-  String getSrid();
-
-  void setSrid(String srid);
-
-  ConcurrencyMode getConcurrencyMode();
-
-  void setConcurrencyMode(ConcurrencyMode concurrencyMode);
-
-  StoreGeneratedPattern getStoreGeneratedPattern();
-
-  void setStoreGeneratedPattern(StoreGeneratedPattern storeGeneratedPattern);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
deleted file mode 100644
index 929d1b8..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/ComplexType.java
+++ /dev/null
@@ -1,32 +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.api.edm;
-
-import java.util.List;
-
-public interface ComplexType extends Named {
-
-  CommonProperty getProperty(String name);
-
-  List<? extends CommonProperty> getProperties();
-
-  CommonNavigationProperty getNavigationProperty(String name);
-
-  List<? extends CommonNavigationProperty> getNavigationProperties();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
deleted file mode 100644
index 2972991..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/DataServices.java
+++ /dev/null
@@ -1,34 +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.api.edm;
-
-import java.util.List;
-
-public interface DataServices {
-
-  String getDataServiceVersion();
-
-  void setDataServiceVersion(String version);
-
-  String getMaxDataServiceVersion();
-
-  void setMaxDataServiceVersion(String version);
-
-  List<? extends Schema> getSchemas();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
index a75515d..9fef9c5 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.client.api.edm;
 
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
 
 /**
  * Entry point for access information about EDM metadata.

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java
index 5a480d7..3e59c03 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmType.java
@@ -19,6 +19,9 @@
 package org.apache.olingo.odata4.client.api.edm;
 
 import org.apache.olingo.odata4.client.api.data.EdmSimpleType;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
 
 public interface EdmType {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java
deleted file mode 100644
index 94fb5a8..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Edmx.java
+++ /dev/null
@@ -1,30 +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.api.edm;
-
-public interface Edmx {
-
-  String getVersion();
-
-  void setVersion(String version);
-
-  DataServices getDataServices();
-
-  void setDataServices(DataServices dataServices);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
deleted file mode 100644
index c3eb080..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityContainer.java
+++ /dev/null
@@ -1,58 +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.api.edm;
-
-import java.util.List;
-
-public interface EntityContainer extends Named {
-
-  String getExtends();
-
-  void setExtends(String _extends);
-
-  boolean isLazyLoadingEnabled();
-
-  void setLazyLoadingEnabled(boolean lazyLoadingEnabled);
-
-  boolean isDefaultEntityContainer();
-
-  void setDefaultEntityContainer(boolean defaultEntityContainer);
-
-  EntitySet getEntitySet(String name);
-
-  List<? extends EntitySet> getEntitySets();
-
-  /**
-   * Gets the first function import with given name.
-   *
-   * @param name name.
-   * @return function import.
-   */
-  CommonFunctionImport getFunctionImport(String name);
-
-  /**
-   * Gets all function imports with given name.
-   *
-   * @param name name.
-   * @return function imports.
-   */
-  List<? extends CommonFunctionImport> getFunctionImports(String name);
-
-  List<? extends CommonFunctionImport> getFunctionImports();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
deleted file mode 100644
index ee89a9a..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityKey.java
+++ /dev/null
@@ -1,26 +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.api.edm;
-
-import java.util.List;
-
-public interface EntityKey {
-
-  List<? extends PropertyRef> getPropertyRefs();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
deleted file mode 100644
index 98c854d..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntitySet.java
+++ /dev/null
@@ -1,26 +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.api.edm;
-
-public interface EntitySet extends Named {
-
-  String getEntityType();
-
-  void setEntityType(String entityType);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
deleted file mode 100644
index 37ebc35..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EntityType.java
+++ /dev/null
@@ -1,42 +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.api.edm;
-
-public interface EntityType extends ComplexType {
-
-  boolean isAbstractEntityType();
-
-  void setAbstractEntityType(boolean abstractEntityType);
-
-  String getBaseType();
-
-  void setBaseType(String baseType);
-
-  boolean isOpenType();
-
-  void setOpenType(boolean openType);
-
-  EntityKey getKey();
-
-  void setKey(EntityKey key);
-
-  boolean isHasStream();
-
-  void setHasStream(boolean hasStream);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
deleted file mode 100644
index 614c5e1..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EnumType.java
+++ /dev/null
@@ -1,38 +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.api.edm;
-
-import java.util.List;
-
-public interface EnumType extends Named {
-
-  String getUnderlyingType();
-
-  void setUnderlyingType(String underlyingType);
-
-  boolean isFlags();
-
-  void setFlags(boolean flags);
-
-  List<? extends Member> getMembers();
-
-  Member getMember(String name);
-
-  Member getMember(Integer value);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Member.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Member.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Member.java
deleted file mode 100644
index 8d91cff..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Member.java
+++ /dev/null
@@ -1,26 +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.api.edm;
-
-public interface Member {
-
-  String getName();
-
-  Integer getValue();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java
deleted file mode 100644
index 5d90e2d..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Named.java
+++ /dev/null
@@ -1,26 +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.api.edm;
-
-public interface Named {
-
-  String getName();
-
-  void setName(String name);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java
deleted file mode 100644
index 1936328..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/OnDelete.java
+++ /dev/null
@@ -1,28 +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.api.edm;
-
-import org.apache.olingo.odata4.client.api.edm.v4.OnDeleteAction;
-
-public interface OnDelete {
-
-  OnDeleteAction getAction();
-
-  void setAction(OnDeleteAction action);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
deleted file mode 100644
index 02b4c6e..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/PropertyRef.java
+++ /dev/null
@@ -1,26 +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.api.edm;
-
-public interface PropertyRef extends Named {
-
-  String getAlias();
-
-  void setAlias(String alias);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
deleted file mode 100644
index ac19d11..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/Schema.java
+++ /dev/null
@@ -1,79 +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.api.edm;
-
-import org.apache.olingo.odata4.client.api.edm.v3.Annotations;
-import java.util.List;
-
-public interface Schema {
-
-  String getNamespace();
-
-  void setNamespace(String namespace);
-
-  String getAlias();
-
-  void setAlias(String alias);
-
-  List<? extends EntityType> getEntityTypes();
-
-  List<? extends EnumType> getEnumTypes();
-
-  EnumType getEnumType(String name);
-
-  List<? extends AbstractAnnotations> getAnnotationsList();
-
-  AbstractAnnotations getAnnotationsList(String target);
-
-  List<? extends ComplexType> getComplexTypes();
-
-  List<? extends EntityContainer> getEntityContainers();
-
-  /**
-   * Gets default entity container.
-   *
-   * @return default entity container.
-   */
-  EntityContainer getDefaultEntityContainer();
-
-  /**
-   * Gets entity container with the given name.
-   *
-   * @param name name.
-   * @return entity container.
-   */
-  EntityContainer getEntityContainer(String name);
-
-  /**
-   * Gets entity type with the given name.
-   *
-   * @param name name.
-   * @return entity type.
-   */
-  EntityType getEntityType(String name);
-
-  /**
-   * Gets complex type with the given name.
-   *
-   * @param name name.
-   * @return complex type.
-   */
-  ComplexType getComplexType(String name);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
deleted file mode 100644
index 30aa26a..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Annotations.java
+++ /dev/null
@@ -1,29 +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.api.edm.v3;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.AbstractAnnotations;
-
-public interface Annotations extends AbstractAnnotations {
-
-  List<? extends TypeAnnotation> getTypeAnnotations();
-
-  List<? extends ValueAnnotation> getValueAnnotations();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
deleted file mode 100644
index 0cb5b0e..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Association.java
+++ /dev/null
@@ -1,32 +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.api.edm.v3;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface Association extends Named {
-
-  ReferentialConstraint getReferentialConstraint();
-
-  void setReferentialConstraint(ReferentialConstraint referentialConstraint);
-
-  List<? extends AssociationEnd> getEnds();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
deleted file mode 100644
index 8eb34e4..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationEnd.java
+++ /dev/null
@@ -1,40 +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.api.edm.v3;
-
-import org.apache.olingo.odata4.client.api.edm.OnDelete;
-
-public interface AssociationEnd {
-
-  String getType();
-
-  void setType(String type);
-
-  String getRole();
-
-  void setRole(String role);
-
-  String getMultiplicity();
-
-  void setMultiplicity(String multiplicity);
-
-  OnDelete getOnDelete();
-
-  void setOnDelete(OnDelete onDelete);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
deleted file mode 100644
index 1915255..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSet.java
+++ /dev/null
@@ -1,31 +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.api.edm.v3;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface AssociationSet extends Named {
-
-  String getAssociation();
-
-  void setAssociation(String association);
-
-  List<? extends AssociationSetEnd> getEnds();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
deleted file mode 100644
index a3cd430..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/AssociationSetEnd.java
+++ /dev/null
@@ -1,30 +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.api.edm.v3;
-
-public interface AssociationSetEnd {
-
-  String getRole();
-
-  void setRole(String role);
-
-  String getEntitySet();
-
-  void setEntitySet(String entitySet);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java
deleted file mode 100644
index 359ba5b..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/FunctionImport.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.api.edm.v3;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.CommonParameter;
-
-public interface FunctionImport extends org.apache.olingo.odata4.client.api.edm.CommonFunctionImport {
-
-  String getReturnType();
-
-  void setReturnType(String returnType);
-
-  String getEntitySet();
-
-  void setEntitySet(String entitySet);
-
-  String getEntitySetPath();
-
-  void setEntitySetPath(String entitySetPath);
-
-  boolean isComposable();
-
-  void setComposable(boolean composable);
-
-  boolean isSideEffecting();
-
-  void setSideEffecting(boolean sideEffecting);
-
-  boolean isBindable();
-
-  void setBindable(boolean bindable);
-
-  boolean isAlwaysBindable();
-
-  void setAlwaysBindable(boolean alwaysBindable);
-
-  String getHttpMethod();
-
-  void setHttpMethod(String httpMethod);
-
-  List<? extends CommonParameter> getParameters();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java
deleted file mode 100644
index 4b24887..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/NavigationProperty.java
+++ /dev/null
@@ -1,34 +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.api.edm.v3;
-
-public interface NavigationProperty extends org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty {
-
-  String getRelationship();
-
-  void setRelationship(String relationship);
-
-  String getToRole();
-
-  void setToRole(String toRole);
-
-  String getFromRole();
-
-  void setFromRole(String fromRole);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java
deleted file mode 100644
index 0d45df0..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Parameter.java
+++ /dev/null
@@ -1,26 +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.api.edm.v3;
-
-public interface Parameter extends org.apache.olingo.odata4.client.api.edm.CommonParameter {
-
-  ParameterMode getMode();
-
-  void setMode(ParameterMode mode);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ParameterMode.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ParameterMode.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ParameterMode.java
deleted file mode 100644
index 0d81505..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ParameterMode.java
+++ /dev/null
@@ -1,27 +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.api.edm.v3;
-
-public enum ParameterMode {
-
-  In,
-  Out,
-  InOut
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java
deleted file mode 100644
index 042948f..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Property.java
+++ /dev/null
@@ -1,50 +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.api.edm.v3;
-
-import org.apache.olingo.odata4.client.api.edm.CommonProperty;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
-
-public interface Property extends CommonProperty {
-
-  String getFcSourcePath();
-
-  void setFcSourcePath(String fcSourcePath);
-
-  String getFcTargetPath();
-
-  void setFcTargetPath(String fcTargetPath);
-
-  EdmContentKind getFcContentKind();
-
-  void setFcContentKind(EdmContentKind fcContentKind);
-
-  String getFcNSPrefix();
-
-  void setFcNSPrefix(String fcNSPrefix);
-
-  String getFcNSURI();
-
-  void setFcNSURI(String fcNSURI);
-
-  boolean isFcKeepInContent();
-
-  void setFcKeepInContent(boolean fcKeepInContent);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
deleted file mode 100644
index cc29d03..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/PropertyValue.java
+++ /dev/null
@@ -1,59 +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.api.edm.v3;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Date;
-
-public interface PropertyValue {
-
-  String getProperty();
-
-  void setProperty(String property);
-
-  String getPath();
-
-  void setPath(String path);
-
-  String getString();
-
-  void setString(String string);
-
-  BigInteger getInt();
-
-  void setInt(BigInteger _int);
-
-  Double getFloat();
-
-  void setFloat(Double _float);
-
-  BigDecimal getDecimal();
-
-  void setDecimal(BigDecimal decimal);
-
-  Boolean getBool();
-
-  void setBool(Boolean bool);
-
-  Date getDateTime();
-
-  void setDateTime(Date dateTime);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
deleted file mode 100644
index fd2f8a9..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraint.java
+++ /dev/null
@@ -1,30 +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.api.edm.v3;
-
-public interface ReferentialConstraint {
-
-  ReferentialConstraintRole getPrincipal();
-
-  void setPrincipal(ReferentialConstraintRole principal);
-
-  ReferentialConstraintRole getDependent();
-
-  void setDependent(ReferentialConstraintRole dependent);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java
deleted file mode 100644
index 0676086..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ReferentialConstraintRole.java
+++ /dev/null
@@ -1,32 +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.api.edm.v3;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.PropertyRef;
-
-public interface ReferentialConstraintRole {
-
-  String getRole();
-
-  void setRole(final String role);
-
-  List<? extends PropertyRef> getPropertyRefs();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
deleted file mode 100644
index e6344da..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/TypeAnnotation.java
+++ /dev/null
@@ -1,35 +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.api.edm.v3;
-
-import java.util.List;
-
-public interface TypeAnnotation {
-
-  String getTerm();
-
-  void setTerm(String term);
-
-  String getQualifier();
-
-  void setQualifier(String qualifier);
-
-  List<? extends PropertyValue> getPropertyValues();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
deleted file mode 100644
index 479f7fe..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/Using.java
+++ /dev/null
@@ -1,31 +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.api.edm.v3;
-
-public interface Using {
-
-  String getNamespace();
-
-  void setNamespace(String namespace);
-
-  String getAlias();
-
-  void setAlias(String alias);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
deleted file mode 100644
index 6068119..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueAnnotation.java
+++ /dev/null
@@ -1,63 +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.api.edm.v3;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Date;
-
-public interface ValueAnnotation {
-
-  Boolean getBool();
-
-  Date getDateTime();
-
-  BigDecimal getDecimal();
-
-  Double getFloat();
-
-  BigInteger getInt();
-
-  String getPath();
-
-  String getQualifier();
-
-  String getString();
-
-  String getTerm();
-
-  void setBool(Boolean bool);
-
-  void setDateTime(Date dateTime);
-
-  void setDecimal(BigDecimal decimal);
-
-  void setFloat(Double _float);
-
-  void setInt(BigInteger _int);
-
-  void setPath(String path);
-
-  void setQualifier(String qualifier);
-
-  void setString(String string);
-
-  void setTerm(String term);
-
-}


[06/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
index eed9245..551c4ef 100644
--- 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
@@ -19,6 +19,9 @@
 package org.apache.olingo.odata4.client.core.edm.v3;
 
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmType;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl;
 
 public class EdmTypeImpl extends AbstractEdmType {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmxImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmxImpl.java
deleted file mode 100644
index f0b95cd..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmxImpl.java
+++ /dev/null
@@ -1,32 +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.edm.v3;
-
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmx;
-
-public class EdmxImpl extends AbstractEdmx {
-
-  private static final long serialVersionUID = -8031883176876401375L;
-
-  @Override
-  public DataServicesImpl getDataServices() {
-    return (DataServicesImpl) super.getDataServices();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityContainerImpl.java
deleted file mode 100644
index 66362dd..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityContainerImpl.java
+++ /dev/null
@@ -1,65 +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.edm.v3;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntityContainer;
-
-public class EntityContainerImpl extends AbstractEntityContainer {
-
-  private static final long serialVersionUID = 8934431875078180370L;
-
-  private final List<EntitySetImpl> entitySets = new ArrayList<EntitySetImpl>();
-
-  private final List<AssociationSetImpl> associationSets = new ArrayList<AssociationSetImpl>();
-
-  private final List<FunctionImportImpl> functionImports = new ArrayList<FunctionImportImpl>();
-
-  @Override
-  public EntitySetImpl getEntitySet(final String name) {
-    return (EntitySetImpl) super.getEntitySet(name);
-  }
-
-  @Override
-  public List<EntitySetImpl> getEntitySets() {
-    return entitySets;
-  }
-
-  public List<AssociationSetImpl> getAssociationSets() {
-    return associationSets;
-  }
-
-  @Override
-  public FunctionImportImpl getFunctionImport(final String name) {
-    return (FunctionImportImpl) super.getFunctionImport(name);
-  }
-
-  @Override
-  @SuppressWarnings("unchecked")
-  public List<FunctionImportImpl> getFunctionImports(final String name) {
-    return (List<FunctionImportImpl>) super.getFunctionImports(name);
-  }
-
-  @Override
-  public List<FunctionImportImpl> getFunctionImports() {
-    return functionImports;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntitySetImpl.java
deleted file mode 100644
index c5ce28b..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntitySetImpl.java
+++ /dev/null
@@ -1,27 +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.edm.v3;
-
-import org.apache.olingo.odata4.client.core.edm.AbstractEntitySet;
-
-public class EntitySetImpl extends AbstractEntitySet {
-
-  private static final long serialVersionUID = 5570833733884884012L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
deleted file mode 100644
index 1fc2da2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EntityTypeImpl.java
+++ /dev/null
@@ -1,53 +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.edm.v3;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntityType;
-
-public class EntityTypeImpl extends AbstractEntityType {
-
-  private static final long serialVersionUID = 8727765036150269547L;
-
-  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
-
-  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
-
-  @Override
-  public PropertyImpl getProperty(final String name) {
-    return (PropertyImpl) super.getProperty(name);
-  }
-
-  @Override
-  public List<PropertyImpl> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public NavigationPropertyImpl getNavigationProperty(final String name) {
-    return (NavigationPropertyImpl) super.getNavigationProperty(name);
-  }
-
-  @Override
-  public List<NavigationPropertyImpl> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EnumTypeImpl.java
deleted file mode 100644
index 16eaf04..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EnumTypeImpl.java
+++ /dev/null
@@ -1,46 +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.edm.v3;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.core.edm.AbstractEnumType;
-
-public class EnumTypeImpl extends AbstractEnumType {
-
-  private static final long serialVersionUID = 8967396195669128419L;
-
-  private final List<MemberImpl> members = new ArrayList<MemberImpl>();
-
-  @Override
-  public List<MemberImpl> getMembers() {
-    return members;
-  }
-
-  @Override
-  public MemberImpl getMember(final String name) {
-    return (MemberImpl) super.getMember(name);
-  }
-
-  @Override
-  public MemberImpl getMember(final Integer value) {
-    return (MemberImpl) super.getMember(value);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 3c5ba25..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportDeserializer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v3;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class FunctionImportDeserializer extends AbstractEdmDeserializer<FunctionImportImpl> {
-
-  @Override
-  protected FunctionImportImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final FunctionImportImpl funcImp = new FunctionImportImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          funcImp.setName(jp.nextTextValue());
-        } else if ("ReturnType".equals(jp.getCurrentName())) {
-          funcImp.setReturnType(jp.nextTextValue());
-        } else if ("EntitySet".equals(jp.getCurrentName())) {
-          funcImp.setEntitySet(jp.nextTextValue());
-        } else if ("EntitySetPath".equals(jp.getCurrentName())) {
-          funcImp.setEntitySetPath(jp.nextTextValue());
-        } else if ("IsComposable".equals(jp.getCurrentName())) {
-          funcImp.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("IsSideEffecting".equals(jp.getCurrentName())) {
-          funcImp.setSideEffecting(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("IsBindable".equals(jp.getCurrentName())) {
-          funcImp.setBindable(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("IsAlwaysBindable".equals(jp.getCurrentName())) {
-          funcImp.setAlwaysBindable(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("HttpMethod".equals(jp.getCurrentName())) {
-          funcImp.setHttpMethod(jp.nextTextValue());
-        } else if ("Parameter".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          funcImp.getParameters().add(jp.readValueAs( ParameterImpl.class));
-        }
-      }
-    }
-
-    return funcImp;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
deleted file mode 100644
index 621e919..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/FunctionImportImpl.java
+++ /dev/null
@@ -1,146 +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.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v3.FunctionImport;
-
-@JsonDeserialize(using = FunctionImportDeserializer.class)
-public class FunctionImportImpl implements FunctionImport {
-
-  private static final long serialVersionUID = -6214472528425935461L;
-
-  private String name;
-
-  private String returnType;
-
-  private String entitySet;
-
-  private String entitySetPath;
-
-  private boolean composable;
-
-  private boolean sideEffecting = true;
-
-  private boolean bindable;
-
-  private boolean alwaysBindable;
-
-  private String httpMethod;
-
-  private final List<ParameterImpl> parameters = new ArrayList<ParameterImpl>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getReturnType() {
-    return returnType;
-  }
-
-  @Override
-  public void setReturnType(final String returnType) {
-    this.returnType = returnType;
-  }
-
-  @Override
-  public String getEntitySet() {
-    return entitySet;
-  }
-
-  @Override
-  public void setEntitySet(final String entitySet) {
-    this.entitySet = entitySet;
-  }
-
-  @Override
-  public String getEntitySetPath() {
-    return entitySetPath;
-  }
-
-  @Override
-  public void setEntitySetPath(final String entitySetPath) {
-    this.entitySetPath = entitySetPath;
-  }
-
-  @Override
-  public boolean isComposable() {
-    return composable;
-  }
-
-  @Override
-  public void setComposable(final boolean composable) {
-    this.composable = composable;
-  }
-
-  @Override
-  public boolean isSideEffecting() {
-    return sideEffecting;
-  }
-
-  @Override
-  public void setSideEffecting(final boolean sideEffecting) {
-    this.sideEffecting = sideEffecting;
-  }
-
-  @Override
-  public boolean isBindable() {
-    return bindable;
-  }
-
-  @Override
-  public void setBindable(final boolean bindable) {
-    this.bindable = bindable;
-  }
-
-  @Override
-  public boolean isAlwaysBindable() {
-    return alwaysBindable;
-  }
-
-  @Override
-  public void setAlwaysBindable(final boolean alwaysBindable) {
-    this.alwaysBindable = alwaysBindable;
-  }
-
-  @Override
-  public String getHttpMethod() {
-    return httpMethod;
-  }
-
-  @Override
-  public void setHttpMethod(final String httpMethod) {
-    this.httpMethod = httpMethod;
-  }
-
-  @Override
-  public List<ParameterImpl> getParameters() {
-    return parameters;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
deleted file mode 100644
index 64ed274..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/MemberImpl.java
+++ /dev/null
@@ -1,27 +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.edm.v3;
-
-import org.apache.olingo.odata4.client.core.edm.AbstractMember;
-
-public class MemberImpl extends AbstractMember {
-
-  private static final long serialVersionUID = 6605381518349837929L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.java
deleted file mode 100644
index 1371177..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/NavigationPropertyImpl.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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.NavigationProperty;
-import org.apache.olingo.odata4.client.core.edm.AbstractNavigationProperty;
-
-public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty {
-
-  private static final long serialVersionUID = -2889417442815563307L;
-
-  @JsonProperty(value = "Relationship", required = true)
-  private String relationship;
-
-  @JsonProperty(value = "ToRole", required = true)
-  private String toRole;
-
-  @JsonProperty(value = "FromRole", required = true)
-  private String fromRole;
-
-  @Override
-  public String getRelationship() {
-    return relationship;
-  }
-
-  @Override
-  public void setRelationship(final String relationship) {
-    this.relationship = relationship;
-  }
-
-  @Override
-  public String getToRole() {
-    return toRole;
-  }
-
-  @Override
-  public void setToRole(final String toRole) {
-    this.toRole = toRole;
-  }
-
-  @Override
-  public String getFromRole() {
-    return fromRole;
-  }
-
-  @Override
-  public void setFromRole(final String fromRole) {
-    this.fromRole = fromRole;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.java
deleted file mode 100644
index cf3d96e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ParameterImpl.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.edm.v3;
-
-import org.apache.olingo.odata4.client.api.edm.v3.ParameterMode;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.Parameter;
-import org.apache.olingo.odata4.client.core.edm.AbstractParameter;
-
-public class ParameterImpl extends AbstractParameter implements Parameter {
-
-  private static final long serialVersionUID = 7596724999614891358L;
-
-  @JsonProperty("Mode")
-  private ParameterMode mode;
-
-  @Override
-  public ParameterMode getMode() {
-    return mode;
-  }
-
-  @Override
-  public void setMode(final ParameterMode mode) {
-    this.mode = mode;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
deleted file mode 100644
index b90f4b9..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyImpl.java
+++ /dev/null
@@ -1,96 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.Property;
-import org.apache.olingo.odata4.client.core.edm.AbstractProperty;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
-
-public class PropertyImpl extends AbstractProperty implements Property {
-
-  private static final long serialVersionUID = 6224524803474652100L;
-
-  @JsonProperty("FC_SourcePath")
-  private String fcSourcePath;
-
-  @JsonProperty("FC_TargetPath")
-  private String fcTargetPath;
-
-  @JsonProperty("FC_ContentKind")
-  private EdmContentKind fcContentKind = EdmContentKind.text;
-
-  @JsonProperty("FC_NsPrefix")
-  private String fcNSPrefix;
-
-  @JsonProperty("FC_NsUri")
-  private String fcNSURI;
-
-  @JsonProperty("FC_KeepInContent")
-  private boolean fcKeepInContent = true;
-
-  public String getFcSourcePath() {
-    return fcSourcePath;
-  }
-
-  public void setFcSourcePath(final String fcSourcePath) {
-    this.fcSourcePath = fcSourcePath;
-  }
-
-  public String getFcTargetPath() {
-    return fcTargetPath;
-  }
-
-  public void setFcTargetPath(final String fcTargetPath) {
-    this.fcTargetPath = fcTargetPath;
-  }
-
-  public EdmContentKind getFcContentKind() {
-    return fcContentKind;
-  }
-
-  public void setFcContentKind(final EdmContentKind fcContentKind) {
-    this.fcContentKind = fcContentKind;
-  }
-
-  public String getFcNSPrefix() {
-    return fcNSPrefix;
-  }
-
-  public void setFcNSPrefix(final String fcNSPrefix) {
-    this.fcNSPrefix = fcNSPrefix;
-  }
-
-  public String getFcNSURI() {
-    return fcNSURI;
-  }
-
-  public void setFcNSURI(final String fcNSURI) {
-    this.fcNSURI = fcNSURI;
-  }
-
-  public boolean isFcKeepInContent() {
-    return fcKeepInContent;
-  }
-
-  public void setFcKeepInContent(final boolean fcKeepInContent) {
-    this.fcKeepInContent = fcKeepInContent;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
deleted file mode 100644
index 0d8b5d7..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/PropertyValueImpl.java
+++ /dev/null
@@ -1,135 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Date;
-import org.apache.olingo.odata4.client.api.edm.v3.PropertyValue;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue {
-
-  private static final long serialVersionUID = -6580934436491418564L;
-
-  @JsonProperty(value = "Property", required = true)
-  private String property;
-
-  @JsonProperty("Path")
-  private String path;
-
-  @JsonProperty("String")
-  private String string;
-
-  @JsonProperty("Int")
-  private BigInteger _int;
-
-  @JsonProperty("Float")
-  private Double _float;
-
-  @JsonProperty("Decimal")
-  private BigDecimal decimal;
-
-  @JsonProperty("Bool")
-  private Boolean bool;
-
-  @JsonProperty("DateTime")
-  private Date dateTime;
-
-  @Override
-  public String getProperty() {
-    return property;
-  }
-
-  @Override
-  public void setProperty(final String property) {
-    this.property = property;
-  }
-
-  @Override
-  public String getPath() {
-    return path;
-  }
-
-  @Override
-  public void setPath(final String path) {
-    this.path = path;
-  }
-
-  @Override
-  public String getString() {
-    return string;
-  }
-
-  @Override
-  public void setString(final String string) {
-    this.string = string;
-  }
-
-  @Override
-  public BigInteger getInt() {
-    return _int;
-  }
-
-  @Override
-  public void setInt(final BigInteger _int) {
-    this._int = _int;
-  }
-
-  @Override
-  public Double getFloat() {
-    return _float;
-  }
-
-  @Override
-  public void setFloat(final Double _float) {
-    this._float = _float;
-  }
-
-  @Override
-  public BigDecimal getDecimal() {
-    return decimal;
-  }
-
-  @Override
-  public void setDecimal(final BigDecimal decimal) {
-    this.decimal = decimal;
-  }
-
-  @Override
-  public Boolean getBool() {
-    return bool;
-  }
-
-  @Override
-  public void setBool(final Boolean bool) {
-    this.bool = bool;
-  }
-
-  @Override
-  public Date getDateTime() {
-    return dateTime;
-  }
-
-  @Override
-  public void setDateTime(final Date dateTime) {
-    this.dateTime = dateTime;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
deleted file mode 100644
index a399c2f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintImpl.java
+++ /dev/null
@@ -1,58 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraint;
-import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraintRole;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class ReferentialConstraintImpl extends AbstractEdmItem implements ReferentialConstraint {
-
-  private static final long serialVersionUID = 9067893732765127269L;
-
-  @JsonProperty(value = "Principal", required = true)
-  private ReferentialConstraintRoleImpl principal;
-
-  @JsonProperty(value = "Dependent", required = true)
-  private ReferentialConstraintRoleImpl dependent;
-
-  @Override
-  public ReferentialConstraintRoleImpl getPrincipal() {
-    return principal;
-  }
-
-  @JsonIgnore
-  @Override
-  public void setPrincipal(final ReferentialConstraintRole principal) {
-    this.principal = (ReferentialConstraintRoleImpl) principal;
-  }
-
-  @Override
-  public ReferentialConstraintRoleImpl getDependent() {
-    return dependent;
-  }
-
-  @JsonIgnore
-  @Override
-  public void setDependent(final ReferentialConstraintRole dependent) {
-    this.dependent = (ReferentialConstraintRoleImpl) dependent;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index e09e94e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleDeserializer.java
+++ /dev/null
@@ -1,51 +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.edm.v3;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.PropertyRefImpl;
-
-public class ReferentialConstraintRoleDeserializer extends AbstractEdmDeserializer<ReferentialConstraintRoleImpl> {
-
-  @Override
-  protected ReferentialConstraintRoleImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final ReferentialConstraintRoleImpl refConstRole = new ReferentialConstraintRoleImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Role".equals(jp.getCurrentName())) {
-          refConstRole.setRole(jp.nextTextValue());
-        } else if ("PropertyRef".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          refConstRole.getPropertyRefs().add(jp.readValueAs( PropertyRefImpl.class));
-        }
-      }
-    }
-
-    return refConstRole;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java
deleted file mode 100644
index bb2e0f2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ReferentialConstraintRoleImpl.java
+++ /dev/null
@@ -1,50 +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.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v3.ReferentialConstraintRole;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-import org.apache.olingo.odata4.client.core.edm.PropertyRefImpl;
-
-@JsonDeserialize(using = ReferentialConstraintRoleDeserializer.class)
-public class ReferentialConstraintRoleImpl extends AbstractEdmItem implements ReferentialConstraintRole {
-
-  private static final long serialVersionUID = -3712887115248634164L;
-
-  private String role;
-
-  private List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
-
-  @Override
-  public String getRole() {
-    return role;
-  }
-
-  @Override
-  public void setRole(final String role) {
-    this.role = role;
-  }
-
-  public List<PropertyRefImpl> getPropertyRefs() {
-    return propertyRefs;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
deleted file mode 100644
index 8ff28ca..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/SchemaImpl.java
+++ /dev/null
@@ -1,129 +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.edm.v3;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Schema;
-import org.apache.olingo.odata4.client.core.edm.AbstractSchema;
-
-public class SchemaImpl extends AbstractSchema implements Schema {
-
-  private static final long serialVersionUID = 4453992249818796144L;
-
-  private final List<AnnotationsImpl> annotationList = new ArrayList<AnnotationsImpl>();
-
-  private final List<AssociationImpl> associations = new ArrayList<AssociationImpl>();
-
-  private final List<ComplexTypeImpl> complexTypes = new ArrayList<ComplexTypeImpl>();
-
-  private final List<EntityContainerImpl> entityContainers = new ArrayList<EntityContainerImpl>();
-
-  private final List<EntityTypeImpl> entityTypes = new ArrayList<EntityTypeImpl>();
-
-  private final List<EnumTypeImpl> enumTypes = new ArrayList<EnumTypeImpl>();
-
-  private final List<UsingImpl> usings = new ArrayList<UsingImpl>();
-
-  private final List<ValueTermImpl> valueTerms = new ArrayList<ValueTermImpl>();
-
-  public AssociationImpl getAssociation(final String name) {
-    return getOneByName(name, getAssociations());
-  }
-
-  @Override
-  public List<AnnotationsImpl> getAnnotationsList() {
-    return annotationList;
-  }
-
-  @Override
-  public AnnotationsImpl getAnnotationsList(final String target) {
-    AnnotationsImpl result = null;
-    for (AnnotationsImpl annots : getAnnotationsList()) {
-      if (target.equals(annots.getTarget())) {
-        result = annots;
-      }
-    }
-    return result;
-  }
-
-  public List<AssociationImpl> getAssociations() {
-    return associations;
-  }
-
-  public List<UsingImpl> getUsings() {
-    return usings;
-  }
-
-  public List<ValueTermImpl> getValueTerms() {
-    return valueTerms;
-  }
-
-  @Override
-  public List<EntityContainerImpl> getEntityContainers() {
-    return entityContainers;
-  }
-
-  @Override
-  public EntityContainerImpl getDefaultEntityContainer() {
-    EntityContainerImpl result = null;
-    for (EntityContainerImpl container : getEntityContainers()) {
-      if (container.isDefaultEntityContainer()) {
-        result = container;
-      }
-    }
-    return result;
-  }
-
-  @Override
-  public EntityContainerImpl getEntityContainer(final String name) {
-    return getOneByName(name, getEntityContainers());
-  }
-
-  @Override
-  public EnumTypeImpl getEnumType(final String name) {
-    return (EnumTypeImpl) super.getEnumType(name);
-  }
-
-  @Override
-  public List<EnumTypeImpl> getEnumTypes() {
-    return enumTypes;
-  }
-
-  @Override
-  public ComplexTypeImpl getComplexType(final String name) {
-    return (ComplexTypeImpl) super.getComplexType(name);
-  }
-
-  @Override
-  public List<ComplexTypeImpl> getComplexTypes() {
-    return complexTypes;
-  }
-
-  @Override
-  public EntityTypeImpl getEntityType(final String name) {
-    return (EntityTypeImpl) super.getEntityType(name);
-  }
-
-  @Override
-  public List<EntityTypeImpl> getEntityTypes() {
-    return entityTypes;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 0e873dd..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationDeserializer.java
+++ /dev/null
@@ -1,52 +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.edm.v3;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class TypeAnnotationDeserializer extends AbstractEdmDeserializer<TypeAnnotationImpl> {
-
-  @Override
-  protected TypeAnnotationImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final TypeAnnotationImpl typeAnnot = new TypeAnnotationImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Term".equals(jp.getCurrentName())) {
-          typeAnnot.setTerm(jp.nextTextValue());
-        } else if ("Qualifier".equals(jp.getCurrentName())) {
-          typeAnnot.setQualifier(jp.nextTextValue());
-        } else if ("PropertyValue".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          typeAnnot.getPropertyValues().add(jp.readValueAs( PropertyValueImpl.class));
-        }
-      }
-    }
-
-    return typeAnnot;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
deleted file mode 100644
index a2cb890..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/TypeAnnotationImpl.java
+++ /dev/null
@@ -1,63 +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.edm.v3;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v3.TypeAnnotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-@JsonDeserialize(using = TypeAnnotationDeserializer.class)
-public class TypeAnnotationImpl extends AbstractEdmItem implements TypeAnnotation {
-
-  private static final long serialVersionUID = -7585489230017331877L;
-
-  private String term;
-
-  private String qualifier;
-
-  private List<PropertyValueImpl> propertyValues = new ArrayList<PropertyValueImpl>();
-
-  @Override
-  public String getTerm() {
-    return term;
-  }
-
-  @Override
-  public void setTerm(final String term) {
-    this.term = term;
-  }
-
-  @Override
-  public String getQualifier() {
-    return qualifier;
-  }
-
-  @Override
-  public void setQualifier(final String qualifier) {
-    this.qualifier = qualifier;
-  }
-
-  @Override
-  public List<PropertyValueImpl> getPropertyValues() {
-    return propertyValues;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
deleted file mode 100644
index 6d91ccf..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/UsingImpl.java
+++ /dev/null
@@ -1,54 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.Using;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class UsingImpl extends AbstractEdmItem implements Using {
-
-  private static final long serialVersionUID = 2086957510154443445L;
-
-  @JsonProperty(value = "Namespace", required = true)
-  private String namespace;
-
-  @JsonProperty("Alias")
-  private String alias;
-
-  @Override
-  public String getNamespace() {
-    return namespace;
-  }
-
-  @Override
-  public void setNamespace(final String namespace) {
-    this.namespace = namespace;
-  }
-
-  @Override
-  public String getAlias() {
-    return alias;
-  }
-
-  @Override
-  public void setAlias(final String alias) {
-    this.alias = alias;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
deleted file mode 100644
index 5cdd020..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueAnnotationImpl.java
+++ /dev/null
@@ -1,148 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Date;
-import org.apache.olingo.odata4.client.api.edm.v3.ValueAnnotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotation {
-
-  private static final long serialVersionUID = -1826414005417952278L;
-
-  @JsonProperty(value = "Term", required = true)
-  private String term;
-
-  @JsonProperty("Qualifier")
-  private String qualifier;
-
-  @JsonProperty("Path")
-  private String path;
-
-  @JsonProperty("String")
-  private String string;
-
-  @JsonProperty("Int")
-  private BigInteger _int;
-
-  @JsonProperty("Float")
-  private Double _float;
-
-  @JsonProperty("Decimal")
-  private BigDecimal decimal;
-
-  @JsonProperty("Bool")
-  private Boolean bool;
-
-  @JsonProperty("DateTime")
-  private Date dateTime;
-
-  @Override
-  public String getTerm() {
-    return term;
-  }
-
-  @Override
-  public void setTerm(final String term) {
-    this.term = term;
-  }
-
-  @Override
-  public String getQualifier() {
-    return qualifier;
-  }
-
-  @Override
-  public void setQualifier(final String qualifier) {
-    this.qualifier = qualifier;
-  }
-
-  @Override
-  public String getPath() {
-    return path;
-  }
-
-  @Override
-  public void setPath(final String path) {
-    this.path = path;
-  }
-
-  @Override
-  public String getString() {
-    return string;
-  }
-
-  @Override
-  public void setString(final String string) {
-    this.string = string;
-  }
-
-  @Override
-  public BigInteger getInt() {
-    return _int;
-  }
-
-  @Override
-  public void setInt(final BigInteger _int) {
-    this._int = _int;
-  }
-
-  @Override
-  public Double getFloat() {
-    return _float;
-  }
-
-  @Override
-  public void setFloat(final Double _float) {
-    this._float = _float;
-  }
-
-  @Override
-  public BigDecimal getDecimal() {
-    return decimal;
-  }
-
-  @Override
-  public void setDecimal(final BigDecimal decimal) {
-    this.decimal = decimal;
-  }
-
-  @Override
-  public Boolean getBool() {
-    return bool;
-  }
-
-  @Override
-  public void setBool(final Boolean bool) {
-    this.bool = bool;
-  }
-
-  @Override
-  public Date getDateTime() {
-    return dateTime == null ? null : new Date(dateTime.getTime());
-  }
-
-  @Override
-  public void setDateTime(final Date dateTime) {
-    this.dateTime = dateTime == null ? null : new Date(dateTime.getTime());
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
deleted file mode 100644
index 3509bf3..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/ValueTermImpl.java
+++ /dev/null
@@ -1,54 +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.edm.v3;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v3.ValueTerm;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class ValueTermImpl extends AbstractEdmItem implements ValueTerm {
-
-  private static final long serialVersionUID = 6149019886137610604L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Type", required = true)
-  private String type;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
deleted file mode 100644
index 93ea7bc..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AbstractAnnotatedEdmItem.java
+++ /dev/null
@@ -1,45 +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.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public abstract class AbstractAnnotatedEdmItem extends AbstractEdmItem implements AnnotatedEdmItem {
-
-  private static final long serialVersionUID = -8859729466090997718L;
-
-  @JsonProperty("Annotation")
-  private AnnotationImpl annotation;
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @JsonIgnore
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 3cf779f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionDeserializer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class ActionDeserializer extends AbstractEdmDeserializer<ActionImpl> {
-
-  @Override
-  protected ActionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final ActionImpl action = new ActionImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          action.setName(jp.nextTextValue());
-        } else if ("IsBound".equals(jp.getCurrentName())) {
-          action.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("EntitySetPath".equals(jp.getCurrentName())) {
-          action.setEntitySetPath(jp.nextTextValue());
-        } else if ("Parameter".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          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.readValueAs(AnnotationImpl.class));
-        }
-      }
-    }
-
-    return action;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
deleted file mode 100644
index 0022555..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImpl.java
+++ /dev/null
@@ -1,92 +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.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Action;
-import org.apache.olingo.odata4.client.api.edm.v4.ReturnType;
-
-@JsonDeserialize(using = ActionDeserializer.class)
-public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
-
-  private static final long serialVersionUID = -99977447455438193L;
-
-  private String name;
-
-  private boolean bound = false;
-
-  private String entitySetPath;
-
-  private final List<ParameterImpl> parameters = new ArrayList<ParameterImpl>();
-
-  private ReturnTypeImpl returnType;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public boolean isBound() {
-    return bound;
-  }
-
-  @Override
-  public void setBound(final boolean bound) {
-    this.bound = bound;
-  }
-
-  @Override
-  public String getEntitySetPath() {
-    return entitySetPath;
-  }
-
-  @Override
-  public void setEntitySetPath(final String entitySetPath) {
-    this.entitySetPath = entitySetPath;
-  }
-
-  @Override
-  public ParameterImpl getParameter(final String name) {
-    return getOneByName(name, getParameters());
-  }
-
-  @Override
-  public List<ParameterImpl> getParameters() {
-    return parameters;
-  }
-
-  @Override
-  public ReturnTypeImpl getReturnType() {
-    return returnType;
-  }
-
-  @Override
-  public void setReturnType(final ReturnType returnType) {
-    this.returnType = (ReturnTypeImpl) returnType;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
deleted file mode 100644
index 0eaea3e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ActionImportImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.ActionImport;
-
-public class ActionImportImpl extends AbstractAnnotatedEdmItem implements ActionImport {
-
-  private static final long serialVersionUID = -866422101558426421L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Action", required = true)
-  private String action;
-
-  @JsonProperty(value = "EntitySet")
-  private String entitySet;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getAction() {
-    return action;
-  }
-
-  @Override
-  public void setAction(final String action) {
-    this.action = action;
-  }
-
-  @Override
-  public String getEntitySet() {
-    return entitySet;
-  }
-
-  @Override
-  public void setEntitySet(final String entitySet) {
-    this.entitySet = entitySet;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 0b318ee..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationDeserializer.java
+++ /dev/null
@@ -1,57 +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.edm.v4;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstructImpl;
-
-public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationImpl> {
-
-  @Override
-  protected AnnotationImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AnnotationImpl annotation = new AnnotationImpl();
-
-    for (; jp.getCurrentToken() != null && jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Term".equals(jp.getCurrentName())) {
-          annotation.setTerm(jp.nextTextValue());
-        } else if ("Qualifier".equals(jp.getCurrentName())) {
-          annotation.setQualifier(jp.nextTextValue());
-        } else if (isAnnotationConstExprConstruct(jp)) {
-          // Constant Expressions
-          annotation.setConstExpr(parseAnnotationConstExprConstruct(jp));
-        } else {
-          // Dynamic Expressions
-          annotation.setDynExpr(jp.readValueAs( DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 2f5fc5f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationImpl.java
+++ /dev/null
@@ -1,82 +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.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ConstExprConstruct;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstructImpl;
-
-@JsonDeserialize(using = AnnotationDeserializer.class)
-public class AnnotationImpl extends AbstractEdmItem implements Annotation {
-
-  private static final long serialVersionUID = -5600031479702563436L;
-
-  private String term;
-
-  private String qualifier;
-
-  private ConstExprConstructImpl constExpr;
-
-  private DynExprConstructImpl dynExpr;
-
-  @Override
-  public String getTerm() {
-    return term;
-  }
-
-  @Override
-  public void setTerm(final String term) {
-    this.term = term;
-  }
-
-  @Override
-  public String getQualifier() {
-    return qualifier;
-  }
-
-  @Override
-  public void setQualifier(final String qualifier) {
-    this.qualifier = qualifier;
-  }
-
-  @Override
-  public ConstExprConstructImpl getConstExpr() {
-    return constExpr;
-  }
-
-  @Override
-  public void setConstExpr(final ConstExprConstruct constExpr) {
-    this.constExpr = (ConstExprConstructImpl) constExpr;
-  }
-
-  @Override
-  public DynExprConstructImpl getDynExpr() {
-    return dynExpr;
-  }
-
-  @Override
-  public void setDynExpr(final DynExprConstruct dynExpr) {
-    this.dynExpr = (DynExprConstructImpl) dynExpr;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index ccca440..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsDeserializer.java
+++ /dev/null
@@ -1,53 +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.edm.v4;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class AnnotationsDeserializer extends AbstractEdmDeserializer<AnnotationsImpl> {
-
-  @Override
-  protected AnnotationsImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final AnnotationsImpl annotations = new AnnotationsImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Target".equals(jp.getCurrentName())) {
-          annotations.setTarget(jp.nextTextValue());
-        } else if ("Qualifier".equals(jp.getCurrentName())) {
-          annotations.setQualifier(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          annotations.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
-        }
-      }
-    }
-
-    return annotations;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
deleted file mode 100644
index b89b533..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/AnnotationsImpl.java
+++ /dev/null
@@ -1,49 +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.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotations;
-import org.apache.olingo.odata4.client.core.edm.AbstractAnnotations;
-
-@JsonDeserialize(using = AnnotationsDeserializer.class)
-public class AnnotationsImpl extends AbstractAnnotations implements Annotations {
-
-  private static final long serialVersionUID = 3877353656301805410L;
-
-  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
-
-  @Override
-  public List<AnnotationImpl> getAnnotations() {
-    return annotations;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation(final String term) {
-    AnnotationImpl result = null;
-    for (AnnotationImpl annotation : getAnnotations()) {
-      if (term.equals(annotation.getTerm())) {
-        result = annotation;
-      }
-    }
-    return result;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 8242330..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ComplexTypeImpl.java
+++ /dev/null
@@ -1,103 +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.edm.v4;
-
-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.ComplexType;
-import org.apache.olingo.odata4.client.core.edm.AbstractComplexType;
-
-public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
-
-  private static final long serialVersionUID = -1251230308269425962L;
-
-  private boolean abstractEntityType = false;
-
-  private String baseType;
-
-  private boolean openType = false;
-
-  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
-
-  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
-
-  private AnnotationImpl annotation;
-
-  @Override
-  public boolean isAbstractEntityType() {
-    return abstractEntityType;
-  }
-
-  @Override
-  public void setAbstractEntityType(final boolean abstractEntityType) {
-    this.abstractEntityType = abstractEntityType;
-  }
-
-  @Override
-  public String getBaseType() {
-    return baseType;
-  }
-
-  @Override
-  public void setBaseType(final String baseType) {
-    this.baseType = baseType;
-  }
-
-  @Override
-  public boolean isOpenType() {
-    return openType;
-  }
-
-  @Override
-  public void setOpenType(final boolean openType) {
-    this.openType = openType;
-  }
-
-  @Override
-  public PropertyImpl getProperty(final String name) {
-    return (PropertyImpl) super.getProperty(name);
-  }
-
-  @Override
-  public List<PropertyImpl> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public NavigationPropertyImpl getNavigationProperty(String name) {
-    return (NavigationPropertyImpl) super.getNavigationProperty(name);
-  }
-
-  @Override
-  public List<NavigationPropertyImpl> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}


[11/22] White noise: formatting

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/04855436/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v3/metadata.xml
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v3/metadata.xml b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v3/metadata.xml
index 5dbb9fc..707d7d7 100644
--- a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v3/metadata.xml
+++ b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v3/metadata.xml
@@ -19,4 +19,703 @@
     under the License.
 
 -->
-<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx"><edmx:DataServices m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><Schema Namespace="Microsoft.Test.OData.Services.AstoriaDefaultService" xmlns="http://schemas.microsoft.com/ado/2009/11/edm"><EntityType Name="AllSpatialTypes"><Key><PropertyRef Name="Id" /></Key><Property Name="Id" Type="Edm.Int32" Nullable="false" /><Property Name="Geog" Type="Edm.Geography" SRID="Variable" /><Property Name="GeogPoint" Type="Edm.GeographyPoint" SRID="Variable" /><Property Name="GeogLine" Type="Edm.GeographyLineString" SRID="Variable" /><Property Name="GeogPolygon" Type="Edm.GeographyPolygon" SRID="Variable" /><Property Name="GeogCollection" Type="Edm.GeographyCollection" SRID="Variable" /><Property Name="GeogMultiPoint" Type="Edm.GeographyMultiPoint" SRID="Variable" /><Property Name="GeogMultiLine" Type="Edm.GeographyMultiLineString" S
 RID="Variable" /><Property Name="GeogMultiPolygon" Type="Edm.GeographyMultiPolygon" SRID="Variable" /><Property Name="Geom" Type="Edm.Geometry" SRID="Variable" /><Property Name="GeomPoint" Type="Edm.GeometryPoint" SRID="Variable" /><Property Name="GeomLine" Type="Edm.GeometryLineString" SRID="Variable" /><Property Name="GeomPolygon" Type="Edm.GeometryPolygon" SRID="Variable" /><Property Name="GeomCollection" Type="Edm.GeometryCollection" SRID="Variable" /><Property Name="GeomMultiPoint" Type="Edm.GeometryMultiPoint" SRID="Variable" /><Property Name="GeomMultiLine" Type="Edm.GeometryMultiLineString" SRID="Variable" /><Property Name="GeomMultiPolygon" Type="Edm.GeometryMultiPolygon" SRID="Variable" /></EntityType><EntityType Name="AllSpatialCollectionTypes" Abstract="true"><Key><PropertyRef Name="Id" /></Key><Property Name="Id" Type="Edm.Int32" Nullable="false" /></EntityType><EntityType Name="Customer"><Key><PropertyRef Name="CustomerId" /></Key><Property Name="Thumbnail" Type="Edm.S
 tream" Nullable="false" /><Property Name="Video" Type="Edm.Stream" Nullable="false" /><Property Name="CustomerId" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" m:FC_TargetPath="SyndicationSummary" m:FC_ContentKind="text" m:FC_KeepInContent="false" /><Property Name="PrimaryContactInfo" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails" /><Property Name="BackupContactInfo" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)" Nullable="false" /><Property Name="Auditing" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo" /><NavigationProperty Name="Orders" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Orders" ToRole="Orders" FromRole="Customer" /><NavigationProperty Name="Logins" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Logins" ToRole="Logins" FromRole="Customer" /><NavigationProperty Name="Husband" Relationship="Microsoft
 .Test.OData.Services.AstoriaDefaultService.Customer_Husband" ToRole="Husband" FromRole="Customer" /><NavigationProperty Name="Wife" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Wife" ToRole="Wife" FromRole="Customer" /><NavigationProperty Name="Info" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Info" ToRole="Info" FromRole="Customer" /></EntityType><EntityType Name="Login"><Key><PropertyRef Name="Username" /></Key><Property Name="Username" Type="Edm.String" Nullable="false" /><Property Name="CustomerId" Type="Edm.Int32" Nullable="false" /><NavigationProperty Name="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Customer" ToRole="Customer" FromRole="Login" /><NavigationProperty Name="LastLogin" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_LastLogin" ToRole="LastLogin" FromRole="Login" /><NavigationProperty Name="SentMessages" Relationship="Microsoft.Test.OData.Serv
 ices.AstoriaDefaultService.Login_SentMessages" ToRole="SentMessages" FromRole="Login" /><NavigationProperty Name="ReceivedMessages" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_ReceivedMessages" ToRole="ReceivedMessages" FromRole="Login" /><NavigationProperty Name="Orders" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Orders" ToRole="Orders" FromRole="Login" /></EntityType><EntityType Name="RSAToken"><Key><PropertyRef Name="Serial" /></Key><Property Name="Serial" Type="Edm.String" Nullable="false" /><Property Name="Issued" Type="Edm.DateTime" Nullable="false" /><NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken_Login" ToRole="Login" FromRole="RSAToken" /></EntityType><EntityType Name="PageView"><Key><PropertyRef Name="PageViewId" /></Key><Property Name="PageViewId" Type="Edm.Int32" Nullable="false" /><Property Name="Username" Type="Edm.String" /><Property Name="Viewed" Type=
 "Edm.DateTimeOffset" Nullable="false" /><Property Name="TimeSpentOnPage" Type="Edm.Time" Nullable="false" /><Property Name="PageUrl" Type="Edm.String" /><NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView_Login" ToRole="Login" FromRole="PageView" /></EntityType><EntityType Name="LastLogin"><Key><PropertyRef Name="Username" /></Key><Property Name="Username" Type="Edm.String" Nullable="false" /><Property Name="LoggedIn" Type="Edm.DateTime" Nullable="false" /><Property Name="LoggedOut" Type="Edm.DateTime" /><Property Name="Duration" Type="Edm.Time" Nullable="false" /><NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin_Login" ToRole="Login" FromRole="LastLogin" /></EntityType><EntityType Name="Message"><Key><PropertyRef Name="FromUsername" /><PropertyRef Name="MessageId" /></Key><Property Name="MessageId" Type="Edm.Int32" Nullable="false" /><Property Name="FromUsername" Type=
 "Edm.String" Nullable="false" /><Property Name="ToUsername" Type="Edm.String" /><Property Name="Sent" Type="Edm.DateTimeOffset" Nullable="false" m:FC_TargetPath="SyndicationPublished" m:FC_ContentKind="text" m:FC_KeepInContent="true" /><Property Name="Subject" Type="Edm.String" m:FC_TargetPath="SyndicationTitle" m:FC_ContentKind="text" m:FC_KeepInContent="true" /><Property Name="Body" Type="Edm.String" /><Property Name="IsRead" Type="Edm.Boolean" Nullable="false" /><NavigationProperty Name="Sender" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Sender" ToRole="Sender" FromRole="Message" /><NavigationProperty Name="Recipient" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Recipient" ToRole="Recipient" FromRole="Message" /><NavigationProperty Name="Attachments" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Attachments" ToRole="Attachments" FromRole="Message" /></EntityType><EntityType Name="MessageAttach
 ment"><Key><PropertyRef Name="AttachmentId" /></Key><Property Name="AttachmentId" Type="Edm.Guid" Nullable="false" /><Property Name="Attachment" Type="Edm.Binary" /></EntityType><EntityType Name="Order"><Key><PropertyRef Name="OrderId" /></Key><Property Name="OrderId" Type="Edm.Int32" Nullable="false" /><Property Name="CustomerId" Type="Edm.Int32" /><Property Name="Concurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" /><NavigationProperty Name="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer" ToRole="Customer" FromRole="Order" /><NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login" ToRole="Login" FromRole="Order" /></EntityType><EntityType Name="OrderLine"><Key><PropertyRef Name="OrderId" /><PropertyRef Name="ProductId" /></Key><Property Name="OrderLineStream" Type="Edm.Stream" Nullable="false" /><Property Name="OrderId" Type="Edm.Int32" Nullable="f
 alse" /><Property Name="ProductId" Type="Edm.Int32" Nullable="false" /><Property Name="Quantity" Type="Edm.Int32" Nullable="false" /><Property Name="ConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" /><NavigationProperty Name="Order" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Order" ToRole="Order" FromRole="OrderLine" /><NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Product" ToRole="Product" FromRole="OrderLine" /></EntityType><EntityType Name="Product"><Key><PropertyRef Name="ProductId" /></Key><Property Name="Picture" Type="Edm.Stream" Nullable="false" /><Property Name="ProductId" Type="Edm.Int32" Nullable="false" /><Property Name="Description" Type="Edm.String" /><Property Name="Dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" /><Property Name="BaseConcurrency" Type="Edm.String" ConcurrencyMode="Fixed" /><Property Name="ComplexConcurrency" Ty
 pe="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" /><Property Name="NestedComplexConcurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo" /><NavigationProperty Name="RelatedProducts" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_RelatedProducts" ToRole="RelatedProducts" FromRole="Product" /><NavigationProperty Name="Detail" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Detail" ToRole="Detail" FromRole="Product" /><NavigationProperty Name="Reviews" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Reviews" ToRole="Reviews" FromRole="Product" /><NavigationProperty Name="Photos" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Photos" ToRole="Photos" FromRole="Product" /></EntityType><EntityType Name="ProductDetail"><Key><PropertyRef Name="ProductId" /></Key><Property Name="ProductId" Type="Edm.Int32" Nullable="false" /><Property Name=
 "Details" Type="Edm.String" /><NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail_Product" ToRole="Product" FromRole="ProductDetail" /></EntityType><EntityType Name="ProductReview"><Key><PropertyRef Name="ProductId" /><PropertyRef Name="ReviewId" /><PropertyRef Name="RevisionId" /></Key><Property Name="ProductId" Type="Edm.Int32" Nullable="false" /><Property Name="ReviewId" Type="Edm.Int32" Nullable="false" /><Property Name="RevisionId" Type="Edm.String" Nullable="false" /><Property Name="Review" Type="Edm.String" /><NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview_Product" ToRole="Product" FromRole="ProductReview" /></EntityType><EntityType Name="ProductPhoto"><Key><PropertyRef Name="PhotoId" /><PropertyRef Name="ProductId" /></Key><Property Name="ProductId" Type="Edm.Int32" Nullable="false" /><Property Name="PhotoId" Type="Edm.Int32" Nullable="false" /><P
 roperty Name="Photo" Type="Edm.Binary" /></EntityType><EntityType Name="CustomerInfo" m:HasStream="true"><Key><PropertyRef Name="CustomerInfoId" /></Key><Property Name="CustomerInfoId" Type="Edm.Int32" Nullable="false" /><Property Name="Information" Type="Edm.String" /></EntityType><EntityType Name="Computer"><Key><PropertyRef Name="ComputerId" /></Key><Property Name="ComputerId" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" /><NavigationProperty Name="ComputerDetail" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer_ComputerDetail" ToRole="ComputerDetail" FromRole="Computer" /></EntityType><EntityType Name="ComputerDetail"><Key><PropertyRef Name="ComputerDetailId" /></Key><Property Name="ComputerDetailId" Type="Edm.Int32" Nullable="false" /><Property Name="Manufacturer" Type="Edm.String" m:FC_TargetPath="SyndicationAuthorEmail" m:FC_ContentKind="text" m:FC_KeepInContent="true" /><Property Name="Model" Type="Edm.String" m:FC_Tar
 getPath="SyndicationAuthorUri" m:FC_ContentKind="text" m:FC_KeepInContent="true" /><Property Name="Serial" Type="Edm.String" /><Property Name="SpecificationsBag" Type="Collection(Edm.String)" Nullable="false" /><Property Name="PurchaseDate" Type="Edm.DateTime" Nullable="false" /><Property Name="Dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" /><NavigationProperty Name="Computer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail_Computer" ToRole="Computer" FromRole="ComputerDetail" /></EntityType><EntityType Name="Driver"><Key><PropertyRef Name="Name" /></Key><Property Name="Name" Type="Edm.String" Nullable="false" /><Property Name="BirthDate" Type="Edm.DateTime" Nullable="false" /><NavigationProperty Name="License" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver_License" ToRole="License" FromRole="Driver" /></EntityType><EntityType Name="License"><Key><PropertyRef Name="Name" /></Key><Property 
 Name="Name" Type="Edm.String" Nullable="false" /><Property Name="LicenseNumber" Type="Edm.String" /><Property Name="LicenseClass" Type="Edm.String" m:FC_TargetPath="SyndicationContributorEmail" m:FC_ContentKind="text" m:FC_KeepInContent="false" /><Property Name="Restrictions" Type="Edm.String" m:FC_TargetPath="SyndicationContributorUri" m:FC_ContentKind="text" m:FC_KeepInContent="false" /><Property Name="ExpirationDate" Type="Edm.DateTime" Nullable="false" /><NavigationProperty Name="Driver" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.License_Driver" ToRole="Driver" FromRole="License" /></EntityType><EntityType Name="MappedEntityType"><Key><PropertyRef Name="Id" /></Key><Property Name="Id" Type="Edm.Int32" Nullable="false" /><Property Name="Href" Type="Edm.String" /><Property Name="Title" Type="Edm.String" /><Property Name="HrefLang" Type="Edm.String" /><Property Name="Type" Type="Edm.String" /><Property Name="Length" Type="Edm.Int32" Nullable="false" /><Proper
 ty Name="BagOfPrimitiveToLinks" Type="Collection(Edm.String)" Nullable="false" /><Property Name="Logo" Type="Edm.Binary" /><Property Name="BagOfDecimals" Type="Collection(Edm.Decimal)" Nullable="false" /><Property Name="BagOfDoubles" Type="Collection(Edm.Double)" Nullable="false" /><Property Name="BagOfSingles" Type="Collection(Edm.Single)" Nullable="false" /><Property Name="BagOfBytes" Type="Collection(Edm.Byte)" Nullable="false" /><Property Name="BagOfInt16s" Type="Collection(Edm.Int16)" Nullable="false" /><Property Name="BagOfInt32s" Type="Collection(Edm.Int32)" Nullable="false" /><Property Name="BagOfInt64s" Type="Collection(Edm.Int64)" Nullable="false" /><Property Name="BagOfGuids" Type="Collection(Edm.Guid)" Nullable="false" /><Property Name="BagOfDateTime" Type="Collection(Edm.DateTime)" Nullable="false" /><Property Name="BagOfComplexToCategories" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ComplexToCategory)" Nullable="false" /><Property Name="Comple
 xPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" m:FC_TargetPath="SyndicationRights" m:FC_ContentKind="text" m:FC_SourcePath="PhoneNumber" m:FC_KeepInContent="true" /><Property Name="ComplexContactDetails" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails" m:FC_TargetPath="SyndicationSummary" m:FC_ContentKind="text" m:FC_SourcePath="WorkPhone/Extension" m:FC_KeepInContent="true" /></EntityType><EntityType Name="Car" m:HasStream="true"><Key><PropertyRef Name="VIN" /></Key><Property Name="Photo" Type="Edm.Stream" Nullable="false" /><Property Name="Video" Type="Edm.Stream" Nullable="false" /><Property Name="VIN" Type="Edm.Int32" Nullable="false" /><Property Name="Description" Type="Edm.String" /></EntityType><EntityType Name="Person"><Key><PropertyRef Name="PersonId" /></Key><Property Name="PersonId" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" /><NavigationProperty Name="PersonMetadata" Relationship="Microso
 ft.Test.OData.Services.AstoriaDefaultService.Person_PersonMetadata" ToRole="PersonMetadata" FromRole="Person" /></EntityType><EntityType Name="PersonMetadata"><Key><PropertyRef Name="PersonMetadataId" /></Key><Property Name="PersonMetadataId" Type="Edm.Int32" Nullable="false" /><Property Name="PersonId" Type="Edm.Int32" Nullable="false" /><Property Name="PropertyName" Type="Edm.String" /><Property Name="PropertyValue" Type="Edm.String" /><NavigationProperty Name="Person" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata_Person" ToRole="Person" FromRole="PersonMetadata" /></EntityType><ComplexType Name="ContactDetails"><Property Name="EmailBag" Type="Collection(Edm.String)" Nullable="false" /><Property Name="AlternativeNames" Type="Collection(Edm.String)" Nullable="false" /><Property Name="ContactAlias" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases" /><Property Name="HomePhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultServic
 e.Phone" /><Property Name="WorkPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" /><Property Name="MobilePhoneBag" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" Nullable="false" /></ComplexType><ComplexType Name="AuditInfo"><Property Name="ModifiedDate" Type="Edm.DateTime" Nullable="false" /><Property Name="ModifiedBy" Type="Edm.String" /><Property Name="Concurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" /></ComplexType><ComplexType Name="ConcurrencyInfo"><Property Name="Token" Type="Edm.String" /><Property Name="QueriedDateTime" Type="Edm.DateTime" /></ComplexType><ComplexType Name="Dimensions"><Property Name="Width" Type="Edm.Decimal" Nullable="false" /><Property Name="Height" Type="Edm.Decimal" Nullable="false" /><Property Name="Depth" Type="Edm.Decimal" Nullable="false" /></ComplexType><ComplexType Name="ComplexToCategory"><Property Name="Term" Type="Edm.String" /><Property Name="Scheme" Ty
 pe="Edm.String" /><Property Name="Label" Type="Edm.String" /></ComplexType><ComplexType Name="Phone"><Property Name="PhoneNumber" Type="Edm.String" /><Property Name="Extension" Type="Edm.String" /></ComplexType><ComplexType Name="Aliases"><Property Name="AlternativeNames" Type="Collection(Edm.String)" Nullable="false" /></ComplexType><EntityType Name="AllSpatialCollectionTypes_Simple" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialCollectionTypes"><Property Name="ManyGeogPoint" Type="Collection(Edm.GeographyPoint)" Nullable="false" SRID="Variable" /><Property Name="ManyGeogLine" Type="Collection(Edm.GeographyLineString)" Nullable="false" SRID="Variable" /><Property Name="ManyGeogPolygon" Type="Collection(Edm.GeographyPolygon)" Nullable="false" SRID="Variable" /><Property Name="ManyGeomPoint" Type="Collection(Edm.GeometryPoint)" Nullable="false" SRID="Variable" /><Property Name="ManyGeomLine" Type="Collection(Edm.GeometryLineString)" Nullable="false" SRID="Va
 riable" /><Property Name="ManyGeomPolygon" Type="Collection(Edm.GeometryPolygon)" Nullable="false" SRID="Variable" /></EntityType><EntityType Name="ProductPageView" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView"><Property Name="ProductId" Type="Edm.Int32" Nullable="false" /><Property Name="ConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" /></EntityType><EntityType Name="BackOrderLine" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" /><EntityType Name="BackOrderLine2" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.BackOrderLine" /><EntityType Name="DiscontinuedProduct" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Product"><Property Name="Discontinued" Type="Edm.DateTime" Nullable="false" /><Property Name="ReplacementProductId" Type="Edm.Int32" /><Property Name="DiscontinuedPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" /><Property Name="ChildConcurrencyToken" Type="Ed
 m.String" ConcurrencyMode="Fixed" /></EntityType><EntityType Name="Contractor" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person"><Property Name="ContratorCompanyId" Type="Edm.Int32" Nullable="false" /><Property Name="BillingRate" Type="Edm.Int32" Nullable="false" /><Property Name="TeamContactPersonId" Type="Edm.Int32" Nullable="false" /><Property Name="JobDescription" Type="Edm.String" /></EntityType><EntityType Name="Employee" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person"><Property Name="ManagersPersonId" Type="Edm.Int32" Nullable="false" /><Property Name="Salary" Type="Edm.Int32" Nullable="false" /><Property Name="Title" Type="Edm.String" /><NavigationProperty Name="Manager" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee_Manager" ToRole="Manager" FromRole="Employee" /></EntityType><EntityType Name="SpecialEmployee" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee"><Property Name="CarsVIN"
  Type="Edm.Int32" Nullable="false" /><Property Name="Bonus" Type="Edm.Int32" Nullable="false" /><Property Name="IsFullyVested" Type="Edm.Boolean" Nullable="false" /><NavigationProperty Name="Car" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee_Car" ToRole="Car" FromRole="SpecialEmployee" /></EntityType><ComplexType Name="ComplexWithAllPrimitiveTypes"><Property Name="Binary" Type="Edm.Binary" /><Property Name="Boolean" Type="Edm.Boolean" Nullable="false" /><Property Name="Byte" Type="Edm.Byte" Nullable="false" /><Property Name="DateTime" Type="Edm.DateTime" Nullable="false" /><Property Name="Decimal" Type="Edm.Decimal" Nullable="false" /><Property Name="Double" Type="Edm.Double" Nullable="false" /><Property Name="Int16" Type="Edm.Int16" Nullable="false" /><Property Name="Int32" Type="Edm.Int32" Nullable="false" /><Property Name="Int64" Type="Edm.Int64" Nullable="false" /><Property Name="SByte" Type="Edm.SByte" Nullable="false" /><Property Name="Strin
 g" Type="Edm.String" /><Property Name="Single" Type="Edm.Single" Nullable="false" /><Property Name="GeographyPoint" Type="Edm.GeographyPoint" SRID="Variable" /><Property Name="GeometryPoint" Type="Edm.GeometryPoint" SRID="Variable" /></ComplexType><Association Name="Customer_Orders"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Orders" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" /></Association><Association Name="Customer_Logins"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Logins" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" /></Association><Association Name="Customer_Husband"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Husband" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="C
 ustomer" Multiplicity="*" /></Association><Association Name="Customer_Wife"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Wife" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" /></Association><Association Name="Customer_Info"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo" Role="Info" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" /></Association><Association Name="Login_Customer"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="0..1" /></Association><Association Name="Login_LastLogin"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" /><End Type="Microsoft.Test
 .OData.Services.AstoriaDefaultService.LastLogin" Role="LastLogin" Multiplicity="0..1" /></Association><Association Name="Login_SentMessages"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="SentMessages" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" /></Association><Association Name="Login_ReceivedMessages"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="ReceivedMessages" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" /></Association><Association Name="Login_Orders"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Orders" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" /></Association><Association Name="RSAToken_Login"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.RSATo
 ken" Role="RSAToken" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" /></Association><Association Name="PageView_Login"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView" Role="PageView" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" /></Association><Association Name="LastLogin_Login"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" Role="LastLogin" Multiplicity="*" /></Association><Association Name="Message_Sender"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Sender" Multiplicity="0..1" /></Association><Association Name="Message_Recipient"><End Type="M
 icrosoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Recipient" Multiplicity="0..1" /></Association><Association Name="Message_Attachments"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment" Role="Attachments" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" /></Association><Association Name="Order_Customer"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="0..1" /></Association><Association Name="Order_Login"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" /
 ></Association><Association Name="OrderLine_Order"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" Role="OrderLine" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="0..1" /></Association><Association Name="OrderLine_Product"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" Role="OrderLine" Multiplicity="*" /></Association><Association Name="Product_RelatedProducts"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="RelatedProducts" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" /></Association><Association Name="Product_Detail"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" Role="Detail" Multiplicity="0..1" /><End Type="Microsof
 t.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" /></Association><Association Name="Product_Reviews"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" Role="Reviews" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" /></Association><Association Name="Product_Photos"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductPhoto" Role="Photos" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" /></Association><Association Name="ProductDetail_Product"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" Role="ProductDetail" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" /></Association><Association Name="ProductReview_Product"><End Type="Microsoft.Test.OData.Servic
 es.AstoriaDefaultService.ProductReview" Role="ProductReview" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" /></Association><Association Name="Computer_ComputerDetail"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" Role="ComputerDetail" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" Role="Computer" Multiplicity="*" /></Association><Association Name="ComputerDetail_Computer"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" Role="ComputerDetail" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" Role="Computer" Multiplicity="0..1" /></Association><Association Name="Driver_License"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.License" Role="License" Multiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" R
 ole="Driver" Multiplicity="*" /></Association><Association Name="License_Driver"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.License" Role="License" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" Role="Driver" Multiplicity="0..1" /></Association><Association Name="Person_PersonMetadata"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" Role="PersonMetadata" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" Role="Person" Multiplicity="*" /></Association><Association Name="PersonMetadata_Person"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" Role="PersonMetadata" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" Role="Person" Multiplicity="0..1" /></Association><Association Name="Employee_Manager"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" Role="Manager" M
 ultiplicity="0..1" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" Role="Employee" Multiplicity="*" /></Association><Association Name="SpecialEmployee_Car"><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" Role="SpecialEmployee" Multiplicity="*" /><End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Car" Role="Car" Multiplicity="0..1" /></Association><EntityContainer Name="DefaultContainer" m:IsDefaultEntityContainer="true"><EntitySet Name="AllGeoTypesSet" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" /><EntitySet Name="AllGeoCollectionTypesSet" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialCollectionTypes" /><EntitySet Name="Customer" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" /><EntitySet Name="Login" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" /><EntitySet Name="RSAToken" EntityType="Microsoft.T
 est.OData.Services.AstoriaDefaultService.RSAToken" /><EntitySet Name="PageView" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView" /><EntitySet Name="LastLogin" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" /><EntitySet Name="Message" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" /><EntitySet Name="MessageAttachment" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment" /><EntitySet Name="Order" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" /><EntitySet Name="OrderLine" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" /><EntitySet Name="Product" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" /><EntitySet Name="ProductDetail" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" /><EntitySet Name="ProductReview" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Pr
 oductReview" /><EntitySet Name="ProductPhoto" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductPhoto" /><EntitySet Name="CustomerInfo" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo" /><EntitySet Name="Computer" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" /><EntitySet Name="ComputerDetail" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" /><EntitySet Name="Driver" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" /><EntitySet Name="License" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.License" /><EntitySet Name="MappedEntityType" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.MappedEntityType" /><EntitySet Name="Car" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Car" /><EntitySet Name="Person" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" /><EntitySet Name="PersonMetadata
 " EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" /><FunctionImport Name="GetPrimitiveString" ReturnType="Edm.String" m:HttpMethod="GET" /><FunctionImport Name="GetSpecificCustomer" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Customer)" EntitySet="Customer" m:HttpMethod="GET"><Parameter Name="Name" Type="Edm.String" /></FunctionImport><FunctionImport Name="GetCustomerCount" ReturnType="Edm.Int32" m:HttpMethod="GET" /><FunctionImport Name="GetArgumentPlusOne" ReturnType="Edm.Int32" m:HttpMethod="GET"><Parameter Name="arg1" Type="Edm.Int32" Nullable="false" /></FunctionImport><FunctionImport Name="EntityProjectionReturnsCollectionOfComplexTypes" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)" m:HttpMethod="GET" /><FunctionImport Name="ResetDataSource" m:HttpMethod="POST" /><FunctionImport Name="InStreamErrorGetCustomer" ReturnType="Collection(Microsoft.Test.OData.Services.Astoria
 DefaultService.Customer)" EntitySet="Customer" m:HttpMethod="GET" /><FunctionImport Name="IncreaseSalaries" IsBindable="true" m:IsAlwaysBindable="true"><Parameter Name="employees" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Employee)" /><Parameter Name="n" Type="Edm.Int32" Nullable="false" /></FunctionImport><FunctionImport Name="Sack" IsBindable="true" m:IsAlwaysBindable="true"><Parameter Name="employee" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" /></FunctionImport><FunctionImport Name="GetComputer" ReturnType="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" IsBindable="true" EntitySet="Computer" m:IsAlwaysBindable="true"><Parameter Name="computer" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" /></FunctionImport><FunctionImport Name="ChangeProductDimensions" IsBindable="true" m:IsAlwaysBindable="true"><Parameter Name="product" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" /><P
 arameter Name="dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" /></FunctionImport><FunctionImport Name="ResetComputerDetailsSpecifications" IsBindable="true" m:IsAlwaysBindable="true"><Parameter Name="computerDetail" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" /><Parameter Name="specifications" Type="Collection(Edm.String)" Nullable="false" /><Parameter Name="purchaseTime" Type="Edm.DateTime" Nullable="false" /></FunctionImport><AssociationSet Name="Customer_Orders" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Orders"><End Role="Customer" EntitySet="Customer" /><End Role="Orders" EntitySet="Order" /></AssociationSet><AssociationSet Name="Customer_Logins" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Logins"><End Role="Customer" EntitySet="Customer" /><End Role="Logins" EntitySet="Login" /></AssociationSet><AssociationSet Name="Customer_Husband" Association="Micros
 oft.Test.OData.Services.AstoriaDefaultService.Customer_Husband"><End Role="Customer" EntitySet="Customer" /><End Role="Husband" EntitySet="Customer" /></AssociationSet><AssociationSet Name="Customer_Wife" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Wife"><End Role="Customer" EntitySet="Customer" /><End Role="Wife" EntitySet="Customer" /></AssociationSet><AssociationSet Name="Customer_Info" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Info"><End Role="Customer" EntitySet="Customer" /><End Role="Info" EntitySet="CustomerInfo" /></AssociationSet><AssociationSet Name="Login_Customer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Customer"><End Role="Login" EntitySet="Login" /><End Role="Customer" EntitySet="Customer" /></AssociationSet><AssociationSet Name="Login_LastLogin" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_LastLogin"><End Role="Login" EntitySet="Login" /><End Role="L
 astLogin" EntitySet="LastLogin" /></AssociationSet><AssociationSet Name="Login_SentMessages" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_SentMessages"><End Role="Login" EntitySet="Login" /><End Role="SentMessages" EntitySet="Message" /></AssociationSet><AssociationSet Name="Login_ReceivedMessages" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_ReceivedMessages"><End Role="Login" EntitySet="Login" /><End Role="ReceivedMessages" EntitySet="Message" /></AssociationSet><AssociationSet Name="Login_Orders" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Orders"><End Role="Login" EntitySet="Login" /><End Role="Orders" EntitySet="Order" /></AssociationSet><AssociationSet Name="RSAToken_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken_Login"><End Role="RSAToken" EntitySet="RSAToken" /><End Role="Login" EntitySet="Login" /></AssociationSet><AssociationSet Name="PageView_Login" Association
 ="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView_Login"><End Role="PageView" EntitySet="PageView" /><End Role="Login" EntitySet="Login" /></AssociationSet><AssociationSet Name="LastLogin_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin_Login"><End Role="LastLogin" EntitySet="LastLogin" /><End Role="Login" EntitySet="Login" /></AssociationSet><AssociationSet Name="Message_Sender" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Sender"><End Role="Message" EntitySet="Message" /><End Role="Sender" EntitySet="Login" /></AssociationSet><AssociationSet Name="Message_Recipient" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Recipient"><End Role="Message" EntitySet="Message" /><End Role="Recipient" EntitySet="Login" /></AssociationSet><AssociationSet Name="Message_Attachments" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Attachments"><End Role="Message" EntitySet="Mes
 sage" /><End Role="Attachments" EntitySet="MessageAttachment" /></AssociationSet><AssociationSet Name="Order_Customer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer"><End Role="Order" EntitySet="Order" /><End Role="Customer" EntitySet="Customer" /></AssociationSet><AssociationSet Name="Order_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login"><End Role="Order" EntitySet="Order" /><End Role="Login" EntitySet="Login" /></AssociationSet><AssociationSet Name="OrderLine_Order" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Order"><End Role="OrderLine" EntitySet="OrderLine" /><End Role="Order" EntitySet="Order" /></AssociationSet><AssociationSet Name="OrderLine_Product" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Product"><End Role="OrderLine" EntitySet="OrderLine" /><End Role="Product" EntitySet="Product" /></AssociationSet><AssociationSet Name="Product_RelatedPro
 ducts" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_RelatedProducts"><End Role="Product" EntitySet="Product" /><End Role="RelatedProducts" EntitySet="Product" /></AssociationSet><AssociationSet Name="Product_Detail" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Detail"><End Role="Product" EntitySet="Product" /><End Role="Detail" EntitySet="ProductDetail" /></AssociationSet><AssociationSet Name="Product_Reviews" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Reviews"><End Role="Product" EntitySet="Product" /><End Role="Reviews" EntitySet="ProductReview" /></AssociationSet><AssociationSet Name="Product_Photos" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Photos"><End Role="Product" EntitySet="Product" /><End Role="Photos" EntitySet="ProductPhoto" /></AssociationSet><AssociationSet Name="ProductDetail_Product" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Prod
 uctDetail_Product"><End Role="ProductDetail" EntitySet="ProductDetail" /><End Role="Product" EntitySet="Product" /></AssociationSet><AssociationSet Name="ProductReview_Product" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview_Product"><End Role="ProductReview" EntitySet="ProductReview" /><End Role="Product" EntitySet="Product" /></AssociationSet><AssociationSet Name="Computer_ComputerDetail" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer_ComputerDetail"><End Role="Computer" EntitySet="Computer" /><End Role="ComputerDetail" EntitySet="ComputerDetail" /></AssociationSet><AssociationSet Name="ComputerDetail_Computer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail_Computer"><End Role="ComputerDetail" EntitySet="ComputerDetail" /><End Role="Computer" EntitySet="Computer" /></AssociationSet><AssociationSet Name="Driver_License" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver_L
 icense"><End Role="Driver" EntitySet="Driver" /><End Role="License" EntitySet="License" /></AssociationSet><AssociationSet Name="License_Driver" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.License_Driver"><End Role="License" EntitySet="License" /><End Role="Driver" EntitySet="Driver" /></AssociationSet><AssociationSet Name="Employee_Manager" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee_Manager"><End Role="Employee" EntitySet="Person" /><End Role="Manager" EntitySet="Person" /></AssociationSet><AssociationSet Name="SpecialEmployee_Car" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee_Car"><End Role="SpecialEmployee" EntitySet="Person" /><End Role="Car" EntitySet="Car" /></AssociationSet><AssociationSet Name="Person_PersonMetadata" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Person_PersonMetadata"><End Role="Person" EntitySet="Person" /><End Role="PersonMetadata" EntitySet="PersonMet
 adata" /></AssociationSet><AssociationSet Name="PersonMetadata_Person" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata_Person"><End Role="PersonMetadata" EntitySet="PersonMetadata" /><End Role="Person" EntitySet="Person" /></AssociationSet></EntityContainer></Schema></edmx:DataServices></edmx:Edmx>
+<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
+  <edmx:DataServices m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0" 
+                     xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
+    <Schema Namespace="Microsoft.Test.OData.Services.AstoriaDefaultService" 
+            xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
+      <EntityType Name="AllSpatialTypes">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Geog" Type="Edm.Geography" SRID="Variable" />
+        <Property Name="GeogPoint" Type="Edm.GeographyPoint" SRID="Variable" />
+        <Property Name="GeogLine" Type="Edm.GeographyLineString" SRID="Variable" />
+        <Property Name="GeogPolygon" Type="Edm.GeographyPolygon" SRID="Variable" />
+        <Property Name="GeogCollection" Type="Edm.GeographyCollection" SRID="Variable" />
+        <Property Name="GeogMultiPoint" Type="Edm.GeographyMultiPoint" SRID="Variable" />
+        <Property Name="GeogMultiLine" Type="Edm.GeographyMultiLineString" SRID="Variable" />
+        <Property Name="GeogMultiPolygon" Type="Edm.GeographyMultiPolygon" SRID="Variable" />
+        <Property Name="Geom" Type="Edm.Geometry" SRID="Variable" />
+        <Property Name="GeomPoint" Type="Edm.GeometryPoint" SRID="Variable" />
+        <Property Name="GeomLine" Type="Edm.GeometryLineString" SRID="Variable" />
+        <Property Name="GeomPolygon" Type="Edm.GeometryPolygon" SRID="Variable" />
+        <Property Name="GeomCollection" Type="Edm.GeometryCollection" SRID="Variable" />
+        <Property Name="GeomMultiPoint" Type="Edm.GeometryMultiPoint" SRID="Variable" />
+        <Property Name="GeomMultiLine" Type="Edm.GeometryMultiLineString" SRID="Variable" />
+        <Property Name="GeomMultiPolygon" Type="Edm.GeometryMultiPolygon" SRID="Variable" />
+      </EntityType>
+      <EntityType Name="AllSpatialCollectionTypes" Abstract="true">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
+      </EntityType>
+      <EntityType Name="Customer">
+        <Key>
+          <PropertyRef Name="CustomerId" />
+        </Key>
+        <Property Name="Thumbnail" Type="Edm.Stream" Nullable="false" />
+        <Property Name="Video" Type="Edm.Stream" Nullable="false" />
+        <Property Name="CustomerId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" m:FC_TargetPath="SyndicationSummary" m:FC_ContentKind="text" m:FC_KeepInContent="false" />
+        <Property Name="PrimaryContactInfo" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails" />
+        <Property Name="BackupContactInfo" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)" Nullable="false" />
+        <Property Name="Auditing" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo" />
+        <NavigationProperty Name="Orders" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Orders" ToRole="Orders" FromRole="Customer" />
+        <NavigationProperty Name="Logins" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Logins" ToRole="Logins" FromRole="Customer" />
+        <NavigationProperty Name="Husband" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Husband" ToRole="Husband" FromRole="Customer" />
+        <NavigationProperty Name="Wife" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Wife" ToRole="Wife" FromRole="Customer" />
+        <NavigationProperty Name="Info" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Info" ToRole="Info" FromRole="Customer" />
+      </EntityType>
+      <EntityType Name="Login">
+        <Key>
+          <PropertyRef Name="Username" />
+        </Key>
+        <Property Name="Username" Type="Edm.String" Nullable="false" />
+        <Property Name="CustomerId" Type="Edm.Int32" Nullable="false" />
+        <NavigationProperty Name="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Customer" ToRole="Customer" FromRole="Login" />
+        <NavigationProperty Name="LastLogin" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_LastLogin" ToRole="LastLogin" FromRole="Login" />
+        <NavigationProperty Name="SentMessages" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_SentMessages" ToRole="SentMessages" FromRole="Login" />
+        <NavigationProperty Name="ReceivedMessages" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_ReceivedMessages" ToRole="ReceivedMessages" FromRole="Login" />
+        <NavigationProperty Name="Orders" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Orders" ToRole="Orders" FromRole="Login" />
+      </EntityType>
+      <EntityType Name="RSAToken">
+        <Key>
+          <PropertyRef Name="Serial" />
+        </Key>
+        <Property Name="Serial" Type="Edm.String" Nullable="false" />
+        <Property Name="Issued" Type="Edm.DateTime" Nullable="false" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken_Login" ToRole="Login" FromRole="RSAToken" />
+      </EntityType>
+      <EntityType Name="PageView">
+        <Key>
+          <PropertyRef Name="PageViewId" />
+        </Key>
+        <Property Name="PageViewId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Username" Type="Edm.String" />
+        <Property Name="Viewed" Type="Edm.DateTimeOffset" Nullable="false" />
+        <Property Name="TimeSpentOnPage" Type="Edm.Time" Nullable="false" />
+        <Property Name="PageUrl" Type="Edm.String" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView_Login" ToRole="Login" FromRole="PageView" />
+      </EntityType>
+      <EntityType Name="LastLogin">
+        <Key>
+          <PropertyRef Name="Username" />
+        </Key>
+        <Property Name="Username" Type="Edm.String" Nullable="false" />
+        <Property Name="LoggedIn" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="LoggedOut" Type="Edm.DateTime" />
+        <Property Name="Duration" Type="Edm.Time" Nullable="false" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin_Login" ToRole="Login" FromRole="LastLogin" />
+      </EntityType>
+      <EntityType Name="Message">
+        <Key>
+          <PropertyRef Name="FromUsername" />
+          <PropertyRef Name="MessageId" />
+        </Key>
+        <Property Name="MessageId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="FromUsername" Type="Edm.String" Nullable="false" />
+        <Property Name="ToUsername" Type="Edm.String" />
+        <Property Name="Sent" Type="Edm.DateTimeOffset" Nullable="false" m:FC_TargetPath="SyndicationPublished" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Subject" Type="Edm.String" m:FC_TargetPath="SyndicationTitle" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Body" Type="Edm.String" />
+        <Property Name="IsRead" Type="Edm.Boolean" Nullable="false" />
+        <NavigationProperty Name="Sender" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Sender" ToRole="Sender" FromRole="Message" />
+        <NavigationProperty Name="Recipient" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Recipient" ToRole="Recipient" FromRole="Message" />
+        <NavigationProperty Name="Attachments" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Attachments" ToRole="Attachments" FromRole="Message" />
+      </EntityType>
+      <EntityType Name="MessageAttachment">
+        <Key>
+          <PropertyRef Name="AttachmentId" />
+        </Key>
+        <Property Name="AttachmentId" Type="Edm.Guid" Nullable="false" />
+        <Property Name="Attachment" Type="Edm.Binary" />
+      </EntityType>
+      <EntityType Name="Order">
+        <Key>
+          <PropertyRef Name="OrderId" />
+        </Key>
+        <Property Name="OrderId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="CustomerId" Type="Edm.Int32" />
+        <Property Name="Concurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" />
+        <NavigationProperty Name="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer" ToRole="Customer" FromRole="Order" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login" ToRole="Login" FromRole="Order" />
+      </EntityType>
+      <EntityType Name="OrderLine">
+        <Key>
+          <PropertyRef Name="OrderId" />
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="OrderLineStream" Type="Edm.Stream" Nullable="false" />
+        <Property Name="OrderId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Quantity" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" />
+        <NavigationProperty Name="Order" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Order" ToRole="Order" FromRole="OrderLine" />
+        <NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Product" ToRole="Product" FromRole="OrderLine" />
+      </EntityType>
+      <EntityType Name="Product">
+        <Key>
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="Picture" Type="Edm.Stream" Nullable="false" />
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Description" Type="Edm.String" />
+        <Property Name="Dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" />
+        <Property Name="BaseConcurrency" Type="Edm.String" ConcurrencyMode="Fixed" />
+        <Property Name="ComplexConcurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" />
+        <Property Name="NestedComplexConcurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo" />
+        <NavigationProperty Name="RelatedProducts" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_RelatedProducts" ToRole="RelatedProducts" FromRole="Product" />
+        <NavigationProperty Name="Detail" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Detail" ToRole="Detail" FromRole="Product" />
+        <NavigationProperty Name="Reviews" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Reviews" ToRole="Reviews" FromRole="Product" />
+        <NavigationProperty Name="Photos" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Photos" ToRole="Photos" FromRole="Product" />
+      </EntityType>
+      <EntityType Name="ProductDetail">
+        <Key>
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Details" Type="Edm.String" />
+        <NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail_Product" ToRole="Product" FromRole="ProductDetail" />
+      </EntityType>
+      <EntityType Name="ProductReview">
+        <Key>
+          <PropertyRef Name="ProductId" />
+          <PropertyRef Name="ReviewId" />
+          <PropertyRef Name="RevisionId" />
+        </Key>
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ReviewId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="RevisionId" Type="Edm.String" Nullable="false" />
+        <Property Name="Review" Type="Edm.String" />
+        <NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview_Product" ToRole="Product" FromRole="ProductReview" />
+      </EntityType>
+      <EntityType Name="ProductPhoto">
+        <Key>
+          <PropertyRef Name="PhotoId" />
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="PhotoId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Photo" Type="Edm.Binary" />
+      </EntityType>
+      <EntityType Name="CustomerInfo" m:HasStream="true">
+        <Key>
+          <PropertyRef Name="CustomerInfoId" />
+        </Key>
+        <Property Name="CustomerInfoId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Information" Type="Edm.String" />
+      </EntityType>
+      <EntityType Name="Computer">
+        <Key>
+          <PropertyRef Name="ComputerId" />
+        </Key>
+        <Property Name="ComputerId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <NavigationProperty Name="ComputerDetail" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer_ComputerDetail" ToRole="ComputerDetail" FromRole="Computer" />
+      </EntityType>
+      <EntityType Name="ComputerDetail">
+        <Key>
+          <PropertyRef Name="ComputerDetailId" />
+        </Key>
+        <Property Name="ComputerDetailId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Manufacturer" Type="Edm.String" m:FC_TargetPath="SyndicationAuthorEmail" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Model" Type="Edm.String" m:FC_TargetPath="SyndicationAuthorUri" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Serial" Type="Edm.String" />
+        <Property Name="SpecificationsBag" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="PurchaseDate" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="Dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" />
+        <NavigationProperty Name="Computer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail_Computer" ToRole="Computer" FromRole="ComputerDetail" />
+      </EntityType>
+      <EntityType Name="Driver">
+        <Key>
+          <PropertyRef Name="Name" />
+        </Key>
+        <Property Name="Name" Type="Edm.String" Nullable="false" />
+        <Property Name="BirthDate" Type="Edm.DateTime" Nullable="false" />
+        <NavigationProperty Name="License" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver_License" ToRole="License" FromRole="Driver" />
+      </EntityType>
+      <EntityType Name="License">
+        <Key>
+          <PropertyRef Name="Name" />
+        </Key>
+        <Property Name="Name" Type="Edm.String" Nullable="false" />
+        <Property Name="LicenseNumber" Type="Edm.String" />
+        <Property Name="LicenseClass" Type="Edm.String" m:FC_TargetPath="SyndicationContributorEmail" m:FC_ContentKind="text" m:FC_KeepInContent="false" />
+        <Property Name="Restrictions" Type="Edm.String" m:FC_TargetPath="SyndicationContributorUri" m:FC_ContentKind="text" m:FC_KeepInContent="false" />
+        <Property Name="ExpirationDate" Type="Edm.DateTime" Nullable="false" />
+        <NavigationProperty Name="Driver" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.License_Driver" ToRole="Driver" FromRole="License" />
+      </EntityType>
+      <EntityType Name="MappedEntityType">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Href" Type="Edm.String" />
+        <Property Name="Title" Type="Edm.String" />
+        <Property Name="HrefLang" Type="Edm.String" />
+        <Property Name="Type" Type="Edm.String" />
+        <Property Name="Length" Type="Edm.Int32" Nullable="false" />
+        <Property Name="BagOfPrimitiveToLinks" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="Logo" Type="Edm.Binary" />
+        <Property Name="BagOfDecimals" Type="Collection(Edm.Decimal)" Nullable="false" />
+        <Property Name="BagOfDoubles" Type="Collection(Edm.Double)" Nullable="false" />
+        <Property Name="BagOfSingles" Type="Collection(Edm.Single)" Nullable="false" />
+        <Property Name="BagOfBytes" Type="Collection(Edm.Byte)" Nullable="false" />
+        <Property Name="BagOfInt16s" Type="Collection(Edm.Int16)" Nullable="false" />
+        <Property Name="BagOfInt32s" Type="Collection(Edm.Int32)" Nullable="false" />
+        <Property Name="BagOfInt64s" Type="Collection(Edm.Int64)" Nullable="false" />
+        <Property Name="BagOfGuids" Type="Collection(Edm.Guid)" Nullable="false" />
+        <Property Name="BagOfDateTime" Type="Collection(Edm.DateTime)" Nullable="false" />
+        <Property Name="BagOfComplexToCategories" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ComplexToCategory)" Nullable="false" />
+        <Property Name="ComplexPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" m:FC_TargetPath="SyndicationRights" m:FC_ContentKind="text" m:FC_SourcePath="PhoneNumber" m:FC_KeepInContent="true" />
+        <Property Name="ComplexContactDetails" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails" m:FC_TargetPath="SyndicationSummary" m:FC_ContentKind="text" m:FC_SourcePath="WorkPhone/Extension" m:FC_KeepInContent="true" />
+      </EntityType>
+      <EntityType Name="Car" m:HasStream="true">
+        <Key>
+          <PropertyRef Name="VIN" />
+        </Key>
+        <Property Name="Photo" Type="Edm.Stream" Nullable="false" />
+        <Property Name="Video" Type="Edm.Stream" Nullable="false" />
+        <Property Name="VIN" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Description" Type="Edm.String" />
+      </EntityType>
+      <EntityType Name="Person">
+        <Key>
+          <PropertyRef Name="PersonId" />
+        </Key>
+        <Property Name="PersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <NavigationProperty Name="PersonMetadata" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Person_PersonMetadata" ToRole="PersonMetadata" FromRole="Person" />
+      </EntityType>
+      <EntityType Name="PersonMetadata">
+        <Key>
+          <PropertyRef Name="PersonMetadataId" />
+        </Key>
+        <Property Name="PersonMetadataId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="PersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="PropertyName" Type="Edm.String" />
+        <Property Name="PropertyValue" Type="Edm.String" />
+        <NavigationProperty Name="Person" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata_Person" ToRole="Person" FromRole="PersonMetadata" />
+      </EntityType>
+      <ComplexType Name="ContactDetails">
+        <Property Name="EmailBag" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="AlternativeNames" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="ContactAlias" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases" />
+        <Property Name="HomePhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" />
+        <Property Name="WorkPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" />
+        <Property Name="MobilePhoneBag" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" Nullable="false" />
+      </ComplexType>
+      <ComplexType Name="AuditInfo">
+        <Property Name="ModifiedDate" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="ModifiedBy" Type="Edm.String" />
+        <Property Name="Concurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" />
+      </ComplexType>
+      <ComplexType Name="ConcurrencyInfo">
+        <Property Name="Token" Type="Edm.String" />
+        <Property Name="QueriedDateTime" Type="Edm.DateTime" />
+      </ComplexType>
+      <ComplexType Name="Dimensions">
+        <Property Name="Width" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="Height" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="Depth" Type="Edm.Decimal" Nullable="false" />
+      </ComplexType>
+      <ComplexType Name="ComplexToCategory">
+        <Property Name="Term" Type="Edm.String" />
+        <Property Name="Scheme" Type="Edm.String" />
+        <Property Name="Label" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="Phone">
+        <Property Name="PhoneNumber" Type="Edm.String" />
+        <Property Name="Extension" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="Aliases">
+        <Property Name="AlternativeNames" Type="Collection(Edm.String)" Nullable="false" />
+      </ComplexType>
+      <EntityType Name="AllSpatialCollectionTypes_Simple" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialCollectionTypes">
+        <Property Name="ManyGeogPoint" Type="Collection(Edm.GeographyPoint)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeogLine" Type="Collection(Edm.GeographyLineString)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeogPolygon" Type="Collection(Edm.GeographyPolygon)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeomPoint" Type="Collection(Edm.GeometryPoint)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeomLine" Type="Collection(Edm.GeometryLineString)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeomPolygon" Type="Collection(Edm.GeometryPolygon)" Nullable="false" SRID="Variable" />
+      </EntityType>
+      <EntityType Name="ProductPageView" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView">
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" />
+      </EntityType>
+      <EntityType Name="BackOrderLine" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" />
+      <EntityType Name="BackOrderLine2" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.BackOrderLine" />
+      <EntityType Name="DiscontinuedProduct" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Product">
+        <Property Name="Discontinued" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="ReplacementProductId" Type="Edm.Int32" />
+        <Property Name="DiscontinuedPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" />
+        <Property Name="ChildConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" />
+      </EntityType>
+      <EntityType Name="Contractor" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person">
+        <Property Name="ContratorCompanyId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="BillingRate" Type="Edm.Int32" Nullable="false" />
+        <Property Name="TeamContactPersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="JobDescription" Type="Edm.String" />
+      </EntityType>
+      <EntityType Name="Employee" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person">
+        <Property Name="ManagersPersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Salary" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Title" Type="Edm.String" />
+        <NavigationProperty Name="Manager" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee_Manager" ToRole="Manager" FromRole="Employee" />
+      </EntityType>
+      <EntityType Name="SpecialEmployee" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee">
+        <Property Name="CarsVIN" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Bonus" Type="Edm.Int32" Nullable="false" />
+        <Property Name="IsFullyVested" Type="Edm.Boolean" Nullable="false" />
+        <NavigationProperty Name="Car" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee_Car" ToRole="Car" FromRole="SpecialEmployee" />
+      </EntityType>
+      <ComplexType Name="ComplexWithAllPrimitiveTypes">
+        <Property Name="Binary" Type="Edm.Binary" />
+        <Property Name="Boolean" Type="Edm.Boolean" Nullable="false" />
+        <Property Name="Byte" Type="Edm.Byte" Nullable="false" />
+        <Property Name="DateTime" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="Decimal" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="Double" Type="Edm.Double" Nullable="false" />
+        <Property Name="Int16" Type="Edm.Int16" Nullable="false" />
+        <Property Name="Int32" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Int64" Type="Edm.Int64" Nullable="false" />
+        <Property Name="SByte" Type="Edm.SByte" Nullable="false" />
+        <Property Name="String" Type="Edm.String" />
+        <Property Name="Single" Type="Edm.Single" Nullable="false" />
+        <Property Name="GeographyPoint" Type="Edm.GeographyPoint" SRID="Variable" />
+        <Property Name="GeometryPoint" Type="Edm.GeometryPoint" SRID="Variable" />
+      </ComplexType>
+      <Association Name="Customer_Orders">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Orders" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Logins">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Logins" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Husband">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Husband" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Wife">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Wife" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Info">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo" Role="Info" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Login_Customer">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Login_LastLogin">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" Role="LastLogin" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Login_SentMessages">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="SentMessages" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+      </Association>
+      <Association Name="Login_ReceivedMessages">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="ReceivedMessages" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+      </Association>
+      <Association Name="Login_Orders">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Orders" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+      </Association>
+      <Association Name="RSAToken_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken" Role="RSAToken" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+      </Association>
+      <Association Name="PageView_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView" Role="PageView" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+      </Association>
+      <Association Name="LastLogin_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" Role="LastLogin" Multiplicity="*" />
+      </Association>
+      <Association Name="Message_Sender">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Sender" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Message_Recipient">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Recipient" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Message_Attachments">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment" Role="Attachments" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" />
+      </Association>
+      <Association Name="Order_Customer">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Order_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+      </Association>
+      <Association Name="OrderLine_Order">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" Role="OrderLine" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="0..1" />
+      </Association>
+      <Association Name="OrderLine_Product">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" Role="OrderLine" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_RelatedProducts">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="RelatedProducts" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_Detail">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" Role="Detail" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_Reviews">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" Role="Reviews" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_Photos">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductPhoto" Role="Photos" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="ProductDetail_Product">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" Role="ProductDetail" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" />
+      </Association>
+      <Association Name="ProductReview_Product">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" Role="ProductReview" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Computer_ComputerDetail">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" Role="ComputerDetail" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" Role="Computer" Multiplicity="*" />
+      </Association>
+      <Association Name="ComputerDetail_Computer">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" Role="ComputerDetail" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" Role="Computer" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Driver_License">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.License" Role="License" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" Role="Driver" Multiplicity="*" />
+      </Association>
+      <Association Name="License_Driver">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.License" Role="License" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" Role="Driver" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Person_PersonMetadata">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" Role="PersonMetadata" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" Role="Person" Multiplicity="*" />
+      </Association>
+      <Association Name="PersonMetadata_Person">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" Role="PersonMetadata" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" Role="Person" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Employee_Manager">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" Role="Manager" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" Role="Employee" Multiplicity="*" />
+      </Association>
+      <Association Name="SpecialEmployee_Car">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" Role="SpecialEmployee" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Car" Role="Car" Multiplicity="0..1" />
+      </Association>
+      <EntityContainer Name="DefaultContainer" m:IsDefaultEntityContainer="true">
+        <EntitySet Name="AllGeoTypesSet" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" />
+        <EntitySet Name="AllGeoCollectionTypesSet" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialCollectionTypes" />
+        <EntitySet Name="Customer" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" />
+        <EntitySet Name="Login" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" />
+        <EntitySet Name="RSAToken" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken" />
+        <EntitySet Name="PageView" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView" />
+        <EntitySet Name="LastLogin" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" />
+        <EntitySet Name="Message" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" />
+        <EntitySet Name="MessageAttachment" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment" />
+        <EntitySet Name="Order" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" />
+        <EntitySet Name="OrderLine" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" />
+        <EntitySet Name="Product" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" />
+        <EntitySet Name="ProductDetail" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" />
+        <EntitySet Name="ProductReview" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" />
+        <EntitySet Name="ProductPhoto" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductPhoto" />
+        <EntitySet Name="CustomerInfo" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo" />
+        <EntitySet Name="Computer" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" />
+        <EntitySet Name="ComputerDetail" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" />
+        <EntitySet Name="Driver" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" />
+        <EntitySet Name="License" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.License" />
+        <EntitySet Name="MappedEntityType" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.MappedEntityType" />
+        <EntitySet Name="Car" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Car" />
+        <EntitySet Name="Person" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" />
+        <EntitySet Name="PersonMetadata" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" />
+        <FunctionImport Name="GetPrimitiveString" ReturnType="Edm.String" m:HttpMethod="GET" />
+        <FunctionImport Name="GetSpecificCustomer" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Customer)" EntitySet="Customer" m:HttpMethod="GET">
+          <Parameter Name="Name" Type="Edm.String" />
+        </FunctionImport>
+        <FunctionImport Name="GetCustomerCount" ReturnType="Edm.Int32" m:HttpMethod="GET" />
+        <FunctionImport Name="GetArgumentPlusOne" ReturnType="Edm.Int32" m:HttpMethod="GET">
+          <Parameter Name="arg1" Type="Edm.Int32" Nullable="false" />
+        </FunctionImport>
+        <FunctionImport Name="EntityProjectionReturnsCollectionOfComplexTypes" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)" m:HttpMethod="GET" />
+        <FunctionImport Name="ResetDataSource" m:HttpMethod="POST" />
+        <FunctionImport Name="InStreamErrorGetCustomer" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Customer)" EntitySet="Customer" m:HttpMethod="GET" />
+        <FunctionImport Name="IncreaseSalaries" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="employees" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Employee)" />
+          <Parameter Name="n" Type="Edm.Int32" Nullable="false" />
+        </FunctionImport>
+        <FunctionImport Name="Sack" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="employee" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" />
+        </FunctionImport>
+        <FunctionImport Name="GetComputer" ReturnType="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" IsBindable="true" EntitySet="Computer" m:IsAlwaysBindable="true">
+          <Parameter Name="computer" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" />
+        </FunctionImport>
+        <FunctionImport Name="ChangeProductDimensions" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="product" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" />
+          <Parameter Name="dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" />
+        </FunctionImport>
+        <FunctionImport Name="ResetComputerDetailsSpecifications" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="computerDetail" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" />
+          <Parameter Name="specifications" Type="Collection(Edm.String)" Nullable="false" />
+          <Parameter Name="purchaseTime" Type="Edm.DateTime" Nullable="false" />
+        </FunctionImport>
+        <AssociationSet Name="Customer_Orders" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Orders">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Orders" EntitySet="Order" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Logins" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Logins">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Logins" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Husband" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Husband">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Husband" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Wife" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Wife">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Wife" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Info" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Info">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Info" EntitySet="CustomerInfo" />
+        </AssociationSet>
+        <AssociationSet Name="Login_Customer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Customer">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="Customer" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="Login_LastLogin" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_LastLogin">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="LastLogin" EntitySet="LastLogin" />
+        </AssociationSet>
+        <AssociationSet Name="Login_SentMessages" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_SentMessages">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="SentMessages" EntitySet="Message" />
+        </AssociationSet>
+        <AssociationSet Name="Login_ReceivedMessages" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_ReceivedMessages">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="ReceivedMessages" EntitySet="Message" />
+        </AssociationSet>
+        <AssociationSet Name="Login_Orders" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Orders">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="Orders" EntitySet="Order" />
+        </AssociationSet>
+        <AssociationSet Name="RSAToken_Login" Association="Microsoft.Test.OData

<TRUNCATED>

[09/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
deleted file mode 100644
index 2c9e838..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v3/ValueTerm.java
+++ /dev/null
@@ -1,28 +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.api.edm.v3;
-
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface ValueTerm extends Named {
-
-  String getType();
-
-  void setType(String type);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.java
deleted file mode 100644
index c32cb00..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Action.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.api.edm.v4;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Named;
-import org.apache.olingo.odata4.client.api.edm.CommonParameter;
-
-public interface Action extends Named {
-
-  boolean isBound();
-
-  void setBound(boolean bound);
-
-  String getEntitySetPath();
-
-  void setEntitySetPath(String entitySetPath);
-
-  List<? extends CommonParameter> getParameters();
-
-  CommonParameter getParameter(String name);
-
-  ReturnType getReturnType();
-
-  void setReturnType(ReturnType returnType);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
deleted file mode 100644
index b1ebb52..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ActionImport.java
+++ /dev/null
@@ -1,26 +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.api.edm.v4;
-
-public interface ActionImport extends OperationImport {
-
-  String getAction();
-
-  void setAction(String action);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java
deleted file mode 100644
index b123bb2..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/AnnotatedEdmItem.java
+++ /dev/null
@@ -1,26 +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.api.edm.v4;
-
-public interface AnnotatedEdmItem {
-
-  Annotation getAnnotation();
-
-  void setAnnotation(Annotation annotation);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotation.java
deleted file mode 100644
index 0fe5109..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotation.java
+++ /dev/null
@@ -1,41 +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.api.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.ConstExprConstruct;
-import org.apache.olingo.odata4.client.api.edm.v4.annotation.DynExprConstruct;
-
-public interface Annotation {
-
-  String getTerm();
-
-  void setTerm(String term);
-
-  String getQualifier();
-
-  void setQualifier(String qualifier);
-
-  ConstExprConstruct getConstExpr();
-
-  void setConstExpr(ConstExprConstruct constExpr);
-
-  DynExprConstruct getDynExpr();
-
-  void setDynExpr(DynExprConstruct dynExpr);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
deleted file mode 100644
index bc10f09..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Annotations.java
+++ /dev/null
@@ -1,29 +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.api.edm.v4;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.AbstractAnnotations;
-
-public interface Annotations extends AbstractAnnotations {
-
-  List<? extends Annotation> getAnnotations();
-
-  Annotation getAnnotation(String term);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/CSDLElement.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/CSDLElement.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/CSDLElement.java
deleted file mode 100644
index b29e4e4..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/CSDLElement.java
+++ /dev/null
@@ -1,37 +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.api.edm.v4;
-
-public enum CSDLElement {
-
-  ActionImport,
-  ComplexType,
-  EntityContainer,
-  EntitySet,
-  EntityType,
-  EnumType,
-  FunctionImport,
-  Member,
-  NavigationProperty,
-  Property,
-  Singleton,
-  Term,
-  TypeDefinition
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java
deleted file mode 100644
index 5e2357b..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ComplexType.java
+++ /dev/null
@@ -1,35 +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.api.edm.v4;
-
-public interface ComplexType extends org.apache.olingo.odata4.client.api.edm.ComplexType, AnnotatedEdmItem {
-
-  boolean isAbstractEntityType();
-
-  void setAbstractEntityType(boolean abstractEntityType);
-
-  String getBaseType();
-
-  void setBaseType(String baseType);
-
-  boolean isOpenType();
-
-  void setOpenType(boolean openType);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java
deleted file mode 100644
index 24173ed..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Edmx.java
+++ /dev/null
@@ -1,26 +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.api.edm.v4;
-
-import java.util.List;
-
-public interface Edmx extends org.apache.olingo.odata4.client.api.edm.Edmx {
-
-  List<? extends Reference> getReferences();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.java
deleted file mode 100644
index 21b676f..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityContainer.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.api.edm.v4;
-
-import java.util.List;
-
-public interface EntityContainer extends org.apache.olingo.odata4.client.api.edm.EntityContainer {
-
-  /**
-   * Gets the first action import with given name.
-   *
-   * @param name name.
-   * @return action import.
-   */
-  ActionImport getActionImport(String name);
-
-  /**
-   * Gets all action imports with given name.
-   *
-   * @param name name.
-   * @return action imports.
-   */
-  List<? extends ActionImport> getActionImports(String name);
-
-  List<? extends ActionImport> getActionImports();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java
deleted file mode 100644
index 703c0df..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntitySet.java
+++ /dev/null
@@ -1,30 +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.api.edm.v4;
-
-import java.util.List;
-
-public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.EntitySet, AnnotatedEdmItem {
-
-  boolean isIncludeInServiceDocument();
-
-  void setIncludeInServiceDocument(boolean includeInServiceDocument);
-
-  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java
deleted file mode 100644
index 3e39e41..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/EntityType.java
+++ /dev/null
@@ -1,23 +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.api.edm.v4;
-
-public interface EntityType extends org.apache.olingo.odata4.client.api.edm.EntityType, ComplexType {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java
deleted file mode 100644
index bb9a817..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Function.java
+++ /dev/null
@@ -1,26 +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.api.edm.v4;
-
-public interface Function extends Action {
-
-  boolean isComposable();
-
-  void setComposable(boolean composable);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java
deleted file mode 100644
index 118edcc..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/FunctionImport.java
+++ /dev/null
@@ -1,32 +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.api.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.CommonFunctionImport;
-
-public interface FunctionImport extends OperationImport, CommonFunctionImport {
-
-  String getFunction();
-
-  void setFunction(String function);
-
-  boolean isIncludeInServiceDocument();
-
-  void setIncludeInServiceDocument(boolean includeInServiceDocument);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
deleted file mode 100644
index 1c3c1ce..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Include.java
+++ /dev/null
@@ -1,30 +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.api.edm.v4;
-
-public interface Include {
-
-  String getAlias();
-
-  String getNamespace();
-
-  void setAlias(final String alias);
-
-  void setNamespace(final String namespace);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
deleted file mode 100644
index 88ed162..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/IncludeAnnotations.java
+++ /dev/null
@@ -1,34 +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.api.edm.v4;
-
-public interface IncludeAnnotations {
-
-  String getQualifier();
-
-  String getTargeyNamespace();
-
-  String getTermNamespace();
-
-  void setQualifier(String qualifier);
-
-  void setTargeyNamespace(String targeyNamespace);
-
-  void setTermNamespace(String termNamespace);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java
deleted file mode 100644
index 9f34dc1..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationProperty.java
+++ /dev/null
@@ -1,49 +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.api.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.OnDelete;
-import java.util.List;
-
-public interface NavigationProperty
-        extends org.apache.olingo.odata4.client.api.edm.CommonNavigationProperty, AnnotatedEdmItem {
-
-  String getType();
-
-  void setType(String type);
-
-  boolean isNullable();
-
-  void setNullable(boolean nullable);
-
-  String getPartner();
-
-  void setPartner(String partner);
-
-  boolean isContainsTarget();
-
-  void setContainsTarget(boolean containsTarget);
-
-  List<? extends ReferentialConstraint> getReferentialConstraints();
-
-  OnDelete getOnDelete();
-
-  void setOnDelete(OnDelete onDelete);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java
deleted file mode 100644
index 650cbd9..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/NavigationPropertyBinding.java
+++ /dev/null
@@ -1,31 +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.api.edm.v4;
-
-public interface NavigationPropertyBinding {
-
-  String getPath();
-
-  void setPath(String path);
-
-  String getTarget();
-
-  void setTarget(String target);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDeleteAction.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDeleteAction.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDeleteAction.java
deleted file mode 100644
index 6116df0..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OnDeleteAction.java
+++ /dev/null
@@ -1,28 +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.api.edm.v4;
-
-public enum OnDeleteAction {
-
-  Cascade,
-  None,
-  SetNull,
-  SetDefault;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java
deleted file mode 100644
index d7fa80d..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/OperationImport.java
+++ /dev/null
@@ -1,28 +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.api.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface OperationImport extends Named, AnnotatedEdmItem {
-
-  String getEntitySet();
-
-  void setEntitySet(String entitySet);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java
deleted file mode 100644
index 81a70c1..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Parameter.java
+++ /dev/null
@@ -1,26 +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.api.edm.v4;
-
-public interface Parameter extends org.apache.olingo.odata4.client.api.edm.CommonParameter {
-
-  String getSrid();
-
-  void setSrid(final String srid);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java
deleted file mode 100644
index a9ea6b6..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Property.java
+++ /dev/null
@@ -1,25 +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.api.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.CommonProperty;
-
-public interface Property extends CommonProperty, AnnotatedEdmItem {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
deleted file mode 100644
index ac6e520..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Reference.java
+++ /dev/null
@@ -1,35 +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.api.edm.v4;
-
-import java.net.URI;
-import java.util.List;
-
-public interface Reference {
-
-  URI getUri();
-
-  void setUri(URI uri);
-
-  List<? extends Include> getIncludes();
-
-  List<? extends IncludeAnnotations> getIncludeAnnotations();
-
-  List<? extends Annotation> getAnnotations();
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
deleted file mode 100644
index 4f0bd60..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReferentialConstraint.java
+++ /dev/null
@@ -1,31 +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.api.edm.v4;
-
-public interface ReferentialConstraint {
-
-  String getProperty();
-
-  void setProperty(String property);
-
-  String getReferencedProperty();
-
-  void setReferencedProperty(String referencedProperty);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.java
deleted file mode 100644
index 254f81e..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/ReturnType.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.api.edm.v4;
-
-import java.math.BigInteger;
-
-public interface ReturnType {
-
-  String getMaxLength();
-
-  BigInteger getPrecision();
-
-  BigInteger getScale();
-
-  String getSrid();
-
-  String getType();
-
-  boolean isNullable();
-
-  void setMaxLength(String maxLength);
-
-  void setNullable(boolean nullable);
-
-  void setPrecision(BigInteger precision);
-
-  void setScale(BigInteger scale);
-
-  void setSrid(String srid);
-
-  void setType(String type);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
deleted file mode 100644
index e443d6b..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Singleton.java
+++ /dev/null
@@ -1,32 +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.api.edm.v4;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface Singleton extends Named {
-
-  String getType();
-
-  void setType(String type);
-
-  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
deleted file mode 100644
index 4df1d53..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/Term.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.api.edm.v4;
-
-import java.math.BigInteger;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface Term extends Named {
-
-  List<CSDLElement> getAppliesTo();
-
-  String getBaseTerm();
-
-  String getDefaultValue();
-
-  String getMaxLength();
-
-  BigInteger getPrecision();
-
-  BigInteger getScale();
-
-  String getSrid();
-
-  String getType();
-
-  boolean isNullable();
-
-  void setBaseTerm(String baseTerm);
-
-  void setDefaultValue(String defaultValue);
-
-  void setMaxLength(String maxLength);
-
-  void setNullable(boolean nullable);
-
-  void setPrecision(BigInteger precision);
-
-  void setScale(BigInteger scale);
-
-  void setSrid(String srid);
-
-  void setType(String type);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
deleted file mode 100644
index 063d8ee..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/TypeDefinition.java
+++ /dev/null
@@ -1,52 +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.api.edm.v4;
-
-import java.math.BigInteger;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Named;
-
-public interface TypeDefinition extends Named {
-
-  List<? extends Annotation> getAnnotations();
-
-  String getMaxLength();
-
-  BigInteger getPrecision();
-
-  BigInteger getScale();
-
-  String getSrid();
-
-  String getUnderlyingType();
-
-  boolean isUnicode();
-
-  void setMaxLength(String maxLength);
-
-  void setPrecision(BigInteger precision);
-
-  void setScale(BigInteger scale);
-
-  void setSrid(String srid);
-
-  void setUnderlyingType(String underlyingType);
-
-  void setUnicode(boolean unicode);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
deleted file mode 100644
index bbb0a55..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ConstExprConstruct.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.api.edm.v4.annotation;
-
-public interface ConstExprConstruct extends ExprConstruct {
-
-  public enum Type {
-
-    Binary,
-    Bool,
-    Date,
-    DateTimeOffset,
-    Decimal,
-    Duration,
-    EnumMember,
-    Float,
-    Guid,
-    Int,
-    String,
-    TimeOfDay;
-
-    public static Type fromString(final String value) {
-      Type result = null;
-      try {
-        result = valueOf(value);
-      } catch (IllegalArgumentException e) {
-        // ignore
-      }
-      return result;
-    }
-  }
-
-  Type getType();
-
-  void setType(Type type);
-
-  String getValue();
-
-  void setValue(String value);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
deleted file mode 100644
index cc731dc..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/DynExprConstruct.java
+++ /dev/null
@@ -1,23 +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.api.edm.v4.annotation;
-
-public interface DynExprConstruct extends ExprConstruct {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java
deleted file mode 100644
index 3f13616..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/v4/annotation/ExprConstruct.java
+++ /dev/null
@@ -1,23 +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.api.edm.v4.annotation;
-
-public interface ExprConstruct {
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java
new file mode 100644
index 0000000..76bf4d6
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/AbstractAnnotations.java
@@ -0,0 +1,30 @@
+/*
+ * 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.api.edm.xml;
+
+public abstract interface AbstractAnnotations {
+
+  String getTarget();
+
+  void setTarget(String target);
+
+  String getQualifier();
+
+  void setQualifier(String qualifier);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonFunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonFunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonFunctionImport.java
new file mode 100644
index 0000000..dcbd325
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonFunctionImport.java
@@ -0,0 +1,22 @@
+/*
+ * 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.api.edm.xml;
+
+public interface CommonFunctionImport extends Named {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonNavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonNavigationProperty.java
new file mode 100644
index 0000000..9e6dd99
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonNavigationProperty.java
@@ -0,0 +1,22 @@
+/*
+ * 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.api.edm.xml;
+
+public interface CommonNavigationProperty extends Named {
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
new file mode 100644
index 0000000..1366289
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.xml;
+
+import java.math.BigInteger;
+
+public interface CommonParameter extends Named {
+
+  String getType();
+
+  void setType(String type);
+
+  boolean isNullable();
+
+  void setNullable(boolean nullable);
+
+  String getMaxLength();
+
+  void setMaxLength(String maxLength);
+
+  BigInteger getPrecision();
+
+  void setPrecision(BigInteger precision);
+
+  BigInteger getScale();
+
+  void setScale(BigInteger scale);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
new file mode 100644
index 0000000..1621cd2
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
@@ -0,0 +1,74 @@
+/*
+ * 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.api.edm.xml;
+
+import java.math.BigInteger;
+import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
+import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
+
+public interface CommonProperty extends Named {
+
+  String getType();
+
+  void setType(String type);
+
+  boolean isNullable();
+
+  void setNullable(boolean nullable);
+
+  String getDefaultValue();
+
+  void setDefaultValue(String defaultValue);
+
+  String getMaxLength();
+
+  void setMaxLength(String maxLength);
+
+  boolean isFixedLength();
+
+  void setFixedLength(boolean fixedLength);
+
+  BigInteger getPrecision();
+
+  void setPrecision(BigInteger precision);
+
+  BigInteger getScale();
+
+  void setScale(BigInteger scale);
+
+  boolean isUnicode();
+
+  void setUnicode(boolean unicode);
+
+  String getCollation();
+
+  void setCollation(String collation);
+
+  String getSrid();
+
+  void setSrid(String srid);
+
+  ConcurrencyMode getConcurrencyMode();
+
+  void setConcurrencyMode(ConcurrencyMode concurrencyMode);
+
+  StoreGeneratedPattern getStoreGeneratedPattern();
+
+  void setStoreGeneratedPattern(StoreGeneratedPattern storeGeneratedPattern);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/ComplexType.java
new file mode 100644
index 0000000..0c67599
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/ComplexType.java
@@ -0,0 +1,32 @@
+/*
+ * 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.api.edm.xml;
+
+import java.util.List;
+
+public interface ComplexType extends Named {
+
+  CommonProperty getProperty(String name);
+
+  List<? extends CommonProperty> getProperties();
+
+  CommonNavigationProperty getNavigationProperty(String name);
+
+  List<? extends CommonNavigationProperty> getNavigationProperties();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
new file mode 100644
index 0000000..b4b4c95
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/DataServices.java
@@ -0,0 +1,34 @@
+/*
+ * 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.api.edm.xml;
+
+import java.util.List;
+
+public interface DataServices {
+
+  String getDataServiceVersion();
+
+  void setDataServiceVersion(String version);
+
+  String getMaxDataServiceVersion();
+
+  void setMaxDataServiceVersion(String version);
+
+  List<? extends Schema> getSchemas();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
new file mode 100644
index 0000000..e90bb85
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Edmx.java
@@ -0,0 +1,30 @@
+/*
+ * 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.api.edm.xml;
+
+public interface Edmx {
+
+  String getVersion();
+
+  void setVersion(String version);
+
+  DataServices getDataServices();
+
+  void setDataServices(DataServices dataServices);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
new file mode 100644
index 0000000..73714a5
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityContainer.java
@@ -0,0 +1,58 @@
+/*
+ * 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.api.edm.xml;
+
+import java.util.List;
+
+public interface EntityContainer extends Named {
+
+  String getExtends();
+
+  void setExtends(String _extends);
+
+  boolean isLazyLoadingEnabled();
+
+  void setLazyLoadingEnabled(boolean lazyLoadingEnabled);
+
+  boolean isDefaultEntityContainer();
+
+  void setDefaultEntityContainer(boolean defaultEntityContainer);
+
+  EntitySet getEntitySet(String name);
+
+  List<? extends EntitySet> getEntitySets();
+
+  /**
+   * Gets the first function import with given name.
+   *
+   * @param name name.
+   * @return function import.
+   */
+  CommonFunctionImport getFunctionImport(String name);
+
+  /**
+   * Gets all function imports with given name.
+   *
+   * @param name name.
+   * @return function imports.
+   */
+  List<? extends CommonFunctionImport> getFunctionImports(String name);
+
+  List<? extends CommonFunctionImport> getFunctionImports();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
new file mode 100644
index 0000000..1a6447e
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityKey.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml;
+
+import java.util.List;
+
+public interface EntityKey {
+
+  List<? extends PropertyRef> getPropertyRefs();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
new file mode 100644
index 0000000..558b634
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntitySet.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml;
+
+public interface EntitySet extends Named {
+
+  String getEntityType();
+
+  void setEntityType(String entityType);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
new file mode 100644
index 0000000..d3ef1a7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EntityType.java
@@ -0,0 +1,42 @@
+/*
+ * 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.api.edm.xml;
+
+public interface EntityType extends ComplexType {
+
+  boolean isAbstractEntityType();
+
+  void setAbstractEntityType(boolean abstractEntityType);
+
+  String getBaseType();
+
+  void setBaseType(String baseType);
+
+  boolean isOpenType();
+
+  void setOpenType(boolean openType);
+
+  EntityKey getKey();
+
+  void setKey(EntityKey key);
+
+  boolean isHasStream();
+
+  void setHasStream(boolean hasStream);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
new file mode 100644
index 0000000..15f81c7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/EnumType.java
@@ -0,0 +1,38 @@
+/*
+ * 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.api.edm.xml;
+
+import java.util.List;
+
+public interface EnumType extends Named {
+
+  String getUnderlyingType();
+
+  void setUnderlyingType(String underlyingType);
+
+  boolean isFlags();
+
+  void setFlags(boolean flags);
+
+  List<? extends Member> getMembers();
+
+  Member getMember(String name);
+
+  Member getMember(Integer value);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
new file mode 100644
index 0000000..cf1e258
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml;
+
+public interface Member {
+
+  String getName();
+
+  Integer getValue();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
new file mode 100644
index 0000000..89b4225
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Named.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml;
+
+public interface Named {
+
+  String getName();
+
+  void setName(String name);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
new file mode 100644
index 0000000..69ca408
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/OnDelete.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api.edm.xml;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.OnDeleteAction;
+
+public interface OnDelete {
+
+  OnDeleteAction getAction();
+
+  void setAction(OnDeleteAction action);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
new file mode 100644
index 0000000..e8c800f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/PropertyRef.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml;
+
+public interface PropertyRef extends Named {
+
+  String getAlias();
+
+  void setAlias(String alias);
+}


[21/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityTypeImpl.java
new file mode 100644
index 0000000..8c17a1e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityTypeImpl.java
@@ -0,0 +1,79 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.apache.olingo.odata4.client.api.edm.xml.PropertyRef;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityType;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.api.edm.EdmKeyPropertyRef;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmEntityType;
+import org.apache.olingo.odata4.commons.core.edm.EdmStructuredTypeHelper;
+
+public class EdmEntityTypeImpl extends AbstractEdmEntityType {
+
+  private final EdmStructuredTypeHelper helper;
+
+  public static EdmEntityTypeImpl getInstance(final Edm edm, final FullQualifiedName fqn, final EntityType entityType) {
+    final FullQualifiedName baseTypeName = entityType.getBaseType() == null
+            ? null : new EdmTypeInfo(entityType.getBaseType()).getFullQualifiedName();
+    final EdmEntityTypeImpl instance = new EdmEntityTypeImpl(edm, fqn, baseTypeName, entityType);
+    instance.baseType = instance.buildBaseType(baseTypeName);
+
+    if (instance.baseType == null) {
+      instance.entityBaseType = null;
+
+      final List<EdmKeyPropertyRef> edmKey = new ArrayList<EdmKeyPropertyRef>(
+              entityType.getKey().getPropertyRefs().size());
+      for (PropertyRef ref : entityType.getKey().getPropertyRefs()) {
+        edmKey.add(new EdmKeyPropertyRefImpl(instance, ref));
+      }
+      instance.setEdmKeyPropertyRef(edmKey);
+    } else {
+      instance.entityBaseType = (EdmEntityType) instance.baseType;
+    }
+
+    return instance;
+  }
+
+  private EdmEntityTypeImpl(final Edm edm, final FullQualifiedName fqn, final FullQualifiedName baseTypeName,
+          final EntityType entityType) {
+
+    super(edm, fqn, baseTypeName, entityType.isHasStream());
+    this.helper = new EdmStructuredTypeHelperImpl(edm, entityType);
+  }
+
+  @Override
+  protected Map<String, EdmProperty> getProperties() {
+    return helper.getProperties();
+  }
+
+  @Override
+  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
+    return helper.getNavigationProperties();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEnumTypeImpl.java
new file mode 100644
index 0000000..6d090ab
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEnumTypeImpl.java
@@ -0,0 +1,83 @@
+/*
+ * 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.olingo.odata4.commons.core.edm.EdmMemberImpl;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.Member;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmEnumType;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+
+public class EdmEnumTypeImpl extends AbstractEdmEnumType implements EdmEnumType {
+
+  private final EdmPrimitiveType underlyingType;
+
+  private final List<String> memberNames;
+
+  private final Map<String, EdmMember> members;
+
+  public EdmEnumTypeImpl(final Edm edm, final FullQualifiedName fqn, final EnumType xmlEnumType) {
+    super(edm, fqn, xmlEnumType.isFlags());
+
+    if (xmlEnumType.getUnderlyingType() == null) {
+      this.underlyingType = EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance();
+    } else {
+      this.underlyingType = EdmPrimitiveTypeKind.fromString(
+              xmlEnumType.getUnderlyingType()).getEdmPrimitiveTypeInstance();
+      // TODO: Should we validate that the underlying type is of byte, sbyte, in16, int32 or int64?
+    }
+
+    final List<? extends Member> xmlMembers = xmlEnumType.getMembers();
+    final List<String> _memberNames = new ArrayList<String>();
+    final Map<String, EdmMember> _members = new LinkedHashMap<String, EdmMember>(xmlMembers.size());
+    for (Member xmlMember : xmlMembers) {
+      _memberNames.add(xmlMember.getName());
+      _members.put(xmlMember.getName(), new EdmMemberImpl(edm, xmlMember.getName(), xmlMember.getValue()));
+    }
+    this.memberNames = Collections.unmodifiableList(_memberNames);
+    this.members = Collections.unmodifiableMap(_members);
+  }
+
+  @Override
+  public EdmPrimitiveType getUnderlyingType() {
+    return underlyingType;
+  }
+
+  @Override
+  public List<String> getMemberNames() {
+    return memberNames;
+  }
+
+  @Override
+  protected Collection<? extends EdmMember> getMembers() {
+    return members.values();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImpl.java
new file mode 100644
index 0000000..aa83cb3
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.v4.Function;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction {
+
+  private final Function function;
+
+  public static EdmFunctionImpl getInstance(final Edm edm, final FullQualifiedName name, final Function function) {
+    return EdmOperationImpl.getInstance(new EdmFunctionImpl(edm, name, function));
+  }
+
+  private EdmFunctionImpl(final Edm edm, final FullQualifiedName name, final Function function) {
+    super(edm, name, function, EdmTypeKind.FUNCTION);
+    this.function = function;
+  }
+
+  @Override
+  public boolean isComposable() {
+    return function.isComposable();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
new file mode 100644
index 0000000..8c65d59
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmFunctionImportImpl.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImport;
+
+public class EdmFunctionImportImpl extends EdmOperationImportImpl implements EdmFunctionImport {
+
+  private final FunctionImport functionImport;
+
+  public EdmFunctionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final FunctionImport functionImport) {
+
+    super(edm, container, name, functionImport);
+    this.functionImport = functionImport;
+  }
+
+  @Override
+  public EdmFunction getFunction(final List<String> parameterNames) {
+    return edm.getFunction(
+            new EdmTypeInfo(functionImport.getFunction(), container.getNamespace()).getFullQualifiedName(),
+            null, null, parameterNames);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmKeyPropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmKeyPropertyRefImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmKeyPropertyRefImpl.java
new file mode 100644
index 0000000..0264c28
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmKeyPropertyRefImpl.java
@@ -0,0 +1,49 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.PropertyRef;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmKeyPropertyRef;
+
+public class EdmKeyPropertyRefImpl extends AbstractEdmKeyPropertyRef {
+
+  private final PropertyRef propertyRef;
+
+  public EdmKeyPropertyRefImpl(final EdmEntityType edmEntityType, final PropertyRef propertyRef) {
+    super(edmEntityType);
+    this.propertyRef = propertyRef;
+  }
+
+  @Override
+  public String getKeyPropertyName() {
+    return propertyRef.getName();
+  }
+
+  @Override
+  public String getAlias() {
+    return propertyRef.getAlias();
+  }
+
+  @Override
+  public String getPath() {
+    throw new UnsupportedOperationException("Not supported in client code.");
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmNavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmNavigationPropertyImpl.java
new file mode 100644
index 0000000..9d79914
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmNavigationPropertyImpl.java
@@ -0,0 +1,74 @@
+/*
+ * 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 java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ReferentialConstraint;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmNavigationProperty;
+
+public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
+
+  private final NavigationProperty navigationProperty;
+
+  private final EdmTypeInfo edmTypeInfo;
+
+  public EdmNavigationPropertyImpl(final Edm edm, final NavigationProperty navigationProperty) {
+    super(edm, navigationProperty.getName());
+    this.navigationProperty = navigationProperty;
+    this.edmTypeInfo = new EdmTypeInfo(navigationProperty.getType());
+  }
+
+  @Override
+  protected FullQualifiedName getTypeFQN() {
+    return edmTypeInfo.getFullQualifiedName();
+  }
+
+  @Override
+  protected String internatGetPartner() {
+    return navigationProperty.getPartner();
+  }
+
+  @Override
+  public boolean isCollection() {
+    return edmTypeInfo.isCollection();
+  }
+
+  @Override
+  public Boolean isNullable() {
+    return navigationProperty.isNullable();
+  }
+
+  @Override
+  public String getReferencingPropertyName(final String referencedPropertyName) {
+    final List<? extends ReferentialConstraint> referentialConstraints = navigationProperty.getReferentialConstraints();
+    if (referentialConstraints != null) {
+      for (ReferentialConstraint constraint : referentialConstraints) {
+        if (constraint.getReferencedProperty().equals(referencedPropertyName)) {
+          return constraint.getProperty();
+        }
+      }
+    }
+    return null;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.java
new file mode 100644
index 0000000..932fe57
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImpl.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.client.core.edm;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Action;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmParameter;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmOperation;
+
+public abstract class EdmOperationImpl extends AbstractEdmOperation {
+
+  protected final Action operation;
+
+  protected static <T extends EdmOperationImpl> T getInstance(final T instance) {
+
+    final List<? extends CommonParameter> parameters = instance.operation.getParameters();
+    if (parameters != null) {
+      final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(parameters.size());
+      for (CommonParameter parameter : parameters) {
+        _parameters.add(EdmParameterImpl.getInstance(instance.edm, parameter));
+      }
+      instance.setParameters(_parameters);
+    }
+
+    instance.setEntitySetPath(instance.operation.getEntitySetPath());
+
+    instance.setIsBound(instance.operation.isBound());
+
+    if (instance.operation.getReturnType() != null) {
+      instance.setReturnType(EdmReturnTypeImpl.getInstance(instance.edm, instance.operation.getReturnType()));
+    }
+
+    return instance;
+  }
+
+  protected EdmOperationImpl(final Edm edm, final FullQualifiedName name, final Action operation,
+          final EdmTypeKind kind) {
+
+    super(edm, name, kind);
+    this.operation = operation;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.java
new file mode 100644
index 0000000..450ebc2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmOperationImportImpl.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;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.OperationImport;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.Target;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmOperationImport;
+
+public abstract class EdmOperationImportImpl extends AbstractEdmOperationImport {
+
+  protected EdmOperationImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final OperationImport operationImport) {
+
+    super(edm, container, name, new Target.Builder(operationImport.getEntitySet(), container).build());
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmParameterImpl.java
new file mode 100644
index 0000000..9b3beb4
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmParameterImpl.java
@@ -0,0 +1,74 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.CommonParameter;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmMapping;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmParameter;
+
+public class EdmParameterImpl extends AbstractEdmParameter {
+
+  private final CommonParameter parameter;
+
+  private final EdmTypeInfo parameterInfo;
+
+  public static EdmParameterImpl getInstance(final Edm edm, final CommonParameter parameter) {
+    final EdmTypeInfo paramTypeInfo = new EdmTypeInfo(parameter.getType());
+    return new EdmParameterImpl(edm, parameter, paramTypeInfo);
+  }
+
+  private EdmParameterImpl(final Edm edm, final CommonParameter parameter, final EdmTypeInfo parameterInfo) {
+    super(edm, parameter.getName(), parameterInfo.getFullQualifiedName());
+    this.parameter = parameter;
+    this.parameterInfo = parameterInfo;
+  }
+
+  @Override
+  public boolean isCollection() {
+    return parameterInfo.isCollection();
+  }
+
+  @Override
+  public EdmMapping getMapping() {
+    throw new UnsupportedOperationException("Not supported in client code.");
+  }
+
+  @Override
+  public Boolean isNullable() {
+    return parameter.isNullable();
+  }
+
+  @Override
+  public Integer getMaxLength() {
+    return parameter.getMaxLength();
+  }
+
+  @Override
+  public Integer getPrecision() {
+    return parameter.getPrecision();
+  }
+
+  @Override
+  public Integer getScale() {
+    return parameter.getScale();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmPropertyImpl.java
new file mode 100644
index 0000000..20ffb2c
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmPropertyImpl.java
@@ -0,0 +1,91 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.CommonProperty;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmMapping;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmProperty;
+
+public class EdmPropertyImpl extends AbstractEdmProperty implements EdmProperty {
+
+  private final CommonProperty property;
+
+  private final EdmTypeInfo edmTypeInfo;
+
+  public EdmPropertyImpl(final Edm edm, final CommonProperty property) {
+    super(edm, property.getName());
+    this.property = property;
+    this.edmTypeInfo = new EdmTypeInfo(property.getType());
+  }
+
+  @Override
+  protected FullQualifiedName getTypeFQN() {
+    return edmTypeInfo.getFullQualifiedName();
+  }
+
+  @Override
+  public boolean isCollection() {
+    return edmTypeInfo.isCollection();
+  }
+
+  @Override
+  public EdmMapping getMapping() {
+    throw new UnsupportedOperationException("Not supported in client code.");
+  }
+
+  @Override
+  public String getMimeType() {
+    throw new UnsupportedOperationException("Not supported in client code.");
+  }
+
+  @Override
+  public Boolean isNullable() {
+    return property.isNullable();
+  }
+
+  @Override
+  public Integer getMaxLength() {
+    return property.getMaxLength();
+  }
+
+  @Override
+  public Integer getPrecision() {
+    return property.getPrecision();
+  }
+
+  @Override
+  public Integer getScale() {
+    return property.getScale();
+  }
+
+  @Override
+  public Boolean isUnicode() {
+    return property.isUnicode();
+  }
+
+  @Override
+  public String getDefaultValue() {
+    return property.getDefaultValue();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmReturnTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmReturnTypeImpl.java
new file mode 100644
index 0000000..c17b996
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmReturnTypeImpl.java
@@ -0,0 +1,68 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.v4.ReturnType;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmReturnType;
+
+public class EdmReturnTypeImpl extends AbstractEdmReturnType {
+
+  private final ReturnType returnType;
+
+  private final EdmTypeInfo returnTypeInfo;
+
+  public static EdmReturnTypeImpl getInstance(final Edm edm, final ReturnType returnType) {
+    final EdmTypeInfo returnTypeInfo = new EdmTypeInfo(returnType.getType());
+    return new EdmReturnTypeImpl(edm, returnType, returnTypeInfo);
+  }
+
+  private EdmReturnTypeImpl(final Edm edm, final ReturnType returnType, final EdmTypeInfo returnTypeInfo) {
+    super(edm, returnTypeInfo.getFullQualifiedName());
+    this.returnType = returnType;
+    this.returnTypeInfo = returnTypeInfo;
+  }
+
+  @Override
+  public Boolean isNullable() {
+    return returnType.isNullable();
+  }
+
+  @Override
+  public Integer getMaxLength() {
+    return returnType.getMaxLength();
+  }
+
+  @Override
+  public Integer getPrecision() {
+    return returnType.getPrecision();
+  }
+
+  @Override
+  public Integer getScale() {
+    return returnType.getScale();
+  }
+
+  @Override
+  public boolean isCollection() {
+    return returnTypeInfo.isCollection();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmSingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmSingletonImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmSingletonImpl.java
new file mode 100644
index 0000000..6d14154
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmSingletonImpl.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;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingleton;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+
+public class EdmSingletonImpl extends EdmBindingTargetImpl implements EdmSingleton {
+
+  public EdmSingletonImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final FullQualifiedName type, final Singleton singleton) {
+
+    super(edm, container, name, type, singleton);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmStructuredTypeHelperImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmStructuredTypeHelperImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmStructuredTypeHelperImpl.java
new file mode 100644
index 0000000..c090f50
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmStructuredTypeHelperImpl.java
@@ -0,0 +1,71 @@
+/*
+ * 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 java.util.LinkedHashMap;
+import java.util.Map;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonNavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+import org.apache.olingo.odata4.commons.core.edm.EdmStructuredTypeHelper;
+
+public class EdmStructuredTypeHelperImpl implements EdmStructuredTypeHelper {
+
+  private final Edm edm;
+
+  private final ComplexType complexType;
+
+  private Map<String, EdmProperty> properties;
+
+  private Map<String, EdmNavigationProperty> navigationProperties;
+
+  public EdmStructuredTypeHelperImpl(final Edm edm, final ComplexType complexType) {
+    this.edm = edm;
+    this.complexType = complexType;
+  }
+
+  @Override
+  public Map<String, EdmProperty> getProperties() {
+    if (properties == null) {
+      properties = new LinkedHashMap<String, EdmProperty>();
+      for (CommonProperty property : complexType.getProperties()) {
+        properties.put(property.getName(), new EdmPropertyImpl(edm, property));
+      }
+    }
+    return properties;
+  }
+
+  @Override
+  public Map<String, EdmNavigationProperty> getNavigationProperties() {
+    if (navigationProperties == null) {
+      navigationProperties = new LinkedHashMap<String, EdmNavigationProperty>();
+      for (CommonNavigationProperty navigationProperty : complexType.getNavigationProperties()) {
+        if (navigationProperty instanceof NavigationProperty) {
+          navigationProperties.put(navigationProperty.getName(),
+                  new EdmNavigationPropertyImpl(edm, (NavigationProperty) navigationProperty));
+        }
+      }
+    }
+    return navigationProperties;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmTypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmTypeDefinitionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmTypeDefinitionImpl.java
new file mode 100644
index 0000000..43a5455
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmTypeDefinitionImpl.java
@@ -0,0 +1,74 @@
+/* 
+ * 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.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.EdmTypeDefinition;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmTypeDefinition;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+
+public class EdmTypeDefinitionImpl extends AbstractEdmTypeDefinition implements EdmTypeDefinition {
+
+  private TypeDefinition typeDefinition;
+
+  private EdmPrimitiveType edmPrimitiveTypeInstance;
+
+  public EdmTypeDefinitionImpl(final Edm edm, final FullQualifiedName typeDefinitionName,
+          final TypeDefinition typeDefinition) {
+
+    super(edm, typeDefinitionName);
+    this.typeDefinition = typeDefinition;
+    // TODO: Should we check for edmNamespace in the underlying type name?
+    try {
+      edmPrimitiveTypeInstance = EdmPrimitiveTypeKind.fromString(
+              typeDefinition.getUnderlyingType()).getEdmPrimitiveTypeInstance();
+    } catch (IllegalArgumentException e) {
+      throw new EdmException("Invalid underlying type: " + typeDefinition.getUnderlyingType(), e);
+    }
+  }
+
+  @Override
+  public EdmPrimitiveType getUnderlyingType() {
+    return edmPrimitiveTypeInstance;
+  }
+
+  @Override
+  public Integer getMaxLength() {
+    return typeDefinition.getMaxLength();
+  }
+
+  @Override
+  public Integer getPrecision() {
+    return typeDefinition.getPrecision();
+  }
+
+  @Override
+  public Integer getScale() {
+    return typeDefinition.getScale();
+  }
+
+  @Override
+  public Boolean isUnicode() {
+    return typeDefinition.isUnicode();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
deleted file mode 100644
index f7e1993..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmMetadataImpl.java
+++ /dev/null
@@ -1,51 +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.edm.v3;
-
-import java.io.InputStream;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmMetadata;
-import org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl;
-
-public class EdmMetadataImpl extends AbstractEdmMetadata {
-
-  private static final long serialVersionUID = -7765327879691528010L;
-
-  public EdmMetadataImpl(final ODataClient client, final InputStream inputStream) {
-    super(client, inputStream);
-  }
-
-  @Override
-  public SchemaImpl getSchema(final int index) {
-    return (SchemaImpl) super.getSchema(index);
-  }
-
-  @Override
-  public SchemaImpl getSchema(final String key) {
-    return (SchemaImpl) super.getSchema(key);
-  }
-
-  @Override
-  @SuppressWarnings("unchecked")
-  public List<SchemaImpl> getSchemas() {
-    return (List<SchemaImpl>) super.getSchemas();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.java
new file mode 100644
index 0000000..1b84dcb
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v3/EdmServiceMetadataImpl.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.client.core.edm.v3;
+
+import java.util.Collections;
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.AbstractEdmServiceMetadataImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+
+public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
+
+  private static final ODataServiceVersion SERVICE_VERSION = ODataServiceVersion.V30;
+
+  public EdmServiceMetadataImpl(final XMLMetadataImpl xmlMetadata) {
+    super(xmlMetadata);
+  }
+
+  @Override
+  public String getDataServiceVersion() {
+    return SERVICE_VERSION.toString();
+  }
+
+  @Override
+  public List<EdmSingletonInfo> getSingletonInfos() {
+    return Collections.<EdmSingletonInfo>emptyList();
+  }
+
+  @Override
+  public List<EdmActionImportInfo> getActionImportInfos() {
+    return Collections.<EdmActionImportInfo>emptyList();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/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
index 551c4ef..18216c6 100644
--- 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
@@ -18,7 +18,8 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v3;
 
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmType;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmType;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.EnumTypeImpl;
@@ -29,7 +30,7 @@ public class EdmTypeImpl extends AbstractEdmType {
     super(typeExpression);
   }
 
-  public EdmTypeImpl(final EdmMetadataImpl metadata, final String typeExpression) {
+  public EdmTypeImpl(final XMLMetadata metadata, final String typeExpression) {
     super(metadata, typeExpression);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
deleted file mode 100644
index e572985..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-import java.io.InputStream;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmMetadata;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.EdmxImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.ReferenceImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
-
-public class EdmMetadataImpl extends AbstractEdmMetadata {
-
-  private static final long serialVersionUID = -7765327879691528010L;
-
-  public EdmMetadataImpl(final ODataClient client, final InputStream inputStream) {
-    super(client, inputStream);
-  }
-
-  @Override
-  public SchemaImpl getSchema(final int index) {
-    return (SchemaImpl) super.getSchema(index);
-  }
-
-  @Override
-  public SchemaImpl getSchema(final String key) {
-    return (SchemaImpl) super.getSchema(key);
-  }
-
-  @Override
-  @SuppressWarnings("unchecked")
-  public List<SchemaImpl> getSchemas() {
-    return (List<SchemaImpl>) super.getSchemas();
-  }
-
-  public List<ReferenceImpl> getReferences() {
-    return ((EdmxImpl) this.edmx).getReferences();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
new file mode 100644
index 0000000..2f797ee
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmServiceMetadataImpl.java
@@ -0,0 +1,83 @@
+/*
+ * 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 java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
+import org.apache.olingo.odata4.client.core.edm.AbstractEdmServiceMetadataImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImportInfo;
+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.core.edm.EdmActionImportInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmSingletonInfoImpl;
+
+public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
+
+  private static final ODataServiceVersion SERVICE_VERSION = ODataServiceVersion.V40;
+
+  private List<EdmSingletonInfo> singletonInfos;
+
+  private List<EdmActionImportInfo> actionImportInfos;
+
+  public EdmServiceMetadataImpl(final XMLMetadataImpl xmlMetadata) {
+    super(xmlMetadata);
+  }
+
+  @Override
+  public String getDataServiceVersion() {
+    return SERVICE_VERSION.toString();
+  }
+
+  @Override
+  public List<EdmSingletonInfo> getSingletonInfos() {
+    synchronized (this) {
+      if (singletonInfos == null) {
+        singletonInfos = new ArrayList<EdmSingletonInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          final EntityContainer entityContainer = (EntityContainer) schema.getDefaultEntityContainer();
+          for (Singleton singleton : entityContainer.getSingletons()) {
+            singletonInfos.add(new EdmSingletonInfoImpl(entityContainer.getName(), singleton.getName()));
+          }
+        }
+      }
+      return singletonInfos;
+    }
+  }
+
+  @Override
+  public List<EdmActionImportInfo> getActionImportInfos() {
+    synchronized (this) {
+      if (actionImportInfos == null) {
+        actionImportInfos = new ArrayList<EdmActionImportInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          final EntityContainer entityContainer = (EntityContainer) schema.getDefaultEntityContainer();
+          for (ActionImport actionImport : entityContainer.getActionImports()) {
+            actionImportInfos.add(new EdmActionImportInfoImpl(entityContainer.getName(), actionImport.getName()));
+          }
+        }
+      }
+      return actionImportInfos;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/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
index e71efef..c693f9c 100644
--- 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
@@ -18,7 +18,8 @@
  */
 package org.apache.olingo.odata4.client.core.edm.v4;
 
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmType;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmType;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl;
@@ -29,7 +30,7 @@ public class EdmTypeImpl extends AbstractEdmType {
     super(typeExpression);
   }
 
-  public EdmTypeImpl(final EdmMetadataImpl metadata, final String typeExpression) {
+  public EdmTypeImpl(final XMLMetadata metadata, final String typeExpression) {
     super(metadata, typeExpression);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AbstractElOrAttrConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AbstractElOrAttrConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AbstractElOrAttrConstruct.java
deleted file mode 100644
index 8f3365f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AbstractElOrAttrConstruct.java
+++ /dev/null
@@ -1,37 +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.edm.v4.annotation;
-
-/**
- * Groups dynamic expressions that may be provided using element notation or attribute notation.
- */
-abstract class AbstractElOrAttrConstruct extends DynExprConstructImpl {
-
-  private static final long serialVersionUID = 5503275111425750339L;
-
-  private String value;
-
-  public String getValue() {
-    return value;
-  }
-
-  public void setValue(final String value) {
-    this.value = value;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
deleted file mode 100644
index b32dcae..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotatedDynExprConstruct.java
+++ /dev/null
@@ -1,40 +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.edm.v4.annotation;
-
-import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-abstract class AnnotatedDynExprConstruct extends DynExprConstructImpl implements AnnotatedEdmItem {
-
-  private static final long serialVersionUID = -8117155475397749038L;
-
-  private AnnotationImpl annotation;
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotationPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotationPath.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotationPath.java
deleted file mode 100644
index f04778c..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/AnnotationPath.java
+++ /dev/null
@@ -1,25 +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.edm.v4.annotation;
-
-public class AnnotationPath extends AbstractElOrAttrConstruct {
-
-  private static final long serialVersionUID = 6198019768659098819L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
deleted file mode 100644
index 8d49884..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Apply.java
+++ /dev/null
@@ -1,53 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
-
-@JsonDeserialize(using = ApplyDeserializer.class)
-public class Apply extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = 6198019768659098819L;
-
-  public static final String CANONICAL_FUNCTION_CONCAT = "odata.concat";
-
-  public static final String CANONICAL_FUNCTION_FILLURITEMPLATE = "odata.fillUriTemplate";
-
-  public static final String CANONICAL_FUNCTION_URIENCODE = "odata.uriEncode";
-
-  private String function;
-
-  private final List<ExprConstruct> parameters = new ArrayList<ExprConstruct>();
-
-  public String getFunction() {
-    return function;
-  }
-
-  public void setFunction(final String function) {
-    this.function = function;
-  }
-
-  public List<ExprConstruct> getParameters() {
-    return parameters;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
deleted file mode 100644
index 6468685..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ApplyDeserializer.java
+++ /dev/null
@@ -1,55 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class ApplyDeserializer extends AbstractEdmDeserializer<Apply> {
-
-  @Override
-  protected Apply doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final Apply apply = new Apply();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Function".equals(jp.getCurrentName())) {
-          apply.setFunction(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          apply.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        } else if (isAnnotationConstExprConstruct(jp)) {
-          apply.getParameters().add(parseAnnotationConstExprConstruct(jp));
-        } else {
-          apply.getParameters().add(jp.readValueAs(DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return apply;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.java
deleted file mode 100644
index 970d33f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Cast.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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
-
-@JsonDeserialize(using = CastDeserializer.class)
-public class Cast extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = -7836626668653004926L;
-
-  private String type;
-
-  private String maxLength;
-
-  private BigInteger precision;
-
-  private BigInteger scale;
-
-  private String srid;
-
-  private DynExprConstruct value;
-
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-
-  public String getSrid() {
-    return srid;
-  }
-
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-  public DynExprConstruct getValue() {
-    return value;
-  }
-
-  public void setValue(final DynExprConstruct value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
deleted file mode 100644
index a404944..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CastDeserializer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4.annotation;
-
-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 java.math.BigInteger;
-import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class CastDeserializer extends AbstractEdmDeserializer<Cast> {
-
-  @Override
-  protected Cast doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final Cast cast = new Cast();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Type".equals(jp.getCurrentName())) {
-          cast.setType(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          cast.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        } else if ("MaxLength".equals(jp.getCurrentName())) {
-          cast.setMaxLength(jp.nextTextValue());
-        } else if ("Precision".equals(jp.getCurrentName())) {
-          cast.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("Scale".equals(jp.getCurrentName())) {
-          cast.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("SRID".equals(jp.getCurrentName())) {
-          cast.setSrid(jp.nextTextValue());
-        } else {
-          cast.setValue(jp.readValueAs(DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return cast;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
deleted file mode 100644
index 62925d1..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Collection.java
+++ /dev/null
@@ -1,37 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
-
-@JsonDeserialize(using = CollectionDeserializer.class)
-public class Collection extends DynExprConstructImpl {
-
-  private static final long serialVersionUID = -4975881520695477686L;
-
-  private final List<ExprConstruct> items = new ArrayList<ExprConstruct>();
-
-  public List<ExprConstruct> getItems() {
-    return items;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CollectionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CollectionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CollectionDeserializer.java
deleted file mode 100644
index a16748f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/CollectionDeserializer.java
+++ /dev/null
@@ -1,50 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class CollectionDeserializer extends AbstractEdmDeserializer<Collection> {
-
-  @Override
-  protected Collection doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final Collection collection = new Collection();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if (isAnnotationConstExprConstruct(jp)) {
-          collection.getItems().add(parseAnnotationConstExprConstruct(jp));
-        } else {
-          collection.getItems().add(jp.readValueAs( DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return collection;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
deleted file mode 100644
index 9d27cdb..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ConstExprConstructImpl.java
+++ /dev/null
@@ -1,51 +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.edm.v4.annotation;
-
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
-
-public class ConstExprConstructImpl extends ExprConstructImpl implements ConstExprConstruct {
-
-  private static final long serialVersionUID = 2250072064504668969L;
-
-  private Type type;
-
-  private String value;
-
-  @Override
-  public Type getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final Type type) {
-    this.type = type;
-  }
-
-  @Override
-  public String getValue() {
-    return value;
-  }
-
-  @Override
-  public void setValue(final String value) {
-    this.value = value;
-  }
-
-}


[17/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/northwind-metadata.xml
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/northwind-metadata.xml b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/northwind-metadata.xml
index 4c3c37d..f65815d 100644
--- a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/northwind-metadata.xml
+++ b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/northwind-metadata.xml
@@ -19,4 +19,453 @@
     under the License.
 
 -->
-<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"><edmx:DataServices><Schema Namespace="NorthwindModel" xmlns="http://docs.oasis-open.org/odata/ns/edm"><EntityType Name="Category"><Key><PropertyRef Name="CategoryID" /></Key><Property Name="CategoryID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" /><Property Name="Description" Type="Edm.String" MaxLength="max" /><Property Name="Picture" Type="Edm.Binary" MaxLength="max" /><NavigationProperty Name="Products" Type="Collection(NorthwindModel.Product)" Partner="Category" /></EntityType><EntityType Name="CustomerDemographic"><Key><PropertyRef Name="CustomerTypeID" /></Key><Property Name="CustomerTypeID" Type="Edm.String" Nullable="false" MaxLength="10" /><Property Name="CustomerDesc" Type="Edm.String" MaxLength="max" /><NavigationProperty 
 Name="Customers" Type="Collection(NorthwindModel.Customer)" Partner="CustomerDemographics" /></EntityType><EntityType Name="Customer"><Key><PropertyRef Name="CustomerID" /></Key><Property Name="CustomerID" Type="Edm.String" Nullable="false" MaxLength="5" /><Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="ContactName" Type="Edm.String" MaxLength="30" /><Property Name="ContactTitle" Type="Edm.String" MaxLength="30" /><Property Name="Address" Type="Edm.String" MaxLength="60" /><Property Name="City" Type="Edm.String" MaxLength="15" /><Property Name="Region" Type="Edm.String" MaxLength="15" /><Property Name="PostalCode" Type="Edm.String" MaxLength="10" /><Property Name="Country" Type="Edm.String" MaxLength="15" /><Property Name="Phone" Type="Edm.String" MaxLength="24" /><Property Name="Fax" Type="Edm.String" MaxLength="24" /><NavigationProperty Name="Orders" Type="Collection(NorthwindModel.Order)" Partner="Customer" /><NavigationProperty Na
 me="CustomerDemographics" Type="Collection(NorthwindModel.CustomerDemographic)" Partner="Customers" /></EntityType><EntityType Name="Employee"><Key><PropertyRef Name="EmployeeID" /></Key><Property Name="EmployeeID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Property Name="LastName" Type="Edm.String" Nullable="false" MaxLength="20" /><Property Name="FirstName" Type="Edm.String" Nullable="false" MaxLength="10" /><Property Name="Title" Type="Edm.String" MaxLength="30" /><Property Name="TitleOfCourtesy" Type="Edm.String" MaxLength="25" /><Property Name="BirthDate" Type="Edm.DateTimeOffset" /><Property Name="HireDate" Type="Edm.DateTimeOffset" /><Property Name="Address" Type="Edm.String" MaxLength="60" /><Property Name="City" Type="Edm.String" MaxLength="15" /><Property Name="Region" Type="Edm.String" MaxLength="15" /><Property Name="PostalCode" Type="Edm.String" MaxLength="10" /><Property Na
 me="Country" Type="Edm.String" MaxLength="15" /><Property Name="HomePhone" Type="Edm.String" MaxLength="24" /><Property Name="Extension" Type="Edm.String" MaxLength="4" /><Property Name="Photo" Type="Edm.Binary" MaxLength="max" /><Property Name="Notes" Type="Edm.String" MaxLength="max" /><Property Name="ReportsTo" Type="Edm.Int32" /><Property Name="PhotoPath" Type="Edm.String" MaxLength="255" /><NavigationProperty Name="Employees1" Type="Collection(NorthwindModel.Employee)" Partner="Employee1" /><NavigationProperty Name="Employee1" Type="NorthwindModel.Employee" Partner="Employees1"><ReferentialConstraint Property="ReportsTo" ReferencedProperty="EmployeeID" /></NavigationProperty><NavigationProperty Name="Orders" Type="Collection(NorthwindModel.Order)" Partner="Employee" /><NavigationProperty Name="Territories" Type="Collection(NorthwindModel.Territory)" Partner="Employees" /></EntityType><EntityType Name="Order_Detail"><Key><PropertyRef Name="OrderID" /><PropertyRef Name="ProductID
 " /></Key><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="ProductID" Type="Edm.Int32" Nullable="false" /><Property Name="UnitPrice" Type="Edm.Decimal" Nullable="false" Precision="19" Scale="4" /><Property Name="Quantity" Type="Edm.Int16" Nullable="false" /><Property Name="Discount" Type="Edm.Single" Nullable="false" /><NavigationProperty Name="Order" Type="NorthwindModel.Order" Nullable="false" Partner="Order_Details"><ReferentialConstraint Property="OrderID" ReferencedProperty="OrderID" /></NavigationProperty><NavigationProperty Name="Product" Type="NorthwindModel.Product" Nullable="false" Partner="Order_Details"><ReferentialConstraint Property="ProductID" ReferencedProperty="ProductID" /></NavigationProperty></EntityType><EntityType Name="Order"><Key><PropertyRef Name="OrderID" /></Key><Property Name="OrderID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Prop
 erty Name="CustomerID" Type="Edm.String" MaxLength="5" /><Property Name="EmployeeID" Type="Edm.Int32" /><Property Name="OrderDate" Type="Edm.DateTimeOffset" /><Property Name="RequiredDate" Type="Edm.DateTimeOffset" /><Property Name="ShippedDate" Type="Edm.DateTimeOffset" /><Property Name="ShipVia" Type="Edm.Int32" /><Property Name="Freight" Type="Edm.Decimal" Precision="19" Scale="4" /><Property Name="ShipName" Type="Edm.String" MaxLength="40" /><Property Name="ShipAddress" Type="Edm.String" MaxLength="60" /><Property Name="ShipCity" Type="Edm.String" MaxLength="15" /><Property Name="ShipRegion" Type="Edm.String" MaxLength="15" /><Property Name="ShipPostalCode" Type="Edm.String" MaxLength="10" /><Property Name="ShipCountry" Type="Edm.String" MaxLength="15" /><NavigationProperty Name="Customer" Type="NorthwindModel.Customer" Partner="Orders"><ReferentialConstraint Property="CustomerID" ReferencedProperty="CustomerID" /></NavigationProperty><NavigationProperty Name="Employee" Type="No
 rthwindModel.Employee" Partner="Orders"><ReferentialConstraint Property="EmployeeID" ReferencedProperty="EmployeeID" /></NavigationProperty><NavigationProperty Name="Order_Details" Type="Collection(NorthwindModel.Order_Detail)" Partner="Order" /><NavigationProperty Name="Shipper" Type="NorthwindModel.Shipper" Partner="Orders"><ReferentialConstraint Property="ShipVia" ReferencedProperty="ShipperID" /></NavigationProperty></EntityType><EntityType Name="Product"><Key><PropertyRef Name="ProductID" /></Key><Property Name="ProductID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="SupplierID" Type="Edm.Int32" /><Property Name="CategoryID" Type="Edm.Int32" /><Property Name="QuantityPerUnit" Type="Edm.String" MaxLength="20" /><Property Name="UnitPrice" Type="Edm.Decimal" Precision="19" Scale="4" /><Propert
 y Name="UnitsInStock" Type="Edm.Int16" /><Property Name="UnitsOnOrder" Type="Edm.Int16" /><Property Name="ReorderLevel" Type="Edm.Int16" /><Property Name="Discontinued" Type="Edm.Boolean" Nullable="false" /><NavigationProperty Name="Category" Type="NorthwindModel.Category" Partner="Products"><ReferentialConstraint Property="CategoryID" ReferencedProperty="CategoryID" /></NavigationProperty><NavigationProperty Name="Order_Details" Type="Collection(NorthwindModel.Order_Detail)" Partner="Product" /><NavigationProperty Name="Supplier" Type="NorthwindModel.Supplier" Partner="Products"><ReferentialConstraint Property="SupplierID" ReferencedProperty="SupplierID" /></NavigationProperty></EntityType><EntityType Name="Region"><Key><PropertyRef Name="RegionID" /></Key><Property Name="RegionID" Type="Edm.Int32" Nullable="false" /><Property Name="RegionDescription" Type="Edm.String" Nullable="false" MaxLength="50" /><NavigationProperty Name="Territories" Type="Collection(NorthwindModel.Territory
 )" Partner="Region" /></EntityType><EntityType Name="Shipper"><Key><PropertyRef Name="ShipperID" /></Key><Property Name="ShipperID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="Phone" Type="Edm.String" MaxLength="24" /><NavigationProperty Name="Orders" Type="Collection(NorthwindModel.Order)" Partner="Shipper" /></EntityType><EntityType Name="Supplier"><Key><PropertyRef Name="SupplierID" /></Key><Property Name="SupplierID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="ContactName" Type="Edm.String" MaxLength="30" /><Property Name="ContactTitle" Type="Edm.String" MaxLength="30" /><Property Name="Address" Type="
 Edm.String" MaxLength="60" /><Property Name="City" Type="Edm.String" MaxLength="15" /><Property Name="Region" Type="Edm.String" MaxLength="15" /><Property Name="PostalCode" Type="Edm.String" MaxLength="10" /><Property Name="Country" Type="Edm.String" MaxLength="15" /><Property Name="Phone" Type="Edm.String" MaxLength="24" /><Property Name="Fax" Type="Edm.String" MaxLength="24" /><Property Name="HomePage" Type="Edm.String" MaxLength="max" /><NavigationProperty Name="Products" Type="Collection(NorthwindModel.Product)" Partner="Supplier" /></EntityType><EntityType Name="Territory"><Key><PropertyRef Name="TerritoryID" /></Key><Property Name="TerritoryID" Type="Edm.String" Nullable="false" MaxLength="20" /><Property Name="TerritoryDescription" Type="Edm.String" Nullable="false" MaxLength="50" /><Property Name="RegionID" Type="Edm.Int32" Nullable="false" /><NavigationProperty Name="Region" Type="NorthwindModel.Region" Nullable="false" Partner="Territories"><ReferentialConstraint Property=
 "RegionID" ReferencedProperty="RegionID" /></NavigationProperty><NavigationProperty Name="Employees" Type="Collection(NorthwindModel.Employee)" Partner="Territories" /></EntityType><EntityType Name="Alphabetical_list_of_product"><Key><PropertyRef Name="CategoryName" /><PropertyRef Name="Discontinued" /><PropertyRef Name="ProductID" /><PropertyRef Name="ProductName" /></Key><Property Name="ProductID" Type="Edm.Int32" Nullable="false" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="SupplierID" Type="Edm.Int32" /><Property Name="CategoryID" Type="Edm.Int32" /><Property Name="QuantityPerUnit" Type="Edm.String" MaxLength="20" /><Property Name="UnitPrice" Type="Edm.Decimal" Precision="19" Scale="4" /><Property Name="UnitsInStock" Type="Edm.Int16" /><Property Name="UnitsOnOrder" Type="Edm.Int16" /><Property Name="ReorderLevel" Type="Edm.Int16" /><Property Name="Discontinued" Type="Edm.Boolean" Nullable="false" /><Property Name="CategoryNam
 e" Type="Edm.String" Nullable="false" MaxLength="15" /></EntityType><EntityType Name="Category_Sales_for_1997"><Key><PropertyRef Name="CategoryName" /></Key><Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" /><Property Name="CategorySales" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Current_Product_List"><Key><PropertyRef Name="ProductID" /><PropertyRef Name="ProductName" /></Key><Property Name="ProductID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /></EntityType><EntityType Name="Customer_and_Suppliers_by_City"><Key><PropertyRef Name="CompanyName" /><PropertyRef Name="Relationship" /></Key><Property Name="City" Type="Edm.String" MaxLength="15" /><Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="Contact
 Name" Type="Edm.String" MaxLength="30" /><Property Name="Relationship" Type="Edm.String" Nullable="false" MaxLength="9" Unicode="false" /></EntityType><EntityType Name="Invoice"><Key><PropertyRef Name="CustomerName" /><PropertyRef Name="Discount" /><PropertyRef Name="OrderID" /><PropertyRef Name="ProductID" /><PropertyRef Name="ProductName" /><PropertyRef Name="Quantity" /><PropertyRef Name="Salesperson" /><PropertyRef Name="ShipperName" /><PropertyRef Name="UnitPrice" /></Key><Property Name="ShipName" Type="Edm.String" MaxLength="40" /><Property Name="ShipAddress" Type="Edm.String" MaxLength="60" /><Property Name="ShipCity" Type="Edm.String" MaxLength="15" /><Property Name="ShipRegion" Type="Edm.String" MaxLength="15" /><Property Name="ShipPostalCode" Type="Edm.String" MaxLength="10" /><Property Name="ShipCountry" Type="Edm.String" MaxLength="15" /><Property Name="CustomerID" Type="Edm.String" MaxLength="5" /><Property Name="CustomerName" Type="Edm.String" Nullable="false" MaxLengt
 h="40" /><Property Name="Address" Type="Edm.String" MaxLength="60" /><Property Name="City" Type="Edm.String" MaxLength="15" /><Property Name="Region" Type="Edm.String" MaxLength="15" /><Property Name="PostalCode" Type="Edm.String" MaxLength="10" /><Property Name="Country" Type="Edm.String" MaxLength="15" /><Property Name="Salesperson" Type="Edm.String" Nullable="false" MaxLength="31" /><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="OrderDate" Type="Edm.DateTimeOffset" /><Property Name="RequiredDate" Type="Edm.DateTimeOffset" /><Property Name="ShippedDate" Type="Edm.DateTimeOffset" /><Property Name="ShipperName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="ProductID" Type="Edm.Int32" Nullable="false" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="UnitPrice" Type="Edm.Decimal" Nullable="false" Precision="19" Scale="4" /><Property Name="Quantity" Type="Edm.Int16" Nullable="false" />
 <Property Name="Discount" Type="Edm.Single" Nullable="false" /><Property Name="ExtendedPrice" Type="Edm.Decimal" Precision="19" Scale="4" /><Property Name="Freight" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Order_Details_Extended"><Key><PropertyRef Name="Discount" /><PropertyRef Name="OrderID" /><PropertyRef Name="ProductID" /><PropertyRef Name="ProductName" /><PropertyRef Name="Quantity" /><PropertyRef Name="UnitPrice" /></Key><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="ProductID" Type="Edm.Int32" Nullable="false" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="UnitPrice" Type="Edm.Decimal" Nullable="false" Precision="19" Scale="4" /><Property Name="Quantity" Type="Edm.Int16" Nullable="false" /><Property Name="Discount" Type="Edm.Single" Nullable="false" /><Property Name="ExtendedPrice" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Or
 der_Subtotal"><Key><PropertyRef Name="OrderID" /></Key><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="Subtotal" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Orders_Qry"><Key><PropertyRef Name="CompanyName" /><PropertyRef Name="OrderID" /></Key><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="CustomerID" Type="Edm.String" MaxLength="5" /><Property Name="EmployeeID" Type="Edm.Int32" /><Property Name="OrderDate" Type="Edm.DateTimeOffset" /><Property Name="RequiredDate" Type="Edm.DateTimeOffset" /><Property Name="ShippedDate" Type="Edm.DateTimeOffset" /><Property Name="ShipVia" Type="Edm.Int32" /><Property Name="Freight" Type="Edm.Decimal" Precision="19" Scale="4" /><Property Name="ShipName" Type="Edm.String" MaxLength="40" /><Property Name="ShipAddress" Type="Edm.String" MaxLength="60" /><Property Name="ShipCity" Type="Edm.String" MaxLength="15" /><Property Name="ShipRegion" Type="Edm.String" MaxL
 ength="15" /><Property Name="ShipPostalCode" Type="Edm.String" MaxLength="10" /><Property Name="ShipCountry" Type="Edm.String" MaxLength="15" /><Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="Address" Type="Edm.String" MaxLength="60" /><Property Name="City" Type="Edm.String" MaxLength="15" /><Property Name="Region" Type="Edm.String" MaxLength="15" /><Property Name="PostalCode" Type="Edm.String" MaxLength="10" /><Property Name="Country" Type="Edm.String" MaxLength="15" /></EntityType><EntityType Name="Product_Sales_for_1997"><Key><PropertyRef Name="CategoryName" /><PropertyRef Name="ProductName" /></Key><Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="ProductSales" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Products_Above_Average_Price"><Key><PropertyRef Name="ProductName" /
 ></Key><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="UnitPrice" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Products_by_Category"><Key><PropertyRef Name="CategoryName" /><PropertyRef Name="Discontinued" /><PropertyRef Name="ProductName" /></Key><Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" /><Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="QuantityPerUnit" Type="Edm.String" MaxLength="20" /><Property Name="UnitsInStock" Type="Edm.Int16" /><Property Name="Discontinued" Type="Edm.Boolean" Nullable="false" /></EntityType><EntityType Name="Sales_by_Category"><Key><PropertyRef Name="CategoryID" /><PropertyRef Name="CategoryName" /><PropertyRef Name="ProductName" /></Key><Property Name="CategoryID" Type="Edm.Int32" Nullable="false" /><Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" /><Property N
 ame="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="ProductSales" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Sales_Totals_by_Amount"><Key><PropertyRef Name="CompanyName" /><PropertyRef Name="OrderID" /></Key><Property Name="SaleAmount" Type="Edm.Decimal" Precision="19" Scale="4" /><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" /><Property Name="ShippedDate" Type="Edm.DateTimeOffset" /></EntityType><EntityType Name="Summary_of_Sales_by_Quarter"><Key><PropertyRef Name="OrderID" /></Key><Property Name="ShippedDate" Type="Edm.DateTimeOffset" /><Property Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="Subtotal" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><EntityType Name="Summary_of_Sales_by_Year"><Key><PropertyRef Name="OrderID" /></Key><Property Name="ShippedDate" Type="Edm.DateTimeOffset" /><P
 roperty Name="OrderID" Type="Edm.Int32" Nullable="false" /><Property Name="Subtotal" Type="Edm.Decimal" Precision="19" Scale="4" /></EntityType><Annotations Target="ODataWebExperimental.Northwind.Model.NorthwindEntities"><Annotation Term="Com.Microsoft.OData.Service.Conventions.V1.UrlConventions" String="KeyAsSegment" /></Annotations></Schema><Schema Namespace="ODataWebExperimental.Northwind.Model" xmlns="http://docs.oasis-open.org/odata/ns/edm"><EntityContainer Name="NorthwindEntities" p4:LazyLoadingEnabled="true" xmlns:p4="http://schemas.microsoft.com/ado/2009/02/edm/annotation"><EntitySet Name="Categories" EntityType="NorthwindModel.Category"><NavigationPropertyBinding Path="Products" Target="Products" /></EntitySet><EntitySet Name="CustomerDemographics" EntityType="NorthwindModel.CustomerDemographic"><NavigationPropertyBinding Path="Customers" Target="Customers" /></EntitySet><EntitySet Name="Customers" EntityType="NorthwindModel.Customer"><NavigationPropertyBinding Path="Custom
 erDemographics" Target="CustomerDemographics" /><NavigationPropertyBinding Path="Orders" Target="Orders" /></EntitySet><EntitySet Name="Employees" EntityType="NorthwindModel.Employee"><NavigationPropertyBinding Path="Employees1" Target="Employees" /><NavigationPropertyBinding Path="Employee1" Target="Employees" /><NavigationPropertyBinding Path="Orders" Target="Orders" /><NavigationPropertyBinding Path="Territories" Target="Territories" /></EntitySet><EntitySet Name="Order_Details" EntityType="NorthwindModel.Order_Detail"><NavigationPropertyBinding Path="Order" Target="Orders" /><NavigationPropertyBinding Path="Product" Target="Products" /></EntitySet><EntitySet Name="Orders" EntityType="NorthwindModel.Order"><NavigationPropertyBinding Path="Customer" Target="Customers" /><NavigationPropertyBinding Path="Employee" Target="Employees" /><NavigationPropertyBinding Path="Order_Details" Target="Order_Details" /><NavigationPropertyBinding Path="Shipper" Target="Shippers" /></EntitySet><En
 titySet Name="Products" EntityType="NorthwindModel.Product"><NavigationPropertyBinding Path="Category" Target="Categories" /><NavigationPropertyBinding Path="Order_Details" Target="Order_Details" /><NavigationPropertyBinding Path="Supplier" Target="Suppliers" /></EntitySet><EntitySet Name="Regions" EntityType="NorthwindModel.Region"><NavigationPropertyBinding Path="Territories" Target="Territories" /></EntitySet><EntitySet Name="Shippers" EntityType="NorthwindModel.Shipper"><NavigationPropertyBinding Path="Orders" Target="Orders" /></EntitySet><EntitySet Name="Suppliers" EntityType="NorthwindModel.Supplier"><NavigationPropertyBinding Path="Products" Target="Products" /></EntitySet><EntitySet Name="Territories" EntityType="NorthwindModel.Territory"><NavigationPropertyBinding Path="Employees" Target="Employees" /><NavigationPropertyBinding Path="Region" Target="Regions" /></EntitySet><EntitySet Name="Alphabetical_list_of_products" EntityType="NorthwindModel.Alphabetical_list_of_produc
 t" /><EntitySet Name="Category_Sales_for_1997" EntityType="NorthwindModel.Category_Sales_for_1997" /><EntitySet Name="Current_Product_Lists" EntityType="NorthwindModel.Current_Product_List" /><EntitySet Name="Customer_and_Suppliers_by_Cities" EntityType="NorthwindModel.Customer_and_Suppliers_by_City" /><EntitySet Name="Invoices" EntityType="NorthwindModel.Invoice" /><EntitySet Name="Order_Details_Extendeds" EntityType="NorthwindModel.Order_Details_Extended" /><EntitySet Name="Order_Subtotals" EntityType="NorthwindModel.Order_Subtotal" /><EntitySet Name="Orders_Qries" EntityType="NorthwindModel.Orders_Qry" /><EntitySet Name="Product_Sales_for_1997" EntityType="NorthwindModel.Product_Sales_for_1997" /><EntitySet Name="Products_Above_Average_Prices" EntityType="NorthwindModel.Products_Above_Average_Price" /><EntitySet Name="Products_by_Categories" EntityType="NorthwindModel.Products_by_Category" /><EntitySet Name="Sales_by_Categories" EntityType="NorthwindModel.Sales_by_Category" /><En
 titySet Name="Sales_Totals_by_Amounts" EntityType="NorthwindModel.Sales_Totals_by_Amount" /><EntitySet Name="Summary_of_Sales_by_Quarters" EntityType="NorthwindModel.Summary_of_Sales_by_Quarter" /><EntitySet Name="Summary_of_Sales_by_Years" EntityType="NorthwindModel.Summary_of_Sales_by_Year" /></EntityContainer></Schema></edmx:DataServices></edmx:Edmx>
\ No newline at end of file
+<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
+  <edmx:DataServices>
+    <Schema Namespace="NorthwindModel" xmlns="http://docs.oasis-open.org/odata/ns/edm">
+      <EntityType Name="Category">
+        <Key>
+          <PropertyRef Name="CategoryID" />
+        </Key>
+        <Property Name="CategoryID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" />
+        <Property Name="Description" Type="Edm.String" MaxLength="max" />
+        <Property Name="Picture" Type="Edm.Binary" MaxLength="max" />
+        <NavigationProperty Name="Products" Type="Collection(NorthwindModel.Product)" Partner="Category" />
+      </EntityType>
+      <EntityType Name="CustomerDemographic">
+        <Key>
+          <PropertyRef Name="CustomerTypeID" />
+        </Key>
+        <Property Name="CustomerTypeID" Type="Edm.String" Nullable="false" MaxLength="10" />
+        <Property Name="CustomerDesc" Type="Edm.String" MaxLength="max" />
+        <NavigationProperty Name="Customers" Type="Collection(NorthwindModel.Customer)" Partner="CustomerDemographics" />
+      </EntityType>
+      <EntityType Name="Customer">
+        <Key>
+          <PropertyRef Name="CustomerID" />
+        </Key>
+        <Property Name="CustomerID" Type="Edm.String" Nullable="false" MaxLength="5" />
+        <Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ContactName" Type="Edm.String" MaxLength="30" />
+        <Property Name="ContactTitle" Type="Edm.String" MaxLength="30" />
+        <Property Name="Address" Type="Edm.String" MaxLength="60" />
+        <Property Name="City" Type="Edm.String" MaxLength="15" />
+        <Property Name="Region" Type="Edm.String" MaxLength="15" />
+        <Property Name="PostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="Country" Type="Edm.String" MaxLength="15" />
+        <Property Name="Phone" Type="Edm.String" MaxLength="24" />
+        <Property Name="Fax" Type="Edm.String" MaxLength="24" />
+        <NavigationProperty Name="Orders" Type="Collection(NorthwindModel.Order)" Partner="Customer" />
+        <NavigationProperty Name="CustomerDemographics" Type="Collection(NorthwindModel.CustomerDemographic)" Partner="Customers" />
+      </EntityType>
+      <EntityType Name="Employee">
+        <Key>
+          <PropertyRef Name="EmployeeID" />
+        </Key>
+        <Property Name="EmployeeID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="LastName" Type="Edm.String" Nullable="false" MaxLength="20" />
+        <Property Name="FirstName" Type="Edm.String" Nullable="false" MaxLength="10" />
+        <Property Name="Title" Type="Edm.String" MaxLength="30" />
+        <Property Name="TitleOfCourtesy" Type="Edm.String" MaxLength="25" />
+        <Property Name="BirthDate" Type="Edm.DateTimeOffset" />
+        <Property Name="HireDate" Type="Edm.DateTimeOffset" />
+        <Property Name="Address" Type="Edm.String" MaxLength="60" />
+        <Property Name="City" Type="Edm.String" MaxLength="15" />
+        <Property Name="Region" Type="Edm.String" MaxLength="15" />
+        <Property Name="PostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="Country" Type="Edm.String" MaxLength="15" />
+        <Property Name="HomePhone" Type="Edm.String" MaxLength="24" />
+        <Property Name="Extension" Type="Edm.String" MaxLength="4" />
+        <Property Name="Photo" Type="Edm.Binary" MaxLength="max" />
+        <Property Name="Notes" Type="Edm.String" MaxLength="max" />
+        <Property Name="ReportsTo" Type="Edm.Int32" />
+        <Property Name="PhotoPath" Type="Edm.String" MaxLength="255" />
+        <NavigationProperty Name="Employees1" Type="Collection(NorthwindModel.Employee)" Partner="Employee1" />
+        <NavigationProperty Name="Employee1" Type="NorthwindModel.Employee" Partner="Employees1">
+          <ReferentialConstraint Property="ReportsTo" ReferencedProperty="EmployeeID" />
+        </NavigationProperty>
+        <NavigationProperty Name="Orders" Type="Collection(NorthwindModel.Order)" Partner="Employee" />
+        <NavigationProperty Name="Territories" Type="Collection(NorthwindModel.Territory)" Partner="Employees" />
+      </EntityType>
+      <EntityType Name="Order_Detail">
+        <Key>
+          <PropertyRef Name="OrderID" />
+          <PropertyRef Name="ProductID" />
+        </Key>
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="UnitPrice" Type="Edm.Decimal" Nullable="false" Precision="19" Scale="4" />
+        <Property Name="Quantity" Type="Edm.Int16" Nullable="false" />
+        <Property Name="Discount" Type="Edm.Single" Nullable="false" />
+        <NavigationProperty Name="Order" Type="NorthwindModel.Order" Nullable="false" Partner="Order_Details">
+          <ReferentialConstraint Property="OrderID" ReferencedProperty="OrderID" />
+        </NavigationProperty>
+        <NavigationProperty Name="Product" Type="NorthwindModel.Product" Nullable="false" Partner="Order_Details">
+          <ReferentialConstraint Property="ProductID" ReferencedProperty="ProductID" />
+        </NavigationProperty>
+      </EntityType>
+      <EntityType Name="Order">
+        <Key>
+          <PropertyRef Name="OrderID" />
+        </Key>
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="CustomerID" Type="Edm.String" MaxLength="5" />
+        <Property Name="EmployeeID" Type="Edm.Int32" />
+        <Property Name="OrderDate" Type="Edm.DateTimeOffset" />
+        <Property Name="RequiredDate" Type="Edm.DateTimeOffset" />
+        <Property Name="ShippedDate" Type="Edm.DateTimeOffset" />
+        <Property Name="ShipVia" Type="Edm.Int32" />
+        <Property Name="Freight" Type="Edm.Decimal" Precision="19" Scale="4" />
+        <Property Name="ShipName" Type="Edm.String" MaxLength="40" />
+        <Property Name="ShipAddress" Type="Edm.String" MaxLength="60" />
+        <Property Name="ShipCity" Type="Edm.String" MaxLength="15" />
+        <Property Name="ShipRegion" Type="Edm.String" MaxLength="15" />
+        <Property Name="ShipPostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="ShipCountry" Type="Edm.String" MaxLength="15" />
+        <NavigationProperty Name="Customer" Type="NorthwindModel.Customer" Partner="Orders">
+          <ReferentialConstraint Property="CustomerID" ReferencedProperty="CustomerID" />
+        </NavigationProperty>
+        <NavigationProperty Name="Employee" Type="NorthwindModel.Employee" Partner="Orders">
+          <ReferentialConstraint Property="EmployeeID" ReferencedProperty="EmployeeID" />
+        </NavigationProperty>
+        <NavigationProperty Name="Order_Details" Type="Collection(NorthwindModel.Order_Detail)" Partner="Order" />
+        <NavigationProperty Name="Shipper" Type="NorthwindModel.Shipper" Partner="Orders">
+          <ReferentialConstraint Property="ShipVia" ReferencedProperty="ShipperID" />
+        </NavigationProperty>
+      </EntityType>
+      <EntityType Name="Product">
+        <Key>
+          <PropertyRef Name="ProductID" />
+        </Key>
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="SupplierID" Type="Edm.Int32" />
+        <Property Name="CategoryID" Type="Edm.Int32" />
+        <Property Name="QuantityPerUnit" Type="Edm.String" MaxLength="20" />
+        <Property Name="UnitPrice" Type="Edm.Decimal" Precision="19" Scale="4" />
+        <Property Name="UnitsInStock" Type="Edm.Int16" />
+        <Property Name="UnitsOnOrder" Type="Edm.Int16" />
+        <Property Name="ReorderLevel" Type="Edm.Int16" />
+        <Property Name="Discontinued" Type="Edm.Boolean" Nullable="false" />
+        <NavigationProperty Name="Category" Type="NorthwindModel.Category" Partner="Products">
+          <ReferentialConstraint Property="CategoryID" ReferencedProperty="CategoryID" />
+        </NavigationProperty>
+        <NavigationProperty Name="Order_Details" Type="Collection(NorthwindModel.Order_Detail)" Partner="Product" />
+        <NavigationProperty Name="Supplier" Type="NorthwindModel.Supplier" Partner="Products">
+          <ReferentialConstraint Property="SupplierID" ReferencedProperty="SupplierID" />
+        </NavigationProperty>
+      </EntityType>
+      <EntityType Name="Region">
+        <Key>
+          <PropertyRef Name="RegionID" />
+        </Key>
+        <Property Name="RegionID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="RegionDescription" Type="Edm.String" Nullable="false" MaxLength="50" />
+        <NavigationProperty Name="Territories" Type="Collection(NorthwindModel.Territory)" Partner="Region" />
+      </EntityType>
+      <EntityType Name="Shipper">
+        <Key>
+          <PropertyRef Name="ShipperID" />
+        </Key>
+        <Property Name="ShipperID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="Phone" Type="Edm.String" MaxLength="24" />
+        <NavigationProperty Name="Orders" Type="Collection(NorthwindModel.Order)" Partner="Shipper" />
+      </EntityType>
+      <EntityType Name="Supplier">
+        <Key>
+          <PropertyRef Name="SupplierID" />
+        </Key>
+        <Property Name="SupplierID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ContactName" Type="Edm.String" MaxLength="30" />
+        <Property Name="ContactTitle" Type="Edm.String" MaxLength="30" />
+        <Property Name="Address" Type="Edm.String" MaxLength="60" />
+        <Property Name="City" Type="Edm.String" MaxLength="15" />
+        <Property Name="Region" Type="Edm.String" MaxLength="15" />
+        <Property Name="PostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="Country" Type="Edm.String" MaxLength="15" />
+        <Property Name="Phone" Type="Edm.String" MaxLength="24" />
+        <Property Name="Fax" Type="Edm.String" MaxLength="24" />
+        <Property Name="HomePage" Type="Edm.String" MaxLength="max" />
+        <NavigationProperty Name="Products" Type="Collection(NorthwindModel.Product)" Partner="Supplier" />
+      </EntityType>
+      <EntityType Name="Territory">
+        <Key>
+          <PropertyRef Name="TerritoryID" />
+        </Key>
+        <Property Name="TerritoryID" Type="Edm.String" Nullable="false" MaxLength="20" />
+        <Property Name="TerritoryDescription" Type="Edm.String" Nullable="false" MaxLength="50" />
+        <Property Name="RegionID" Type="Edm.Int32" Nullable="false" />
+        <NavigationProperty Name="Region" Type="NorthwindModel.Region" Nullable="false" Partner="Territories">
+          <ReferentialConstraint Property="RegionID" ReferencedProperty="RegionID" />
+        </NavigationProperty>
+        <NavigationProperty Name="Employees" Type="Collection(NorthwindModel.Employee)" Partner="Territories" />
+      </EntityType>
+      <EntityType Name="Alphabetical_list_of_product">
+        <Key>
+          <PropertyRef Name="CategoryName" />
+          <PropertyRef Name="Discontinued" />
+          <PropertyRef Name="ProductID" />
+          <PropertyRef Name="ProductName" />
+        </Key>
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="SupplierID" Type="Edm.Int32" />
+        <Property Name="CategoryID" Type="Edm.Int32" />
+        <Property Name="QuantityPerUnit" Type="Edm.String" MaxLength="20" />
+        <Property Name="UnitPrice" Type="Edm.Decimal" Precision="19" Scale="4" />
+        <Property Name="UnitsInStock" Type="Edm.Int16" />
+        <Property Name="UnitsOnOrder" Type="Edm.Int16" />
+        <Property Name="ReorderLevel" Type="Edm.Int16" />
+        <Property Name="Discontinued" Type="Edm.Boolean" Nullable="false" />
+        <Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" />
+      </EntityType>
+      <EntityType Name="Category_Sales_for_1997">
+        <Key>
+          <PropertyRef Name="CategoryName" />
+        </Key>
+        <Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" />
+        <Property Name="CategorySales" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Current_Product_List">
+        <Key>
+          <PropertyRef Name="ProductID" />
+          <PropertyRef Name="ProductName" />
+        </Key>
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" p5:StoreGeneratedPattern="Identity" xmlns:p5="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+      </EntityType>
+      <EntityType Name="Customer_and_Suppliers_by_City">
+        <Key>
+          <PropertyRef Name="CompanyName" />
+          <PropertyRef Name="Relationship" />
+        </Key>
+        <Property Name="City" Type="Edm.String" MaxLength="15" />
+        <Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ContactName" Type="Edm.String" MaxLength="30" />
+        <Property Name="Relationship" Type="Edm.String" Nullable="false" MaxLength="9" Unicode="false" />
+      </EntityType>
+      <EntityType Name="Invoice">
+        <Key>
+          <PropertyRef Name="CustomerName" />
+          <PropertyRef Name="Discount" />
+          <PropertyRef Name="OrderID" />
+          <PropertyRef Name="ProductID" />
+          <PropertyRef Name="ProductName" />
+          <PropertyRef Name="Quantity" />
+          <PropertyRef Name="Salesperson" />
+          <PropertyRef Name="ShipperName" />
+          <PropertyRef Name="UnitPrice" />
+        </Key>
+        <Property Name="ShipName" Type="Edm.String" MaxLength="40" />
+        <Property Name="ShipAddress" Type="Edm.String" MaxLength="60" />
+        <Property Name="ShipCity" Type="Edm.String" MaxLength="15" />
+        <Property Name="ShipRegion" Type="Edm.String" MaxLength="15" />
+        <Property Name="ShipPostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="ShipCountry" Type="Edm.String" MaxLength="15" />
+        <Property Name="CustomerID" Type="Edm.String" MaxLength="5" />
+        <Property Name="CustomerName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="Address" Type="Edm.String" MaxLength="60" />
+        <Property Name="City" Type="Edm.String" MaxLength="15" />
+        <Property Name="Region" Type="Edm.String" MaxLength="15" />
+        <Property Name="PostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="Country" Type="Edm.String" MaxLength="15" />
+        <Property Name="Salesperson" Type="Edm.String" Nullable="false" MaxLength="31" />
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="OrderDate" Type="Edm.DateTimeOffset" />
+        <Property Name="RequiredDate" Type="Edm.DateTimeOffset" />
+        <Property Name="ShippedDate" Type="Edm.DateTimeOffset" />
+        <Property Name="ShipperName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="UnitPrice" Type="Edm.Decimal" Nullable="false" Precision="19" Scale="4" />
+        <Property Name="Quantity" Type="Edm.Int16" Nullable="false" />
+        <Property Name="Discount" Type="Edm.Single" Nullable="false" />
+        <Property Name="ExtendedPrice" Type="Edm.Decimal" Precision="19" Scale="4" />
+        <Property Name="Freight" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Order_Details_Extended">
+        <Key>
+          <PropertyRef Name="Discount" />
+          <PropertyRef Name="OrderID" />
+          <PropertyRef Name="ProductID" />
+          <PropertyRef Name="ProductName" />
+          <PropertyRef Name="Quantity" />
+          <PropertyRef Name="UnitPrice" />
+        </Key>
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="UnitPrice" Type="Edm.Decimal" Nullable="false" Precision="19" Scale="4" />
+        <Property Name="Quantity" Type="Edm.Int16" Nullable="false" />
+        <Property Name="Discount" Type="Edm.Single" Nullable="false" />
+        <Property Name="ExtendedPrice" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Order_Subtotal">
+        <Key>
+          <PropertyRef Name="OrderID" />
+        </Key>
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Subtotal" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Orders_Qry">
+        <Key>
+          <PropertyRef Name="CompanyName" />
+          <PropertyRef Name="OrderID" />
+        </Key>
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="CustomerID" Type="Edm.String" MaxLength="5" />
+        <Property Name="EmployeeID" Type="Edm.Int32" />
+        <Property Name="OrderDate" Type="Edm.DateTimeOffset" />
+        <Property Name="RequiredDate" Type="Edm.DateTimeOffset" />
+        <Property Name="ShippedDate" Type="Edm.DateTimeOffset" />
+        <Property Name="ShipVia" Type="Edm.Int32" />
+        <Property Name="Freight" Type="Edm.Decimal" Precision="19" Scale="4" />
+        <Property Name="ShipName" Type="Edm.String" MaxLength="40" />
+        <Property Name="ShipAddress" Type="Edm.String" MaxLength="60" />
+        <Property Name="ShipCity" Type="Edm.String" MaxLength="15" />
+        <Property Name="ShipRegion" Type="Edm.String" MaxLength="15" />
+        <Property Name="ShipPostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="ShipCountry" Type="Edm.String" MaxLength="15" />
+        <Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="Address" Type="Edm.String" MaxLength="60" />
+        <Property Name="City" Type="Edm.String" MaxLength="15" />
+        <Property Name="Region" Type="Edm.String" MaxLength="15" />
+        <Property Name="PostalCode" Type="Edm.String" MaxLength="10" />
+        <Property Name="Country" Type="Edm.String" MaxLength="15" />
+      </EntityType>
+      <EntityType Name="Product_Sales_for_1997">
+        <Key>
+          <PropertyRef Name="CategoryName" />
+          <PropertyRef Name="ProductName" />
+        </Key>
+        <Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ProductSales" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Products_Above_Average_Price">
+        <Key>
+          <PropertyRef Name="ProductName" />
+        </Key>
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="UnitPrice" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Products_by_Category">
+        <Key>
+          <PropertyRef Name="CategoryName" />
+          <PropertyRef Name="Discontinued" />
+          <PropertyRef Name="ProductName" />
+        </Key>
+        <Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="QuantityPerUnit" Type="Edm.String" MaxLength="20" />
+        <Property Name="UnitsInStock" Type="Edm.Int16" />
+        <Property Name="Discontinued" Type="Edm.Boolean" Nullable="false" />
+      </EntityType>
+      <EntityType Name="Sales_by_Category">
+        <Key>
+          <PropertyRef Name="CategoryID" />
+          <PropertyRef Name="CategoryName" />
+          <PropertyRef Name="ProductName" />
+        </Key>
+        <Property Name="CategoryID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="CategoryName" Type="Edm.String" Nullable="false" MaxLength="15" />
+        <Property Name="ProductName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ProductSales" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Sales_Totals_by_Amount">
+        <Key>
+          <PropertyRef Name="CompanyName" />
+          <PropertyRef Name="OrderID" />
+        </Key>
+        <Property Name="SaleAmount" Type="Edm.Decimal" Precision="19" Scale="4" />
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="CompanyName" Type="Edm.String" Nullable="false" MaxLength="40" />
+        <Property Name="ShippedDate" Type="Edm.DateTimeOffset" />
+      </EntityType>
+      <EntityType Name="Summary_of_Sales_by_Quarter">
+        <Key>
+          <PropertyRef Name="OrderID" />
+        </Key>
+        <Property Name="ShippedDate" Type="Edm.DateTimeOffset" />
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Subtotal" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <EntityType Name="Summary_of_Sales_by_Year">
+        <Key>
+          <PropertyRef Name="OrderID" />
+        </Key>
+        <Property Name="ShippedDate" Type="Edm.DateTimeOffset" />
+        <Property Name="OrderID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Subtotal" Type="Edm.Decimal" Precision="19" Scale="4" />
+      </EntityType>
+      <Annotations Target="ODataWebExperimental.Northwind.Model.NorthwindEntities">
+        <Annotation Term="Com.Microsoft.OData.Service.Conventions.V1.UrlConventions" String="KeyAsSegment" />
+      </Annotations>
+    </Schema>
+    <Schema Namespace="ODataWebExperimental.Northwind.Model" xmlns="http://docs.oasis-open.org/odata/ns/edm">
+      <EntityContainer Name="NorthwindEntities" p4:LazyLoadingEnabled="true" xmlns:p4="http://schemas.microsoft.com/ado/2009/02/edm/annotation">
+        <EntitySet Name="Categories" EntityType="NorthwindModel.Category">
+          <NavigationPropertyBinding Path="Products" Target="Products" />
+        </EntitySet>
+        <EntitySet Name="CustomerDemographics" EntityType="NorthwindModel.CustomerDemographic">
+          <NavigationPropertyBinding Path="Customers" Target="Customers" />
+        </EntitySet>
+        <EntitySet Name="Customers" EntityType="NorthwindModel.Customer">
+          <NavigationPropertyBinding Path="CustomerDemographics" Target="CustomerDemographics" />
+          <NavigationPropertyBinding Path="Orders" Target="Orders" />
+        </EntitySet>
+        <EntitySet Name="Employees" EntityType="NorthwindModel.Employee">
+          <NavigationPropertyBinding Path="Employees1" Target="Employees" />
+          <NavigationPropertyBinding Path="Employee1" Target="Employees" />
+          <NavigationPropertyBinding Path="Orders" Target="Orders" />
+          <NavigationPropertyBinding Path="Territories" Target="Territories" />
+        </EntitySet>
+        <EntitySet Name="Order_Details" EntityType="NorthwindModel.Order_Detail">
+          <NavigationPropertyBinding Path="Order" Target="Orders" />
+          <NavigationPropertyBinding Path="Product" Target="Products" />
+        </EntitySet>
+        <EntitySet Name="Orders" EntityType="NorthwindModel.Order">
+          <NavigationPropertyBinding Path="Customer" Target="Customers" />
+          <NavigationPropertyBinding Path="Employee" Target="Employees" />
+          <NavigationPropertyBinding Path="Order_Details" Target="Order_Details" />
+          <NavigationPropertyBinding Path="Shipper" Target="Shippers" />
+        </EntitySet>
+        <EntitySet Name="Products" EntityType="NorthwindModel.Product">
+          <NavigationPropertyBinding Path="Category" Target="Categories" />
+          <NavigationPropertyBinding Path="Order_Details" Target="Order_Details" />
+          <NavigationPropertyBinding Path="Supplier" Target="Suppliers" />
+        </EntitySet>
+        <EntitySet Name="Regions" EntityType="NorthwindModel.Region">
+          <NavigationPropertyBinding Path="Territories" Target="Territories" />
+        </EntitySet>
+        <EntitySet Name="Shippers" EntityType="NorthwindModel.Shipper">
+          <NavigationPropertyBinding Path="Orders" Target="Orders" />
+        </EntitySet>
+        <EntitySet Name="Suppliers" EntityType="NorthwindModel.Supplier">
+          <NavigationPropertyBinding Path="Products" Target="Products" />
+        </EntitySet>
+        <EntitySet Name="Territories" EntityType="NorthwindModel.Territory">
+          <NavigationPropertyBinding Path="Employees" Target="Employees" />
+          <NavigationPropertyBinding Path="Region" Target="Regions" />
+        </EntitySet>
+        <EntitySet Name="Alphabetical_list_of_products" EntityType="NorthwindModel.Alphabetical_list_of_product" />
+        <EntitySet Name="Category_Sales_for_1997" EntityType="NorthwindModel.Category_Sales_for_1997" />
+        <EntitySet Name="Current_Product_Lists" EntityType="NorthwindModel.Current_Product_List" />
+        <EntitySet Name="Customer_and_Suppliers_by_Cities" EntityType="NorthwindModel.Customer_and_Suppliers_by_City" />
+        <EntitySet Name="Invoices" EntityType="NorthwindModel.Invoice" />
+        <EntitySet Name="Order_Details_Extendeds" EntityType="NorthwindModel.Order_Details_Extended" />
+        <EntitySet Name="Order_Subtotals" EntityType="NorthwindModel.Order_Subtotal" />
+        <EntitySet Name="Orders_Qries" EntityType="NorthwindModel.Orders_Qry" />
+        <EntitySet Name="Product_Sales_for_1997" EntityType="NorthwindModel.Product_Sales_for_1997" />
+        <EntitySet Name="Products_Above_Average_Prices" EntityType="NorthwindModel.Products_Above_Average_Price" />
+        <EntitySet Name="Products_by_Categories" EntityType="NorthwindModel.Products_by_Category" />
+        <EntitySet Name="Sales_by_Categories" EntityType="NorthwindModel.Sales_by_Category" />
+        <EntitySet Name="Sales_Totals_by_Amounts" EntityType="NorthwindModel.Sales_Totals_by_Amount" />
+        <EntitySet Name="Summary_of_Sales_by_Quarters" EntityType="NorthwindModel.Summary_of_Sales_by_Quarter" />
+        <EntitySet Name="Summary_of_Sales_by_Years" EntityType="NorthwindModel.Summary_of_Sales_by_Year" />
+      </EntityContainer>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Edm.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Edm.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Edm.java
index 3d1e535..26861e3 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Edm.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Edm.java
@@ -28,7 +28,7 @@ import java.util.List;
 public interface Edm {
 
   /**
-   * Get entity container by full qualified name
+   * Get entity container by full qualified name.
    * <br/>
    * See {@link EdmEntityContainer} for more information.
    *
@@ -38,7 +38,7 @@ public interface Edm {
   EdmEntityContainer getEntityContainer(FullQualifiedName name);
 
   /**
-   * Get enum type by full qualified name
+   * Get enum type by full qualified name.
    * <br/>
    * See {@link EdmEnumType} for more information
    *
@@ -48,7 +48,7 @@ public interface Edm {
   EdmEnumType getEnumType(FullQualifiedName name);
 
   /**
-   * Get a type definition by full qualified name
+   * Get a type definition by full qualified name.
    * <br/>
    * See {@link EdmTypeDefinition} for more information
    *
@@ -58,7 +58,7 @@ public interface Edm {
   EdmTypeDefinition getTypeDefinition(FullQualifiedName name);
 
   /**
-   * Get entity type by full qualified name
+   * Get entity type by full qualified name.
    * <br/>
    * See {@link EdmEntityType} for more information.
    *
@@ -68,7 +68,7 @@ public interface Edm {
   EdmEntityType getEntityType(FullQualifiedName name);
 
   /**
-   * Get complex type by full qualified name.
+   * Get complex type by full qualified name..
    * <br/>
    * See {@link EdmComplexType} for more information.
    *
@@ -101,7 +101,7 @@ public interface Edm {
           Boolean isBindingParameterCollection, List<String> parameterNames);
 
   /**
-   * Get service metadata
+   * Get service metadata.
    * <br/>
    * See {@link EdmServiceMetadata} for more information.
    *

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmActionImportInfo.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmActionImportInfo.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmActionImportInfo.java
new file mode 100644
index 0000000..18f0d74
--- /dev/null
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmActionImportInfo.java
@@ -0,0 +1,40 @@
+/* 
+ * 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.api.edm;
+
+import java.net.URI;
+
+/**
+ * Objects of this class contain information about one action import inside the EntityDataModel.
+ */
+public interface EdmActionImportInfo extends EdmOperationImportInfo {
+
+  /**
+   * @return the action import name
+   */
+  String getActionImportName();
+
+  /**
+   * We use a {@link URI} object here to ensure the right encoding. If a string representation is needed the
+   * toASCIIString() method can be used.
+   *
+   * @return the uri to this function import
+   */
+  URI getActionImportUri();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmComplexType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmComplexType.java
index 7b26621..7287228 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmComplexType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmComplexType.java
@@ -24,7 +24,7 @@ package org.apache.olingo.odata4.commons.api.edm;
  * EdmComplexType holds a set of related information like {@link EdmPrimitiveType} properties and EdmComplexType
  * properties.
  */
-public interface EdmComplexType extends EdmStructuralType {
+public interface EdmComplexType extends EdmStructuredType {
 
   @Override
   EdmComplexType getBaseType();

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmEntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmEntityType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmEntityType.java
index 585f813..b582551 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmEntityType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmEntityType.java
@@ -23,7 +23,7 @@ import java.util.List;
 /**
  * A CSDL EntityType element.
  */
-public interface EdmEntityType extends EdmStructuralType {
+public interface EdmEntityType extends EdmStructuredType {
 
   /**
    * Gets all key predicate names. In case an alias is defined for a key predicate this will be returned.

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmFunctionImportInfo.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmFunctionImportInfo.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmFunctionImportInfo.java
index ac62798..28fc6fa 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmFunctionImportInfo.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmFunctionImportInfo.java
@@ -23,12 +23,7 @@ import java.net.URI;
 /**
  * Objects of this class contain information about one function import inside the EntityDataModel.
  */
-public interface EdmFunctionImportInfo {
-
-  /**
-   * @return the entity container name which contains this function import.
-   */
-  String getEntityContainerName();
+public interface EdmFunctionImportInfo extends EdmOperationImportInfo {
 
   /**
    * @return the function import name

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmOperationImportInfo.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmOperationImportInfo.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmOperationImportInfo.java
new file mode 100644
index 0000000..1c2c62a
--- /dev/null
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmOperationImportInfo.java
@@ -0,0 +1,31 @@
+/* 
+ * 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.api.edm;
+
+/**
+ * Objects of this class contain information about one action or function import inside the EntityDataModel.
+ */
+public interface EdmOperationImportInfo {
+
+  /**
+   * @return the entity container name which contains this function import.
+   */
+  String getEntityContainerName();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
index bf3a6d6..be6f2c4 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
@@ -48,6 +48,11 @@ public interface EdmServiceMetadata {
   List<EdmSingletonInfo> getSingletonInfos();
 
   /**
+   * @return a list of {@link EdmActionImportInfo} objects inside the data model
+   */
+  List<EdmActionImportInfo> getActionImportInfos();
+
+  /**
    * @return a list of {@link EdmFunctionImportInfo} objects inside the data model
    */
   List<EdmFunctionImportInfo> getFunctionImportInfos();

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
deleted file mode 100644
index be11391..0000000
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
+++ /dev/null
@@ -1,66 +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.api.edm;
-
-import java.util.List;
-
-/**
- * EdmStructuralType is the base for a complex type or an entity type.
- *
- * Complex types and entity types are described in the Conceptual Schema Definition of the OData protocol.
- */
-public interface EdmStructuralType extends EdmType {
-
-  /**
-   * Get property by name.
-   *
-   * @param name
-   * @return simple, complex or navigation property as {@link EdmTyped}
-   */
-  EdmElement getProperty(String name);
-
-  /**
-   * Get all simple and complex property names.
-   *
-   * @return property names as type List&lt;String&gt;
-   */
-  List<String> getPropertyNames();
-
-  /**
-   * Get all navigation property names.
-   *
-   * @return navigation property names as type List&lt;String&gt;
-   */
-  List<String> getNavigationPropertyNames();
-
-  /**
-   * Base types are described in the OData protocol specification.
-   *
-   * @return {@link EdmStructuralType}
-   */
-  EdmStructuralType getBaseType();
-
-  /**
-   * Checks if this type is convertible to parameter {@link targetType}
-   *
-   * @param targetType
-   * @return true if this type is compatible to the testType ( i.e. this type is a subtype of targetType )
-   */
-  boolean compatibleTo(EdmType targetType);
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuredType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuredType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuredType.java
new file mode 100644
index 0000000..b515957
--- /dev/null
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuredType.java
@@ -0,0 +1,82 @@
+/* 
+ * 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.api.edm;
+
+import java.util.List;
+
+/**
+ * EdmStructuralType is the base for a complex type or an entity type.
+ *
+ * Complex types and entity types are described in the Conceptual Schema Definition of the OData protocol.
+ */
+public interface EdmStructuredType extends EdmType {
+
+  /**
+   * Get property by name
+   *
+   * @param name
+   * @return simple, complex or navigation property as {@link EdmTyped}
+   */
+  EdmElement getProperty(String name);
+
+  /**
+   * Get all simple and complex property names.
+   *
+   * @return property names as type List&lt;String&gt;
+   */
+  List<String> getPropertyNames();
+
+  /**
+   * Get structural property by name.
+   *
+   * @param name
+   * @return simple or complex property as {@link EdmTyped}
+   */
+  EdmProperty getStructuralProperty(String name);
+
+  /**
+   * Get navigation property by name.
+   *
+   * @param name
+   * @return navigation property as {@link EdmTyped}
+   */
+  EdmNavigationProperty getNavigationProperty(String name);
+
+  /**
+   * Get all navigation property names.
+   *
+   * @return navigation property names as type List&lt;String&gt;
+   */
+  List<String> getNavigationPropertyNames();
+
+  /**
+   * Base types are described in the OData protocol specification.
+   *
+   * @return {@link EdmStructuredType}
+   */
+  EdmStructuredType getBaseType();
+
+  /**
+   * Checks if this type is convertible to parameter {@link targetType}
+   *
+   * @param targetType
+   * @return true if this type is compatible to the testType ( i.e. this type is a subtype of targetType )
+   */
+  boolean compatibleTo(EdmType targetType);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Target.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Target.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Target.java
new file mode 100644
index 0000000..5acadc4
--- /dev/null
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/Target.java
@@ -0,0 +1,71 @@
+/* 
+ * 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.api.edm;
+
+public class Target {
+
+  private String targetName;
+
+  private FullQualifiedName entityContainer;
+
+  public static class Builder {
+
+    private final Target instance;
+
+    public Builder(final String target, final EdmEntityContainer defaultContainer) {
+      final String[] bindingTargetParts = target.split("/");
+
+      instance = new Target();
+      if (bindingTargetParts.length == 1) {
+        instance.
+                setEntityContainer(new FullQualifiedName(defaultContainer.getNamespace(), defaultContainer.getName())).
+                setTargetName(bindingTargetParts[0]);
+      } else {
+        final int idx = bindingTargetParts[0].lastIndexOf('.');
+        instance.
+                setEntityContainer(new FullQualifiedName(
+                                bindingTargetParts[0].substring(0, idx), bindingTargetParts[0].substring(idx))).
+                setTargetName(bindingTargetParts[1]);
+      }
+    }
+
+    public Target build() {
+      return instance;
+    }
+  }
+
+  public String getTargetName() {
+    return targetName;
+  }
+
+  public Target setTargetName(final String targetPathName) {
+    targetName = targetPathName;
+    return this;
+  }
+
+  public FullQualifiedName getEntityContainer() {
+    return entityContainer;
+  }
+
+  public Target setEntityContainer(final FullQualifiedName entityContainer) {
+    this.entityContainer = entityContainer;
+    return this;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmBindingTarget.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmBindingTarget.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmBindingTarget.java
new file mode 100644
index 0000000..6e9df56
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmBindingTarget.java
@@ -0,0 +1,55 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+
+public abstract class AbstractEdmBindingTarget extends EdmNamedImpl implements EdmBindingTarget {
+
+  protected final EdmEntityContainer container;
+
+  private final FullQualifiedName type;
+
+  public AbstractEdmBindingTarget(final Edm edm, final EdmEntityContainer container,
+          final String name, final FullQualifiedName type) {
+
+    super(edm, name);
+    this.container = container;
+    this.type = type;
+  }
+
+  @Override
+  public EdmEntityContainer getEntityContainer() {
+    return container;
+  }
+
+  @Override
+  public EdmEntityType getEntityType() {
+    final EdmEntityType entityType = edm.getEntityType(this.type);
+    if (entityType == null) {
+      throw new EdmException("Can´t find entity type: " + type + " for entity set or singleton: " + getName());
+    }
+    return entityType;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmComplexType.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmComplexType.java
new file mode 100644
index 0000000..db52f2e
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmComplexType.java
@@ -0,0 +1,50 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.EdmStructuredType;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public abstract class AbstractEdmComplexType extends AbstractEdmStructuredType implements EdmComplexType {
+
+  public AbstractEdmComplexType(final Edm edm, final FullQualifiedName fqn, final FullQualifiedName baseTypeName) {
+    super(edm, fqn, EdmTypeKind.COMPLEX, baseTypeName);
+  }
+
+  @Override
+  protected EdmStructuredType buildBaseType(final FullQualifiedName baseTypeName) {
+    EdmComplexType baseType = null;
+    if (baseTypeName != null) {
+      baseType = edm.getComplexType(baseTypeName);
+      if (baseType == null) {
+        throw new EdmException("Can't find base type with name: " + baseTypeName + " for complex type: " + getName());
+      }
+    }
+    return baseType;
+  }
+
+  @Override
+  public EdmComplexType getBaseType() {
+    return (EdmComplexType) baseType;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityContainer.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityContainer.java
new file mode 100644
index 0000000..d183972
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityContainer.java
@@ -0,0 +1,101 @@
+/*
+ * 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;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+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.FullQualifiedName;
+
+public abstract class AbstractEdmEntityContainer extends EdmNamedImpl implements EdmEntityContainer {
+
+  protected final FullQualifiedName entityContainerName;
+
+  private final Map<String, EdmSingleton> singletons = new HashMap<String, EdmSingleton>();
+
+  private final Map<String, EdmEntitySet> entitySets = new HashMap<String, EdmEntitySet>();
+
+  private final Map<String, EdmActionImport> actionImports = new HashMap<String, EdmActionImport>();
+
+  private final Map<String, EdmFunctionImport> functionImports = new HashMap<String, EdmFunctionImport>();
+
+  public AbstractEdmEntityContainer(final Edm edm, final FullQualifiedName entityContainerName) {
+    super(edm, entityContainerName.getName());
+    this.entityContainerName = entityContainerName;
+  }
+
+  @Override
+  public String getNamespace() {
+    return entityContainerName.getNamespace();
+  }
+
+  protected abstract EdmSingleton createSingleton(String singletonName);
+
+  @Override
+  public EdmSingleton getSingleton(final String singletonName) {
+    EdmSingleton singleton = singletons.get(singletonName);
+    if (singleton == null) {
+      singleton = createSingleton(singletonName);
+      singletons.put(singletonName, singleton);
+    }
+    return singleton;
+  }
+
+  protected abstract EdmEntitySet createEntitySet(String entitySetName);
+
+  @Override
+  public EdmEntitySet getEntitySet(final String entitySetName) {
+    EdmEntitySet entitySet = entitySets.get(entitySetName);
+    if (entitySet == null) {
+      entitySet = createEntitySet(entitySetName);
+      entitySets.put(entitySetName, entitySet);
+    }
+    return entitySet;
+  }
+
+  protected abstract EdmActionImport createActionImport(String actionImportName);
+
+  @Override
+  public EdmActionImport getActionImport(final String actionImportName) {
+    EdmActionImport actionImport = actionImports.get(actionImportName);
+    if (actionImport == null) {
+      actionImport = createActionImport(actionImportName);
+      actionImports.put(actionImportName, actionImport);
+    }
+    return actionImport;
+  }
+
+  protected abstract EdmFunctionImport createFunctionImport(String functionImportName);
+
+  @Override
+  public EdmFunctionImport getFunctionImport(final String functionImportName) {
+    EdmFunctionImport functionImport = functionImports.get(functionImportName);
+    if (functionImport == null) {
+      functionImport = createFunctionImport(functionImportName);
+      functionImports.put(functionImportName, functionImport);
+    }
+    return functionImport;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityType.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityType.java
new file mode 100644
index 0000000..75f982f
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEntityType.java
@@ -0,0 +1,113 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+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.EdmStructuredType;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public abstract class AbstractEdmEntityType extends AbstractEdmStructuredType implements EdmEntityType {
+
+  private final boolean hasStream;
+
+  protected EdmEntityType entityBaseType;
+
+  private final List<String> keyPredicateNames = new ArrayList<String>();
+
+  private final Map<String, EdmKeyPropertyRef> keyPropertyRefs = new LinkedHashMap<String, EdmKeyPropertyRef>();
+
+  private List<EdmKeyPropertyRef> keyPropertyRefsList;
+
+  protected AbstractEdmEntityType(final Edm edm, final FullQualifiedName fqn, final FullQualifiedName baseTypeName,
+          final boolean hashStream) {
+
+    super(edm, fqn, EdmTypeKind.ENTITY, baseTypeName);
+    this.hasStream = hashStream;
+  }
+
+  protected void setEdmKeyPropertyRef(final List<EdmKeyPropertyRef> edmKey) {
+    for (EdmKeyPropertyRef ref : edmKey) {
+      if (ref.getAlias() == null) {
+        keyPredicateNames.add(ref.getKeyPropertyName());
+        keyPropertyRefs.put(ref.getKeyPropertyName(), ref);
+      } else {
+        keyPredicateNames.add(ref.getAlias());
+        keyPropertyRefs.put(ref.getAlias(), ref);
+      }
+    }
+  }
+
+  @Override
+  protected EdmStructuredType buildBaseType(final FullQualifiedName baseTypeName) {
+    EdmEntityType baseType = null;
+    if (baseTypeName != null) {
+      baseType = edm.getEntityType(baseTypeName);
+      if (baseType == null) {
+        throw new EdmException("Cannot find base type with name: " + baseTypeName + " for entity type: " + getName());
+      }
+    }
+    return baseType;
+  }
+
+  @Override
+  public EdmEntityType getBaseType() {
+    return entityBaseType;
+  }
+
+  @Override
+  public List<String> getKeyPredicateNames() {
+    if (keyPredicateNames.isEmpty() && baseType != null) {
+      return entityBaseType.getKeyPredicateNames();
+    }
+    return keyPredicateNames;
+  }
+
+  @Override
+  public List<EdmKeyPropertyRef> getKeyPropertyRefs() {
+    if (keyPropertyRefsList == null) {
+      keyPropertyRefsList = new ArrayList<EdmKeyPropertyRef>(keyPropertyRefs.values());
+    }
+    if (keyPropertyRefsList.isEmpty() && entityBaseType != null) {
+      return entityBaseType.getKeyPropertyRefs();
+    }
+    return keyPropertyRefsList;
+  }
+
+  @Override
+  public EdmKeyPropertyRef getKeyPropertyRef(final String keyPredicateName) {
+    final EdmKeyPropertyRef edmKeyPropertyRef = keyPropertyRefs.get(keyPredicateName);
+    if (edmKeyPropertyRef == null && entityBaseType != null) {
+      return entityBaseType.getKeyPropertyRef(keyPredicateName);
+    }
+    return edmKeyPropertyRef;
+  }
+
+  @Override
+  public boolean hasStream() {
+    return hasStream;
+  }
+}


[18/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementReference.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementReference.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementReference.java
new file mode 100644
index 0000000..e24a04e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementReference.java
@@ -0,0 +1,25 @@
+/*
+ * 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.xml.v4.annotation;
+
+public class LabeledElementReference extends AbstractElOrAttrConstruct {
+
+  private static final long serialVersionUID = 3649068436729494270L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NavigationPropertyPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NavigationPropertyPath.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NavigationPropertyPath.java
new file mode 100644
index 0000000..c3685f4
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NavigationPropertyPath.java
@@ -0,0 +1,25 @@
+/*
+ * 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.xml.v4.annotation;
+
+public class NavigationPropertyPath extends AbstractElOrAttrConstruct {
+
+  private static final long serialVersionUID = -8066400142504963043L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Null.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Null.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Null.java
new file mode 100644
index 0000000..419413b
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Null.java
@@ -0,0 +1,28 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+
+@JsonDeserialize(using = NullDeserializer.class)
+public class Null extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = -3611384710172781951L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NullDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NullDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NullDeserializer.java
new file mode 100644
index 0000000..dc78b6a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/NullDeserializer.java
@@ -0,0 +1,49 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class NullDeserializer extends AbstractEdmDeserializer<Null> {
+
+  @Override
+  protected Null doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final Null _null = new Null();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Annotation".equals(jp.getCurrentName())) {
+          _null.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return _null;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Path.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Path.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Path.java
new file mode 100644
index 0000000..a5e4f9f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Path.java
@@ -0,0 +1,25 @@
+/*
+ * 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.xml.v4.annotation;
+
+public class Path extends AbstractElOrAttrConstruct {
+
+  private static final long serialVersionUID = -2551058493469292082L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyPath.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyPath.java
new file mode 100644
index 0000000..df924fe
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyPath.java
@@ -0,0 +1,25 @@
+/*
+ * 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.xml.v4.annotation;
+
+public class PropertyPath extends AbstractElOrAttrConstruct {
+
+  private static final long serialVersionUID = 2328584735437885159L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValue.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValue.java
new file mode 100644
index 0000000..6afb0d4
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValue.java
@@ -0,0 +1,49 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+
+@JsonDeserialize(using = PropertyValueDeserializer.class)
+public class PropertyValue extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = 3081968466425707461L;
+
+  private String property;
+
+  private ExprConstruct value;
+
+  public String getProperty() {
+    return property;
+  }
+
+  public void setProperty(final String property) {
+    this.property = property;
+  }
+
+  public ExprConstruct getValue() {
+    return value;
+  }
+
+  public void setValue(final ExprConstruct value) {
+    this.value = value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValueDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValueDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValueDeserializer.java
new file mode 100644
index 0000000..0871e55
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/PropertyValueDeserializer.java
@@ -0,0 +1,55 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class PropertyValueDeserializer extends AbstractEdmDeserializer<PropertyValue> {
+
+  @Override
+  protected PropertyValue doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final PropertyValue propValue = new PropertyValue();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Property".equals(jp.getCurrentName())) {
+          propValue.setProperty(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          propValue.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        } else if (isAnnotationConstExprConstruct(jp)) {
+          propValue.setValue(parseAnnotationConstExprConstruct(jp));
+        } else {
+          propValue.setValue(jp.readValueAs(DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return propValue;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Record.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Record.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Record.java
new file mode 100644
index 0000000..ee7d332
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Record.java
@@ -0,0 +1,46 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+
+@JsonDeserialize(using = RecordDeserializer.class)
+public class Record extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = -2886526224721870304L;
+
+  private String type;
+
+  private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
+
+  public String getType() {
+    return type;
+  }
+
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  public List<PropertyValue> getPropertyValues() {
+    return propertyValues;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/RecordDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/RecordDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/RecordDeserializer.java
new file mode 100644
index 0000000..f4a6cf1
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/RecordDeserializer.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class RecordDeserializer extends AbstractEdmDeserializer<Record> {
+
+  @Override
+  protected Record doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final Record record = new Record();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Tyoe".equals(jp.getCurrentName())) {
+          record.setType(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          record.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        } else {
+          record.getPropertyValues().add(jp.readValueAs(PropertyValue.class));
+        }
+      }
+    }
+
+    return record;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRef.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRef.java
new file mode 100644
index 0000000..f710fa4
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRef.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+
+@JsonDeserialize(using = UrlRefDeserializer.class)
+public class UrlRef extends DynExprConstructImpl {
+
+  private static final long serialVersionUID = 3755101394647430897L;
+
+  private ExprConstruct value;
+
+  public ExprConstruct getValue() {
+    return value;
+  }
+
+  public void setValue(final ExprConstruct value) {
+    this.value = value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRefDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRefDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRefDeserializer.java
new file mode 100644
index 0000000..e3d9f61
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/UrlRefDeserializer.java
@@ -0,0 +1,50 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class UrlRefDeserializer extends AbstractEdmDeserializer<UrlRef> {
+
+  @Override
+  protected UrlRef doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final UrlRef urlref = new UrlRef();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if (isAnnotationConstExprConstruct(jp)) {
+          urlref.setValue(parseAnnotationConstExprConstruct(jp));
+        } else {
+          urlref.setValue(jp.readValueAs( DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return urlref;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
index bd8c3e9..2a3aa80 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/AbstractEdmDeserializer.java
@@ -26,7 +26,7 @@ import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.api.ODataClient;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.ReturnTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
 
 public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataDeserializerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataDeserializerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataDeserializerImpl.java
index 36b90b2..9096099 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataDeserializerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataDeserializerImpl.java
@@ -22,6 +22,7 @@ import java.io.InputStream;
 import org.apache.olingo.odata4.client.api.ODataClient;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractODataDeserializer;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.EdmxImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
 
 public class ODataDeserializerImpl extends AbstractODataDeserializer {
 
@@ -32,9 +33,9 @@ public class ODataDeserializerImpl extends AbstractODataDeserializer {
   }
 
   @Override
-  public EdmxImpl toMetadata(final InputStream input) {
+  public XMLMetadataImpl toMetadata(final InputStream input) {
     try {
-      return getXmlMapper().readValue(input, EdmxImpl.class);
+      return new XMLMetadataImpl(getXmlMapper().readValue(input, EdmxImpl.class));
     } catch (Exception e) {
       throw new IllegalArgumentException("Could not parse as Edmx document", e);
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataReaderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataReaderImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataReaderImpl.java
index 83f0494..5b1c6cc 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataReaderImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v3/ODataReaderImpl.java
@@ -20,8 +20,9 @@ package org.apache.olingo.odata4.client.core.op.impl.v3;
 
 import java.io.InputStream;
 import org.apache.olingo.odata4.client.core.ODataV3Client;
+import org.apache.olingo.odata4.client.core.edm.EdmClientImpl;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractODataReader;
-import org.apache.olingo.odata4.client.core.edm.v3.EdmMetadataImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 
 public class ODataReaderImpl extends AbstractODataReader {
 
@@ -32,8 +33,8 @@ public class ODataReaderImpl extends AbstractODataReader {
   }
 
   @Override
-  public EdmMetadataImpl readMetadata(final InputStream input) {
-    return new EdmMetadataImpl(client, input);
+  public Edm readMetadata(final InputStream input) {
+    return new EdmClientImpl(client.getDeserializer().toMetadata(input));
   }
 
 //    @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataDeserializerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataDeserializerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataDeserializerImpl.java
index b97b69b..83c1aea 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataDeserializerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataDeserializerImpl.java
@@ -22,6 +22,7 @@ import java.io.InputStream;
 import org.apache.olingo.odata4.client.api.ODataClient;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractODataDeserializer;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.EdmxImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl;
 
 public class ODataDeserializerImpl extends AbstractODataDeserializer {
 
@@ -32,9 +33,9 @@ public class ODataDeserializerImpl extends AbstractODataDeserializer {
   }
 
   @Override
-  public EdmxImpl toMetadata(final InputStream input) {
+  public XMLMetadataImpl toMetadata(final InputStream input) {
     try {
-      return getXmlMapper().readValue(input, EdmxImpl.class);
+      return new XMLMetadataImpl(getXmlMapper().readValue(input, EdmxImpl.class));
     } catch (Exception e) {
       throw new IllegalArgumentException("Could not parse as Edmx document", e);
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataReaderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataReaderImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataReaderImpl.java
index 11b7112..35209c2 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataReaderImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/op/impl/v4/ODataReaderImpl.java
@@ -20,8 +20,9 @@ package org.apache.olingo.odata4.client.core.op.impl.v4;
 
 import java.io.InputStream;
 import org.apache.olingo.odata4.client.core.ODataV4Client;
+import org.apache.olingo.odata4.client.core.edm.EdmClientImpl;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractODataReader;
-import org.apache.olingo.odata4.client.core.edm.v4.EdmMetadataImpl;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 
 public class ODataReaderImpl extends AbstractODataReader {
 
@@ -32,8 +33,8 @@ public class ODataReaderImpl extends AbstractODataReader {
   }
 
   @Override
-  public EdmMetadataImpl readMetadata(final InputStream input) {
-    return new EdmMetadataImpl(client, input);
+  public Edm readMetadata(final InputStream input) {
+    return new EdmClientImpl(client.getDeserializer().toMetadata(input));
   }
 
 //    @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
index b23cb72..97f855c 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v3/MetadataTest.java
@@ -29,12 +29,12 @@ import org.apache.olingo.odata4.client.api.http.HttpMethod;
 import org.apache.olingo.odata4.client.core.AbstractTest;
 import org.apache.olingo.odata4.client.core.ODataV3Client;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.ComplexTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v3.EdmMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.v3.EdmTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityContainerImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.EntityTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.FunctionImportImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v3.SchemaImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl;
 import org.junit.Test;
 
 public class MetadataTest extends AbstractTest {
@@ -46,8 +46,8 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void parse() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
     final EdmTypeImpl orderCollection = new EdmTypeImpl(metadata,
@@ -98,8 +98,8 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void multipleSchemas() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("northwind-metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("northwind-metadata.xml"));
     assertNotNull(metadata);
 
     final SchemaImpl first = metadata.getSchema("NorthwindModel");
@@ -115,8 +115,8 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void entityType() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
     final EntityContainerImpl container = metadata.getSchema(0).getEntityContainers().get(0);
@@ -133,8 +133,8 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void complexType() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
     final EntityContainerImpl container = metadata.getSchema(0).getEntityContainers().get(0);
@@ -148,8 +148,8 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void functionImport() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("metadata.xml"));
     assertNotNull(metadata);
 
     final EntityContainerImpl container = metadata.getSchema(0).getEntityContainers().get(0);

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
index 38709ed..fba34da 100644
--- a/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
+++ b/odata4-lib/odata4-client-core/src/test/java/org/apache/olingo/odata4/client/core/v4/MetadataTest.java
@@ -19,34 +19,42 @@
 package org.apache.olingo.odata4.client.core.v4;
 
 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.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import java.util.List;
-import org.apache.olingo.odata4.client.api.data.EdmSimpleType;
 import org.apache.olingo.odata4.client.core.AbstractTest;
 import org.apache.olingo.odata4.client.core.ODataV4Client;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImportImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.ActionImpl;
+import org.apache.olingo.odata4.client.core.edm.v4.EdmTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationsImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.EdmMetadataImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.EdmTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityContainerImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.EntitySetImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImportImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
 import org.apache.olingo.odata4.client.core.edm.xml.v4.SingletonImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.Apply;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.Collection;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.Path;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.Apply;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.Collection;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.Path;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+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.EdmFunctionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
 import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+import static org.junit.Assert.assertNull;
 import org.junit.Test;
 
 public class MetadataTest extends AbstractTest {
@@ -58,73 +66,70 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void parse() {
-    final EdmMetadataImpl metadata = getClient().getReader().
+    final Edm edm = getClient().getReader().
             readMetadata(getClass().getResourceAsStream("metadata.xml"));
-    assertNotNull(metadata);
+    assertNotNull(edm);
 
     // 1. Enum
-    final EnumTypeImpl responseEnumType = metadata.getSchema(0).getEnumType("ResponseType");
+    final EdmEnumType responseEnumType = edm.getEnumType(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "ResponseType"));
     assertNotNull(responseEnumType);
-    assertEquals(6, responseEnumType.getMembers().size());
-    assertEquals(3, responseEnumType.getMember("Accepted").getValue().intValue());
-    assertEquals("Accepted", responseEnumType.getMember(3).getName());
-
-    final EdmTypeImpl responseType = new EdmTypeImpl(metadata,
-            "Microsoft.Exchange.Services.OData.Model.ResponseType");
-    assertNotNull(responseType);
-    assertFalse(responseType.isCollection());
-    assertFalse(responseType.isSimpleType());
-    assertTrue(responseType.isEnumType());
-    assertFalse(responseType.isComplexType());
-    assertFalse(responseType.isEntityType());
+    assertEquals(6, responseEnumType.getMemberNames().size());
+    assertEquals("3", responseEnumType.getMember("Accepted").getValue());
+    assertEquals(EdmTypeKind.ENUM, responseEnumType.getKind());
 
     // 2. Complex
-    final ComplexTypeImpl responseStatus = metadata.getSchema(0).getComplexType("ResponseStatus");
+    final EdmComplexType responseStatus = edm.getComplexType(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "ResponseStatus"));
     assertNotNull(responseStatus);
-    assertTrue(responseStatus.getNavigationProperties().isEmpty());
-    assertEquals(EdmSimpleType.DateTimeOffset,
-            EdmSimpleType.fromValue(responseStatus.getProperty("Time").getType()));
+    assertTrue(responseStatus.getNavigationPropertyNames().isEmpty());
+    assertEquals("Recipient", responseStatus.getBaseType().getName());
+    assertEquals(EdmPrimitiveTypeKind.DateTimeOffset.getEdmPrimitiveTypeInstance(),
+            responseStatus.getProperty("Time").getType());
 
     // 3. Entity
-    final EntityTypeImpl user = metadata.getSchema(0).getEntityType("User");
+    final EdmEntityType user = edm.getEntityType(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "User"));
     assertNotNull(user);
-    assertEquals("Microsoft.Exchange.Services.OData.Model.Entity", user.getBaseType());
-    assertFalse(user.getProperties().isEmpty());
-    assertFalse(user.getNavigationProperties().isEmpty());
-    assertEquals("Microsoft.Exchange.Services.OData.Model.Folder", user.getNavigationProperty("Inbox").getType());
+    final EdmEntityType entity = edm.getEntityType(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "Entity"));
+    assertEquals(entity, user.getBaseType());
+    assertFalse(user.getPropertyNames().isEmpty());
+    assertFalse(user.getNavigationPropertyNames().isEmpty());
+    final EdmEntityType folder = edm.getEntityType(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "Folder"));
+    assertEquals(folder, user.getNavigationProperty("Inbox").getType());
 
     // 4. Action
-    final List<ActionImpl> moves = metadata.getSchema(0).getActions("Move");
-    assertFalse(moves.isEmpty());
-    ActionImpl move = null;
-    for (ActionImpl action : moves) {
-      if ("Microsoft.Exchange.Services.OData.Model.EmailMessage".equals(action.getReturnType().getType())) {
-        move = action;
-      }
-    }
+    final EdmAction move = edm.getAction(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "Move"),
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "Folder"),
+            false);
     assertNotNull(move);
     assertTrue(move.isBound());
-    assertEquals("bindingParameter", move.getEntitySetPath());
-    assertEquals(2, move.getParameters().size());
-    assertEquals("Microsoft.Exchange.Services.OData.Model.EmailMessage", move.getParameters().get(0).getType());
+    assertEquals(2, move.getParameterNames().size());
+    assertEquals(
+            EdmPrimitiveTypeKind.String.getEdmPrimitiveTypeInstance(), move.getParameter("DestinationId").getType());
 
     // 5. EntityContainer
-    final EntityContainerImpl container = metadata.getSchema(0).getEntityContainer();
+    final EdmEntityContainer container = edm.getEntityContainer(
+            new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "EntityContainer"));
     assertNotNull(container);
-    final EntitySetImpl users = container.getEntitySet("Users");
+    final EdmEntitySet users = container.getEntitySet("Users");
     assertNotNull(users);
-    assertEquals(metadata.getSchema(0).getNamespace() + "." + user.getName(), users.getEntityType());
-    assertEquals(user.getNavigationProperties().size(), users.getNavigationPropertyBindings().size());
+    assertEquals(edm.getEntityType(new FullQualifiedName(container.getNamespace(), "User")),
+            users.getEntityType());
+    assertEquals(container.getEntitySet("Folders"), users.getRelatedBindingTarget("Folders"));
   }
 
   @Test
   public void demo() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("demo-metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("demo-metadata.xml"));
     assertNotNull(metadata);
 
     assertFalse(metadata.getSchema(0).getAnnotationsList().isEmpty());
-    AnnotationsImpl annots = metadata.getSchema(0).getAnnotationsList("ODataDemo.DemoService/Suppliers");
+    final AnnotationsImpl annots = metadata.getSchema(0).getAnnotationsList("ODataDemo.DemoService/Suppliers");
     assertNotNull(annots);
     assertFalse(annots.getAnnotations().isEmpty());
     assertEquals(ConstExprConstructImpl.Type.String,
@@ -135,8 +140,8 @@ public class MetadataTest extends AbstractTest {
 
   @Test
   public void multipleSchemas() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("northwind-metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("northwind-metadata.xml"));
     assertNotNull(metadata);
 
     final SchemaImpl first = metadata.getSchema("NorthwindModel");
@@ -159,8 +164,8 @@ public class MetadataTest extends AbstractTest {
    */
   @Test
   public void fromdoc1() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("fromdoc1-metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("fromdoc1-metadata.xml"));
     assertNotNull(metadata);
 
     assertFalse(metadata.getReferences().isEmpty());
@@ -169,7 +174,6 @@ public class MetadataTest extends AbstractTest {
     final EntityTypeImpl product = metadata.getSchema(0).getEntityType("Product");
     assertTrue(product.isHasStream());
     assertEquals("UoM.ISOCurrency", product.getProperty("Price").getAnnotation().getTerm());
-    //assertEquals("Currency", product.getProperty("Price").getAnnotation().));
     assertEquals("Products", product.getNavigationProperty("Supplier").getPartner());
 
     final EntityTypeImpl category = metadata.getSchema(0).getEntityType("Category");
@@ -198,6 +202,31 @@ public class MetadataTest extends AbstractTest {
     assertNotNull(functionImport);
     assertEquals(metadata.getSchema(0).getNamespace() + "." + productsByRating.getName(),
             functionImport.getFunction());
+
+    // Now let's go high-level
+    final Edm edm = getClient().getReader().
+            readMetadata(getClass().getResourceAsStream("fromdoc1-metadata.xml"));
+    assertNotNull(edm);
+
+    final EdmFunctionImportInfo fiInfo = edm.getServiceMetadata().getFunctionImportInfos().get(0);
+    final EdmEntityContainer demoService = edm.getEntityContainer(
+            new FullQualifiedName(metadata.getSchema(0).getNamespace(), fiInfo.getEntityContainerName()));
+    assertNotNull(demoService);
+    final EdmFunctionImport fi = demoService.getFunctionImport(fiInfo.getFunctionImportName());
+    assertNotNull(fi);
+    assertEquals(demoService.getEntitySet("Products"), fi.getReturnedEntitySet());
+
+    final EdmFunction function = edm.getFunction(
+            new FullQualifiedName(metadata.getSchema(0).getNamespace(), "ProductsByRating"),
+            null, Boolean.FALSE, null);
+    assertNotNull(function);
+    assertEquals(function.getName(), fi.getFunction(null).getName());
+    assertEquals(function.getNamespace(), fi.getFunction(null).getNamespace());
+    assertEquals(function.getParameterNames(), fi.getFunction(null).getParameterNames());
+    assertEquals(function.getReturnType().getType().getName(),
+            fi.getFunction(null).getReturnType().getType().getName());
+    assertEquals(function.getReturnType().getType().getNamespace(),
+            fi.getFunction(null).getReturnType().getType().getNamespace());
   }
 
   /**
@@ -205,8 +234,8 @@ public class MetadataTest extends AbstractTest {
    */
   @Test
   public void fromdoc2() {
-    final EdmMetadataImpl metadata = getClient().getReader().
-            readMetadata(getClass().getResourceAsStream("fromdoc2-metadata.xml"));
+    final XMLMetadataImpl metadata = getClient().getDeserializer().
+            toMetadata(getClass().getResourceAsStream("fromdoc2-metadata.xml"));
     assertNotNull(metadata);
 
     // Check displayName
@@ -253,7 +282,7 @@ public class MetadataTest extends AbstractTest {
    */
   @Test
   public void fromdoc3() {
-    final EdmMetadataImpl metadata = getClient().getReader().
+    final Edm metadata = getClient().getReader().
             readMetadata(getClass().getResourceAsStream("fromdoc3-metadata.xml"));
     assertNotNull(metadata);
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/demo-metadata.xml
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/demo-metadata.xml b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/demo-metadata.xml
index 8296468..9b21e2f 100644
--- a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/demo-metadata.xml
+++ b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/demo-metadata.xml
@@ -19,4 +19,145 @@
     under the License.
 
 -->
-<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"><edmx:DataServices><Schema Namespace="ODataDemo" xmlns="http://docs.oasis-open.org/odata/ns/edm"><EntityType Name="Product"><Key><PropertyRef Name="ID" /></Key><Property Name="ID" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" /><Property Name="Description" Type="Edm.String" /><Property Name="ReleaseDate" Type="Edm.DateTimeOffset" Nullable="false" /><Property Name="DiscontinuedDate" Type="Edm.DateTimeOffset" /><Property Name="Rating" Type="Edm.Int16" Nullable="false" /><Property Name="Price" Type="Edm.Double" Nullable="false" /><NavigationProperty Name="Categories" Type="Collection(ODataDemo.Category)" Partner="Products" /><NavigationProperty Name="Supplier" Type="ODataDemo.Supplier" Partner="Products" /><NavigationProperty Name="ProductDetail" Type="ODataDemo.ProductDetail" Partner="Product" /></EntityType><EntityType Name="FeaturedProduct" BaseType="ODataDemo.Product"><Navig
 ationProperty Name="Advertisement" Type="ODataDemo.Advertisement" Partner="FeaturedProduct" /></EntityType><EntityType Name="ProductDetail"><Key><PropertyRef Name="ProductID" /></Key><Property Name="ProductID" Type="Edm.Int32" Nullable="false" /><Property Name="Details" Type="Edm.String" /><NavigationProperty Name="Product" Type="ODataDemo.Product" Partner="ProductDetail" /></EntityType><EntityType Name="Category" OpenType="true"><Key><PropertyRef Name="ID" /></Key><Property Name="ID" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" /><NavigationProperty Name="Products" Type="Collection(ODataDemo.Product)" Partner="Categories" /></EntityType><EntityType Name="Supplier"><Key><PropertyRef Name="ID" /></Key><Property Name="ID" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" /><Property Name="Address" Type="ODataDemo.Address" /><Property Name="Location" Type="Edm.GeographyPoint" SRID="Variable" /><Property Name="Concurrency" Type="E
 dm.Int32" ConcurrencyMode="Fixed" Nullable="false" /><NavigationProperty Name="Products" Type="Collection(ODataDemo.Product)" Partner="Supplier" /></EntityType><ComplexType Name="Address"><Property Name="Street" Type="Edm.String" /><Property Name="City" Type="Edm.String" /><Property Name="State" Type="Edm.String" /><Property Name="ZipCode" Type="Edm.String" /><Property Name="Country" Type="Edm.String" /></ComplexType><EntityType Name="Person"><Key><PropertyRef Name="ID" /></Key><Property Name="ID" Type="Edm.Int32" Nullable="false" /><Property Name="Name" Type="Edm.String" /><NavigationProperty Name="PersonDetail" Type="ODataDemo.PersonDetail" Partner="Person" /></EntityType><EntityType Name="Customer" BaseType="ODataDemo.Person"><Property Name="TotalExpense" Type="Edm.Decimal" Nullable="false" /></EntityType><EntityType Name="Employee" BaseType="ODataDemo.Person"><Property Name="EmployeeID" Type="Edm.Int64" Nullable="false" /><Property Name="HireDate" Type="Edm.DateTimeOffset" Nulla
 ble="false" /><Property Name="Salary" Type="Edm.Single" Nullable="false" /></EntityType><EntityType Name="PersonDetail"><Key><PropertyRef Name="PersonID" /></Key><Property Name="PersonID" Type="Edm.Int32" Nullable="false" /><Property Name="Age" Type="Edm.Byte" Nullable="false" /><Property Name="Gender" Type="Edm.Boolean" Nullable="false" /><Property Name="Phone" Type="Edm.String" /><Property Name="Address" Type="ODataDemo.Address" /><Property Name="Photo" Type="Edm.Stream" Nullable="false" /><NavigationProperty Name="Person" Type="ODataDemo.Person" Partner="PersonDetail" /></EntityType><EntityType Name="Advertisement" HasStream="true"><Key><PropertyRef Name="ID" /></Key><Property Name="ID" Type="Edm.Guid" Nullable="false" /><Property Name="Name" Type="Edm.String" /><Property Name="AirDate" Type="Edm.DateTimeOffset" Nullable="false" /><NavigationProperty Name="FeaturedProduct" Type="ODataDemo.FeaturedProduct" Partner="Advertisement" /></EntityType><EntityContainer Name="DemoService">
 <EntitySet Name="Products" EntityType="ODataDemo.Product"><NavigationPropertyBinding Path="ODataDemo.FeaturedProduct/Advertisement" Target="Advertisements" /><NavigationPropertyBinding Path="Categories" Target="Categories" /><NavigationPropertyBinding Path="Supplier" Target="Suppliers" /><NavigationPropertyBinding Path="ProductDetail" Target="ProductDetails" /></EntitySet><EntitySet Name="ProductDetails" EntityType="ODataDemo.ProductDetail"><NavigationPropertyBinding Path="Product" Target="Products" /></EntitySet><EntitySet Name="Categories" EntityType="ODataDemo.Category"><NavigationPropertyBinding Path="Products" Target="Products" /></EntitySet><EntitySet Name="Suppliers" EntityType="ODataDemo.Supplier"><NavigationPropertyBinding Path="Products" Target="Products" /></EntitySet><EntitySet Name="Persons" EntityType="ODataDemo.Person"><NavigationPropertyBinding Path="PersonDetail" Target="PersonDetails" /></EntitySet><EntitySet Name="PersonDetails" EntityType="ODataDemo.PersonDetail"
 ><NavigationPropertyBinding Path="Person" Target="Persons" /></EntitySet><EntitySet Name="Advertisements" EntityType="ODataDemo.Advertisement"><NavigationPropertyBinding Path="FeaturedProduct" Target="Products" /></EntitySet></EntityContainer><Annotations Target="ODataDemo.DemoService"><Annotation Term="Org.OData.Display.V1.Description" String="This is a sample OData service with vocabularies" /></Annotations><Annotations Target="ODataDemo.Product"><Annotation Term="Org.OData.Display.V1.Description" String="All Products available in the online store" /></Annotations><Annotations Target="ODataDemo.Product/Name"><Annotation Term="Org.OData.Display.V1.DisplayName" String="Product Name" /></Annotations><Annotations Target="ODataDemo.DemoService/Suppliers"><Annotation Term="Org.OData.Publication.V1.PublisherName" String="Microsoft Corp." /><Annotation Term="Org.OData.Publication.V1.PublisherId" String="MSFT" /><Annotation Term="Org.OData.Publication.V1.Keywords" String="Inventory, Suppli
 er, Advertisers, Sales, Finance" /><Annotation Term="Org.OData.Publication.V1.AttributionUrl" String="http://www.odata.org/" /><Annotation Term="Org.OData.Publication.V1.AttributionDescription" String="All rights reserved" /><Annotation Term="Org.OData.Publication.V1.DocumentationUrl " String="http://www.odata.org/" /><Annotation Term="Org.OData.Publication.V1.TermsOfUseUrl" String="All rights reserved" /><Annotation Term="Org.OData.Publication.V1.PrivacyPolicyUrl" String="http://www.odata.org/" /><Annotation Term="Org.OData.Publication.V1.LastModified" String="4/2/2013" /><Annotation Term="Org.OData.Publication.V1.ImageUrl " String="http://www.odata.org/" /></Annotations></Schema></edmx:DataServices></edmx:Edmx>
\ No newline at end of file
+<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
+  <edmx:DataServices>
+    <Schema Namespace="ODataDemo" xmlns="http://docs.oasis-open.org/odata/ns/edm">
+      <EntityType Name="Product">
+        <Key>
+          <PropertyRef Name="ID" />
+        </Key>
+        <Property Name="ID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="Description" Type="Edm.String" />
+        <Property Name="ReleaseDate" Type="Edm.DateTimeOffset" Nullable="false" />
+        <Property Name="DiscontinuedDate" Type="Edm.DateTimeOffset" />
+        <Property Name="Rating" Type="Edm.Int16" Nullable="false" />
+        <Property Name="Price" Type="Edm.Double" Nullable="false" />
+        <NavigationProperty Name="Categories" Type="Collection(ODataDemo.Category)" Partner="Products" />
+        <NavigationProperty Name="Supplier" Type="ODataDemo.Supplier" Partner="Products" />
+        <NavigationProperty Name="ProductDetail" Type="ODataDemo.ProductDetail" Partner="Product" />
+      </EntityType>
+      <EntityType Name="FeaturedProduct" BaseType="ODataDemo.Product">
+        <NavigationProperty Name="Advertisement" Type="ODataDemo.Advertisement" Partner="FeaturedProduct" />
+      </EntityType>
+      <EntityType Name="ProductDetail">
+        <Key>
+          <PropertyRef Name="ProductID" />
+        </Key>
+        <Property Name="ProductID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Details" Type="Edm.String" />
+        <NavigationProperty Name="Product" Type="ODataDemo.Product" Partner="ProductDetail" />
+      </EntityType>
+      <EntityType Name="Category" OpenType="true">
+        <Key>
+          <PropertyRef Name="ID" />
+        </Key>
+        <Property Name="ID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <NavigationProperty Name="Products" Type="Collection(ODataDemo.Product)" Partner="Categories" />
+      </EntityType>
+      <EntityType Name="Supplier">
+        <Key>
+          <PropertyRef Name="ID" />
+        </Key>
+        <Property Name="ID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="Address" Type="ODataDemo.Address" />
+        <Property Name="Location" Type="Edm.GeographyPoint" SRID="Variable" />
+        <Property Name="Concurrency" Type="Edm.Int32" ConcurrencyMode="Fixed" Nullable="false" />
+        <NavigationProperty Name="Products" Type="Collection(ODataDemo.Product)" Partner="Supplier" />
+      </EntityType>
+      <ComplexType Name="Address">
+        <Property Name="Street" Type="Edm.String" />
+        <Property Name="City" Type="Edm.String" />
+        <Property Name="State" Type="Edm.String" />
+        <Property Name="ZipCode" Type="Edm.String" />
+        <Property Name="Country" Type="Edm.String" />
+      </ComplexType>
+      <EntityType Name="Person">
+        <Key>
+          <PropertyRef Name="ID" />
+        </Key>
+        <Property Name="ID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <NavigationProperty Name="PersonDetail" Type="ODataDemo.PersonDetail" Partner="Person" />
+      </EntityType>
+      <EntityType Name="Customer" BaseType="ODataDemo.Person">
+        <Property Name="TotalExpense" Type="Edm.Decimal" Nullable="false" />
+      </EntityType>
+      <EntityType Name="Employee" BaseType="ODataDemo.Person">
+        <Property Name="EmployeeID" Type="Edm.Int64" Nullable="false" />
+        <Property Name="HireDate" Type="Edm.DateTimeOffset" Nullable="false" />
+        <Property Name="Salary" Type="Edm.Single" Nullable="false" />
+      </EntityType>
+      <EntityType Name="PersonDetail">
+        <Key>
+          <PropertyRef Name="PersonID" />
+        </Key>
+        <Property Name="PersonID" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Age" Type="Edm.Byte" Nullable="false" />
+        <Property Name="Gender" Type="Edm.Boolean" Nullable="false" />
+        <Property Name="Phone" Type="Edm.String" />
+        <Property Name="Address" Type="ODataDemo.Address" />
+        <Property Name="Photo" Type="Edm.Stream" Nullable="false" />
+        <NavigationProperty Name="Person" Type="ODataDemo.Person" Partner="PersonDetail" />
+      </EntityType>
+      <EntityType Name="Advertisement" HasStream="true">
+        <Key>
+          <PropertyRef Name="ID" />
+        </Key>
+        <Property Name="ID" Type="Edm.Guid" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <Property Name="AirDate" Type="Edm.DateTimeOffset" Nullable="false" />
+        <NavigationProperty Name="FeaturedProduct" Type="ODataDemo.FeaturedProduct" Partner="Advertisement" />
+      </EntityType>
+      <EntityContainer Name="DemoService">
+        <EntitySet Name="Products" EntityType="ODataDemo.Product">
+          <NavigationPropertyBinding Path="ODataDemo.FeaturedProduct/Advertisement" Target="Advertisements" />
+          <NavigationPropertyBinding Path="Categories" Target="Categories" />
+          <NavigationPropertyBinding Path="Supplier" Target="Suppliers" />
+          <NavigationPropertyBinding Path="ProductDetail" Target="ProductDetails" />
+        </EntitySet>
+        <EntitySet Name="ProductDetails" EntityType="ODataDemo.ProductDetail">
+          <NavigationPropertyBinding Path="Product" Target="Products" />
+        </EntitySet>
+        <EntitySet Name="Categories" EntityType="ODataDemo.Category">
+          <NavigationPropertyBinding Path="Products" Target="Products" />
+        </EntitySet>
+        <EntitySet Name="Suppliers" EntityType="ODataDemo.Supplier">
+          <NavigationPropertyBinding Path="Products" Target="Products" />
+        </EntitySet>
+        <EntitySet Name="Persons" EntityType="ODataDemo.Person">
+          <NavigationPropertyBinding Path="PersonDetail" Target="PersonDetails" />
+        </EntitySet>
+        <EntitySet Name="PersonDetails" EntityType="ODataDemo.PersonDetail">
+          <NavigationPropertyBinding Path="Person" Target="Persons" />
+        </EntitySet>
+        <EntitySet Name="Advertisements" EntityType="ODataDemo.Advertisement">
+          <NavigationPropertyBinding Path="FeaturedProduct" Target="Products" />
+        </EntitySet>
+      </EntityContainer>
+      <Annotations Target="ODataDemo.DemoService">
+        <Annotation Term="Org.OData.Display.V1.Description" String="This is a sample OData service with vocabularies" />
+      </Annotations>
+      <Annotations Target="ODataDemo.Product">
+        <Annotation Term="Org.OData.Display.V1.Description" String="All Products available in the online store" />
+      </Annotations>
+      <Annotations Target="ODataDemo.Product/Name">
+        <Annotation Term="Org.OData.Display.V1.DisplayName" String="Product Name" />
+      </Annotations>
+      <Annotations Target="ODataDemo.DemoService/Suppliers">
+        <Annotation Term="Org.OData.Publication.V1.PublisherName" String="Microsoft Corp." />
+        <Annotation Term="Org.OData.Publication.V1.PublisherId" String="MSFT" />
+        <Annotation Term="Org.OData.Publication.V1.Keywords" String="Inventory, Supplier, Advertisers, Sales, Finance" />
+        <Annotation Term="Org.OData.Publication.V1.AttributionUrl" String="http://www.odata.org/" />
+        <Annotation Term="Org.OData.Publication.V1.AttributionDescription" String="All rights reserved" />
+        <Annotation Term="Org.OData.Publication.V1.DocumentationUrl " String="http://www.odata.org/" />
+        <Annotation Term="Org.OData.Publication.V1.TermsOfUseUrl" String="All rights reserved" />
+        <Annotation Term="Org.OData.Publication.V1.PrivacyPolicyUrl" String="http://www.odata.org/" />
+        <Annotation Term="Org.OData.Publication.V1.LastModified" String="4/2/2013" />
+        <Annotation Term="Org.OData.Publication.V1.ImageUrl " String="http://www.odata.org/" />
+      </Annotations>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/fromdoc1-metadata.xml
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/fromdoc1-metadata.xml b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/fromdoc1-metadata.xml
index d2f99e3..ed46844 100644
--- a/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/fromdoc1-metadata.xml
+++ b/odata4-lib/odata4-client-core/src/test/resources/org/apache/olingo/odata4/client/core/v4/fromdoc1-metadata.xml
@@ -28,6 +28,16 @@
   </edmx:Reference>
   <edmx:DataServices>
     <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="ODataDemo">
+      <TypeDefinition Name="Length" UnderlyingType="Edm.Int32">
+        <Annotation Term="Org.OData.Measures.V1.Unit" String="Centimeters"/>
+      </TypeDefinition>
+      <TypeDefinition Name="Weight" UnderlyingType="Edm.Int32">
+        <Annotation Term="Org.OData.Measures.V1.Unit" String="Kilograms"/>
+      </TypeDefinition>
+      <ComplexType Name="Size">
+        <Property Name="Height" Type="Self.Length" />
+        <Property Name="Weight" Type="Self.Weight" />
+      </ComplexType>
       <EntityType Name="Product" HasStream="true">
         <Key>
           <PropertyRef Name="ID"/>


[03/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationDeserializer.java
new file mode 100644
index 0000000..0de5a19
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationDeserializer.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml.v3;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class AssociationDeserializer extends AbstractEdmDeserializer<AssociationImpl> {
+
+  @Override
+  protected AssociationImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AssociationImpl association = new AssociationImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          association.setName(jp.nextTextValue());
+        } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          association.setReferentialConstraint(jp.readValueAs( ReferentialConstraintImpl.class));
+        } else if ("End".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          association.getEnds().add(jp.readValueAs( AssociationEndImpl.class));
+        }
+      }
+    }
+
+    return association;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
new file mode 100644
index 0000000..e6494b4
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationEndImpl.java
@@ -0,0 +1,81 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationEnd;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class AssociationEndImpl extends AbstractEdmItem implements AssociationEnd {
+
+  private static final long serialVersionUID = 3305394053564979376L;
+
+  @JsonProperty(value = "Type", required = true)
+  private String type;
+
+  @JsonProperty(value = "Role")
+  private String role;
+
+  @JsonProperty(value = "Multiplicity")
+  private String multiplicity;
+
+  @JsonProperty(value = "OnDelete")
+  private OnDelete onDelete;
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public String getRole() {
+    return role;
+  }
+
+  @Override
+  public void setRole(final String role) {
+    this.role = role;
+  }
+
+  @Override
+  public String getMultiplicity() {
+    return multiplicity;
+  }
+
+  @Override
+  public void setMultiplicity(final String multiplicity) {
+    this.multiplicity = multiplicity;
+  }
+
+  @Override
+  public OnDelete getOnDelete() {
+    return onDelete;
+  }
+
+  @Override
+  public void setOnDelete(final OnDelete onDelete) {
+    this.onDelete = onDelete;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.java
new file mode 100644
index 0000000..35572bd
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationImpl.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.client.core.edm.xml.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Association;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ReferentialConstraint;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+@JsonDeserialize(using = AssociationDeserializer.class)
+public class AssociationImpl extends AbstractEdmItem implements Association {
+
+  private static final long serialVersionUID = 73763231919532482L;
+
+  private String name;
+
+  private ReferentialConstraint referentialConstraint;
+
+  private List<AssociationEndImpl> ends = new ArrayList<AssociationEndImpl>();
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public ReferentialConstraint getReferentialConstraint() {
+    return referentialConstraint;
+  }
+
+  @Override
+  public void setReferentialConstraint(final ReferentialConstraint referentialConstraint) {
+    this.referentialConstraint = referentialConstraint;
+  }
+
+  @Override
+  public List<AssociationEndImpl> getEnds() {
+    return ends;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetDeserializer.java
new file mode 100644
index 0000000..16cae5a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetDeserializer.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.client.core.edm.xml.v3;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class AssociationSetDeserializer extends AbstractEdmDeserializer<AssociationSetImpl> {
+
+  @Override
+  protected AssociationSetImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AssociationSetImpl associationSet = new AssociationSetImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          associationSet.setName(jp.nextTextValue());
+        } else if ("Association".equals(jp.getCurrentName())) {
+          associationSet.setAssociation(jp.nextTextValue());
+        } else if ("End".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          associationSet.getEnds().add(jp.readValueAs( AssociationSetEndImpl.class));
+        }
+      }
+    }
+
+    return associationSet;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
new file mode 100644
index 0000000..08cc6b2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetEndImpl.java
@@ -0,0 +1,54 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationSetEnd;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class AssociationSetEndImpl extends AbstractEdmItem implements AssociationSetEnd {
+
+  private static final long serialVersionUID = -6238344152962217446L;
+
+  @JsonProperty("Role")
+  private String role;
+
+  @JsonProperty(value = "EntitySet", required = true)
+  private String entitySet;
+
+  @Override
+  public String getRole() {
+    return role;
+  }
+
+  @Override
+  public void setRole(final String role) {
+    this.role = role;
+  }
+
+  @Override
+  public String getEntitySet() {
+    return entitySet;
+  }
+
+  @Override
+  public void setEntitySet(final String entitySet) {
+    this.entitySet = entitySet;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java
new file mode 100644
index 0000000..70ca595
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/AssociationSetImpl.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.AssociationSet;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+@JsonDeserialize(using = AssociationSetDeserializer.class)
+public class AssociationSetImpl extends AbstractEdmItem implements AssociationSet {
+
+  private static final long serialVersionUID = 1248430921598774799L;
+
+  private String name;
+
+  private String association;
+
+  private List<AssociationSetEndImpl> ends = new ArrayList<AssociationSetEndImpl>();
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getAssociation() {
+    return association;
+  }
+
+  @Override
+  public void setAssociation(final String association) {
+    this.association = association;
+  }
+
+  @Override
+  public List<AssociationSetEndImpl> getEnds() {
+    return ends;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ComplexTypeImpl.java
new file mode 100644
index 0000000..276cac1
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ComplexTypeImpl.java
@@ -0,0 +1,54 @@
+/*
+ * 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.xml.v3;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractComplexType;
+
+public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
+
+  private static final long serialVersionUID = -1251230308269425962L;
+
+  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+
+  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+
+  @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
+  public List<PropertyImpl> getProperties() {
+    return properties;
+  }
+
+  @Override
+  public NavigationPropertyImpl getNavigationProperty(String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
+  }
+
+  @Override
+  public List<NavigationPropertyImpl> getNavigationProperties() {
+    return navigationProperties;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
new file mode 100644
index 0000000..78c68ca
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/DataServicesImpl.java
@@ -0,0 +1,36 @@
+/*
+ * 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.xml.v3;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractDataServices;
+
+public class DataServicesImpl extends AbstractDataServices {
+
+  private static final long serialVersionUID = 633129618050875211L;
+
+  private final List<SchemaImpl> schemas = new ArrayList<SchemaImpl>();
+
+  @Override
+  public List<SchemaImpl> getSchemas() {
+    return schemas;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EdmxImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EdmxImpl.java
new file mode 100644
index 0000000..a64d5eb
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EdmxImpl.java
@@ -0,0 +1,32 @@
+/*
+ * 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.xml.v3;
+
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmx;
+
+public class EdmxImpl extends AbstractEdmx {
+
+  private static final long serialVersionUID = -8031883176876401375L;
+
+  @Override
+  public DataServicesImpl getDataServices() {
+    return (DataServicesImpl) super.getDataServices();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
new file mode 100644
index 0000000..8ac2f16
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityContainerImpl.java
@@ -0,0 +1,65 @@
+/*
+ * 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.xml.v3;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityContainer;
+
+public class EntityContainerImpl extends AbstractEntityContainer {
+
+  private static final long serialVersionUID = 8934431875078180370L;
+
+  private final List<EntitySetImpl> entitySets = new ArrayList<EntitySetImpl>();
+
+  private final List<AssociationSetImpl> associationSets = new ArrayList<AssociationSetImpl>();
+
+  private final List<FunctionImportImpl> functionImports = new ArrayList<FunctionImportImpl>();
+
+  @Override
+  public EntitySetImpl getEntitySet(final String name) {
+    return (EntitySetImpl) super.getEntitySet(name);
+  }
+
+  @Override
+  public List<EntitySetImpl> getEntitySets() {
+    return entitySets;
+  }
+
+  public List<AssociationSetImpl> getAssociationSets() {
+    return associationSets;
+  }
+
+  @Override
+  public FunctionImportImpl getFunctionImport(final String name) {
+    return (FunctionImportImpl) super.getFunctionImport(name);
+  }
+
+  @Override
+  @SuppressWarnings("unchecked")
+  public List<FunctionImportImpl> getFunctionImports(final String name) {
+    return (List<FunctionImportImpl>) super.getFunctionImports(name);
+  }
+
+  @Override
+  public List<FunctionImportImpl> getFunctionImports() {
+    return functionImports;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
new file mode 100644
index 0000000..bc28cc6
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntitySetImpl.java
@@ -0,0 +1,27 @@
+/*
+ * 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.xml.v3;
+
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntitySet;
+
+public class EntitySetImpl extends AbstractEntitySet {
+
+  private static final long serialVersionUID = 5570833733884884012L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityTypeImpl.java
new file mode 100644
index 0000000..7f10fa6
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EntityTypeImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml.v3;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityType;
+
+public class EntityTypeImpl extends AbstractEntityType {
+
+  private static final long serialVersionUID = 8727765036150269547L;
+
+  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+
+  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+
+  @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
+  public List<PropertyImpl> getProperties() {
+    return properties;
+  }
+
+  @Override
+  public NavigationPropertyImpl getNavigationProperty(final String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
+  }
+
+  @Override
+  public List<NavigationPropertyImpl> getNavigationProperties() {
+    return navigationProperties;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
new file mode 100644
index 0000000..9185f45
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/EnumTypeImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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.xml.v3;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEnumType;
+
+public class EnumTypeImpl extends AbstractEnumType {
+
+  private static final long serialVersionUID = 8967396195669128419L;
+
+  private final List<MemberImpl> members = new ArrayList<MemberImpl>();
+
+  @Override
+  public List<MemberImpl> getMembers() {
+    return members;
+  }
+
+  @Override
+  public MemberImpl getMember(final String name) {
+    return (MemberImpl) super.getMember(name);
+  }
+
+  @Override
+  public MemberImpl getMember(final Integer value) {
+    return (MemberImpl) super.getMember(value);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportDeserializer.java
new file mode 100644
index 0000000..bdb5a1c
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportDeserializer.java
@@ -0,0 +1,67 @@
+/*
+ * 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.xml.v3;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class FunctionImportDeserializer extends AbstractEdmDeserializer<FunctionImportImpl> {
+
+  @Override
+  protected FunctionImportImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final FunctionImportImpl funcImp = new FunctionImportImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          funcImp.setName(jp.nextTextValue());
+        } else if ("ReturnType".equals(jp.getCurrentName())) {
+          funcImp.setReturnType(jp.nextTextValue());
+        } else if ("EntitySet".equals(jp.getCurrentName())) {
+          funcImp.setEntitySet(jp.nextTextValue());
+        } else if ("EntitySetPath".equals(jp.getCurrentName())) {
+          funcImp.setEntitySetPath(jp.nextTextValue());
+        } else if ("IsComposable".equals(jp.getCurrentName())) {
+          funcImp.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("IsSideEffecting".equals(jp.getCurrentName())) {
+          funcImp.setSideEffecting(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("IsBindable".equals(jp.getCurrentName())) {
+          funcImp.setBindable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("IsAlwaysBindable".equals(jp.getCurrentName())) {
+          funcImp.setAlwaysBindable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("HttpMethod".equals(jp.getCurrentName())) {
+          funcImp.setHttpMethod(jp.nextTextValue());
+        } else if ("Parameter".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          funcImp.getParameters().add(jp.readValueAs( ParameterImpl.class));
+        }
+      }
+    }
+
+    return funcImp;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java
new file mode 100644
index 0000000..234b623
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/FunctionImportImpl.java
@@ -0,0 +1,146 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.FunctionImport;
+
+@JsonDeserialize(using = FunctionImportDeserializer.class)
+public class FunctionImportImpl implements FunctionImport {
+
+  private static final long serialVersionUID = -6214472528425935461L;
+
+  private String name;
+
+  private String returnType;
+
+  private String entitySet;
+
+  private String entitySetPath;
+
+  private boolean composable;
+
+  private boolean sideEffecting = true;
+
+  private boolean bindable;
+
+  private boolean alwaysBindable;
+
+  private String httpMethod;
+
+  private final List<ParameterImpl> parameters = new ArrayList<ParameterImpl>();
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getReturnType() {
+    return returnType;
+  }
+
+  @Override
+  public void setReturnType(final String returnType) {
+    this.returnType = returnType;
+  }
+
+  @Override
+  public String getEntitySet() {
+    return entitySet;
+  }
+
+  @Override
+  public void setEntitySet(final String entitySet) {
+    this.entitySet = entitySet;
+  }
+
+  @Override
+  public String getEntitySetPath() {
+    return entitySetPath;
+  }
+
+  @Override
+  public void setEntitySetPath(final String entitySetPath) {
+    this.entitySetPath = entitySetPath;
+  }
+
+  @Override
+  public boolean isComposable() {
+    return composable;
+  }
+
+  @Override
+  public void setComposable(final boolean composable) {
+    this.composable = composable;
+  }
+
+  @Override
+  public boolean isSideEffecting() {
+    return sideEffecting;
+  }
+
+  @Override
+  public void setSideEffecting(final boolean sideEffecting) {
+    this.sideEffecting = sideEffecting;
+  }
+
+  @Override
+  public boolean isBindable() {
+    return bindable;
+  }
+
+  @Override
+  public void setBindable(final boolean bindable) {
+    this.bindable = bindable;
+  }
+
+  @Override
+  public boolean isAlwaysBindable() {
+    return alwaysBindable;
+  }
+
+  @Override
+  public void setAlwaysBindable(final boolean alwaysBindable) {
+    this.alwaysBindable = alwaysBindable;
+  }
+
+  @Override
+  public String getHttpMethod() {
+    return httpMethod;
+  }
+
+  @Override
+  public void setHttpMethod(final String httpMethod) {
+    this.httpMethod = httpMethod;
+  }
+
+  @Override
+  public List<ParameterImpl> getParameters() {
+    return parameters;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/MemberImpl.java
new file mode 100644
index 0000000..91577f7
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/MemberImpl.java
@@ -0,0 +1,27 @@
+/*
+ * 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.xml.v3;
+
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractMember;
+
+public class MemberImpl extends AbstractMember {
+
+  private static final long serialVersionUID = 6605381518349837929L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
new file mode 100644
index 0000000..cbda596
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/NavigationPropertyImpl.java
@@ -0,0 +1,68 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.NavigationProperty;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractNavigationProperty;
+
+public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty {
+
+  private static final long serialVersionUID = -2889417442815563307L;
+
+  @JsonProperty(value = "Relationship", required = true)
+  private String relationship;
+
+  @JsonProperty(value = "ToRole", required = true)
+  private String toRole;
+
+  @JsonProperty(value = "FromRole", required = true)
+  private String fromRole;
+
+  @Override
+  public String getRelationship() {
+    return relationship;
+  }
+
+  @Override
+  public void setRelationship(final String relationship) {
+    this.relationship = relationship;
+  }
+
+  @Override
+  public String getToRole() {
+    return toRole;
+  }
+
+  @Override
+  public void setToRole(final String toRole) {
+    this.toRole = toRole;
+  }
+
+  @Override
+  public String getFromRole() {
+    return fromRole;
+  }
+
+  @Override
+  public void setFromRole(final String fromRole) {
+    this.fromRole = fromRole;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
new file mode 100644
index 0000000..d0a8559
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v3;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ParameterMode;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Parameter;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractParameter;
+
+public class ParameterImpl extends AbstractParameter implements Parameter {
+
+  private static final long serialVersionUID = 7596724999614891358L;
+
+  @JsonProperty("Mode")
+  private ParameterMode mode;
+
+  @Override
+  public ParameterMode getMode() {
+    return mode;
+  }
+
+  @Override
+  public void setMode(final ParameterMode mode) {
+    this.mode = mode;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
new file mode 100644
index 0000000..b4bf986
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
@@ -0,0 +1,96 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Property;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractProperty;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
+
+public class PropertyImpl extends AbstractProperty implements Property {
+
+  private static final long serialVersionUID = 6224524803474652100L;
+
+  @JsonProperty("FC_SourcePath")
+  private String fcSourcePath;
+
+  @JsonProperty("FC_TargetPath")
+  private String fcTargetPath;
+
+  @JsonProperty("FC_ContentKind")
+  private EdmContentKind fcContentKind = EdmContentKind.text;
+
+  @JsonProperty("FC_NsPrefix")
+  private String fcNSPrefix;
+
+  @JsonProperty("FC_NsUri")
+  private String fcNSURI;
+
+  @JsonProperty("FC_KeepInContent")
+  private boolean fcKeepInContent = true;
+
+  public String getFcSourcePath() {
+    return fcSourcePath;
+  }
+
+  public void setFcSourcePath(final String fcSourcePath) {
+    this.fcSourcePath = fcSourcePath;
+  }
+
+  public String getFcTargetPath() {
+    return fcTargetPath;
+  }
+
+  public void setFcTargetPath(final String fcTargetPath) {
+    this.fcTargetPath = fcTargetPath;
+  }
+
+  public EdmContentKind getFcContentKind() {
+    return fcContentKind;
+  }
+
+  public void setFcContentKind(final EdmContentKind fcContentKind) {
+    this.fcContentKind = fcContentKind;
+  }
+
+  public String getFcNSPrefix() {
+    return fcNSPrefix;
+  }
+
+  public void setFcNSPrefix(final String fcNSPrefix) {
+    this.fcNSPrefix = fcNSPrefix;
+  }
+
+  public String getFcNSURI() {
+    return fcNSURI;
+  }
+
+  public void setFcNSURI(final String fcNSURI) {
+    this.fcNSURI = fcNSURI;
+  }
+
+  public boolean isFcKeepInContent() {
+    return fcKeepInContent;
+  }
+
+  public void setFcKeepInContent(final boolean fcKeepInContent) {
+    this.fcKeepInContent = fcKeepInContent;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
new file mode 100644
index 0000000..5b4042a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyValueImpl.java
@@ -0,0 +1,135 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.PropertyValue;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class PropertyValueImpl extends AbstractEdmItem implements PropertyValue {
+
+  private static final long serialVersionUID = -6580934436491418564L;
+
+  @JsonProperty(value = "Property", required = true)
+  private String property;
+
+  @JsonProperty("Path")
+  private String path;
+
+  @JsonProperty("String")
+  private String string;
+
+  @JsonProperty("Int")
+  private BigInteger _int;
+
+  @JsonProperty("Float")
+  private Double _float;
+
+  @JsonProperty("Decimal")
+  private BigDecimal decimal;
+
+  @JsonProperty("Bool")
+  private Boolean bool;
+
+  @JsonProperty("DateTime")
+  private Date dateTime;
+
+  @Override
+  public String getProperty() {
+    return property;
+  }
+
+  @Override
+  public void setProperty(final String property) {
+    this.property = property;
+  }
+
+  @Override
+  public String getPath() {
+    return path;
+  }
+
+  @Override
+  public void setPath(final String path) {
+    this.path = path;
+  }
+
+  @Override
+  public String getString() {
+    return string;
+  }
+
+  @Override
+  public void setString(final String string) {
+    this.string = string;
+  }
+
+  @Override
+  public BigInteger getInt() {
+    return _int;
+  }
+
+  @Override
+  public void setInt(final BigInteger _int) {
+    this._int = _int;
+  }
+
+  @Override
+  public Double getFloat() {
+    return _float;
+  }
+
+  @Override
+  public void setFloat(final Double _float) {
+    this._float = _float;
+  }
+
+  @Override
+  public BigDecimal getDecimal() {
+    return decimal;
+  }
+
+  @Override
+  public void setDecimal(final BigDecimal decimal) {
+    this.decimal = decimal;
+  }
+
+  @Override
+  public Boolean getBool() {
+    return bool;
+  }
+
+  @Override
+  public void setBool(final Boolean bool) {
+    this.bool = bool;
+  }
+
+  @Override
+  public Date getDateTime() {
+    return dateTime;
+  }
+
+  @Override
+  public void setDateTime(final Date dateTime) {
+    this.dateTime = dateTime;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
new file mode 100644
index 0000000..af8f8ce
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintImpl.java
@@ -0,0 +1,58 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ReferentialConstraint;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ReferentialConstraintRole;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class ReferentialConstraintImpl extends AbstractEdmItem implements ReferentialConstraint {
+
+  private static final long serialVersionUID = 9067893732765127269L;
+
+  @JsonProperty(value = "Principal", required = true)
+  private ReferentialConstraintRoleImpl principal;
+
+  @JsonProperty(value = "Dependent", required = true)
+  private ReferentialConstraintRoleImpl dependent;
+
+  @Override
+  public ReferentialConstraintRoleImpl getPrincipal() {
+    return principal;
+  }
+
+  @JsonIgnore
+  @Override
+  public void setPrincipal(final ReferentialConstraintRole principal) {
+    this.principal = (ReferentialConstraintRoleImpl) principal;
+  }
+
+  @Override
+  public ReferentialConstraintRoleImpl getDependent() {
+    return dependent;
+  }
+
+  @JsonIgnore
+  @Override
+  public void setDependent(final ReferentialConstraintRole dependent) {
+    this.dependent = (ReferentialConstraintRoleImpl) dependent;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleDeserializer.java
new file mode 100644
index 0000000..b565225
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleDeserializer.java
@@ -0,0 +1,51 @@
+/*
+ * 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.xml.v3;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.PropertyRefImpl;
+
+public class ReferentialConstraintRoleDeserializer extends AbstractEdmDeserializer<ReferentialConstraintRoleImpl> {
+
+  @Override
+  protected ReferentialConstraintRoleImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final ReferentialConstraintRoleImpl refConstRole = new ReferentialConstraintRoleImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Role".equals(jp.getCurrentName())) {
+          refConstRole.setRole(jp.nextTextValue());
+        } else if ("PropertyRef".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          refConstRole.getPropertyRefs().add(jp.readValueAs( PropertyRefImpl.class));
+        }
+      }
+    }
+
+    return refConstRole;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
new file mode 100644
index 0000000..edd7ff6
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ReferentialConstraintRoleImpl.java
@@ -0,0 +1,50 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ReferentialConstraintRole;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+import org.apache.olingo.odata4.client.core.edm.xml.PropertyRefImpl;
+
+@JsonDeserialize(using = ReferentialConstraintRoleDeserializer.class)
+public class ReferentialConstraintRoleImpl extends AbstractEdmItem implements ReferentialConstraintRole {
+
+  private static final long serialVersionUID = -3712887115248634164L;
+
+  private String role;
+
+  private List<PropertyRefImpl> propertyRefs = new ArrayList<PropertyRefImpl>();
+
+  @Override
+  public String getRole() {
+    return role;
+  }
+
+  @Override
+  public void setRole(final String role) {
+    this.role = role;
+  }
+
+  public List<PropertyRefImpl> getPropertyRefs() {
+    return propertyRefs;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
new file mode 100644
index 0000000..70257b1
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/SchemaImpl.java
@@ -0,0 +1,129 @@
+/*
+ * 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.xml.v3;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractSchema;
+
+public class SchemaImpl extends AbstractSchema implements Schema {
+
+  private static final long serialVersionUID = 4453992249818796144L;
+
+  private final List<AnnotationsImpl> annotationList = new ArrayList<AnnotationsImpl>();
+
+  private final List<AssociationImpl> associations = new ArrayList<AssociationImpl>();
+
+  private final List<ComplexTypeImpl> complexTypes = new ArrayList<ComplexTypeImpl>();
+
+  private final List<EntityContainerImpl> entityContainers = new ArrayList<EntityContainerImpl>();
+
+  private final List<EntityTypeImpl> entityTypes = new ArrayList<EntityTypeImpl>();
+
+  private final List<EnumTypeImpl> enumTypes = new ArrayList<EnumTypeImpl>();
+
+  private final List<UsingImpl> usings = new ArrayList<UsingImpl>();
+
+  private final List<ValueTermImpl> valueTerms = new ArrayList<ValueTermImpl>();
+
+  public AssociationImpl getAssociation(final String name) {
+    return getOneByName(name, getAssociations());
+  }
+
+  @Override
+  public List<AnnotationsImpl> getAnnotationsList() {
+    return annotationList;
+  }
+
+  @Override
+  public AnnotationsImpl getAnnotationsList(final String target) {
+    AnnotationsImpl result = null;
+    for (AnnotationsImpl annots : getAnnotationsList()) {
+      if (target.equals(annots.getTarget())) {
+        result = annots;
+      }
+    }
+    return result;
+  }
+
+  public List<AssociationImpl> getAssociations() {
+    return associations;
+  }
+
+  public List<UsingImpl> getUsings() {
+    return usings;
+  }
+
+  public List<ValueTermImpl> getValueTerms() {
+    return valueTerms;
+  }
+
+  @Override
+  public List<EntityContainerImpl> getEntityContainers() {
+    return entityContainers;
+  }
+
+  @Override
+  public EntityContainerImpl getDefaultEntityContainer() {
+    EntityContainerImpl result = null;
+    for (EntityContainerImpl container : getEntityContainers()) {
+      if (container.isDefaultEntityContainer()) {
+        result = container;
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public EntityContainerImpl getEntityContainer(final String name) {
+    return getOneByName(name, getEntityContainers());
+  }
+
+  @Override
+  public EnumTypeImpl getEnumType(final String name) {
+    return (EnumTypeImpl) super.getEnumType(name);
+  }
+
+  @Override
+  public List<EnumTypeImpl> getEnumTypes() {
+    return enumTypes;
+  }
+
+  @Override
+  public ComplexTypeImpl getComplexType(final String name) {
+    return (ComplexTypeImpl) super.getComplexType(name);
+  }
+
+  @Override
+  public List<ComplexTypeImpl> getComplexTypes() {
+    return complexTypes;
+  }
+
+  @Override
+  public EntityTypeImpl getEntityType(final String name) {
+    return (EntityTypeImpl) super.getEntityType(name);
+  }
+
+  @Override
+  public List<EntityTypeImpl> getEntityTypes() {
+    return entityTypes;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationDeserializer.java
new file mode 100644
index 0000000..c6a10bc
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationDeserializer.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.client.core.edm.xml.v3;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class TypeAnnotationDeserializer extends AbstractEdmDeserializer<TypeAnnotationImpl> {
+
+  @Override
+  protected TypeAnnotationImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final TypeAnnotationImpl typeAnnot = new TypeAnnotationImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Term".equals(jp.getCurrentName())) {
+          typeAnnot.setTerm(jp.nextTextValue());
+        } else if ("Qualifier".equals(jp.getCurrentName())) {
+          typeAnnot.setQualifier(jp.nextTextValue());
+        } else if ("PropertyValue".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          typeAnnot.getPropertyValues().add(jp.readValueAs( PropertyValueImpl.class));
+        }
+      }
+    }
+
+    return typeAnnot;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.java
new file mode 100644
index 0000000..acfc7ce
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/TypeAnnotationImpl.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.client.core.edm.xml.v3;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.TypeAnnotation;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+@JsonDeserialize(using = TypeAnnotationDeserializer.class)
+public class TypeAnnotationImpl extends AbstractEdmItem implements TypeAnnotation {
+
+  private static final long serialVersionUID = -7585489230017331877L;
+
+  private String term;
+
+  private String qualifier;
+
+  private List<PropertyValueImpl> propertyValues = new ArrayList<PropertyValueImpl>();
+
+  @Override
+  public String getTerm() {
+    return term;
+  }
+
+  @Override
+  public void setTerm(final String term) {
+    this.term = term;
+  }
+
+  @Override
+  public String getQualifier() {
+    return qualifier;
+  }
+
+  @Override
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
+
+  @Override
+  public List<PropertyValueImpl> getPropertyValues() {
+    return propertyValues;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
new file mode 100644
index 0000000..0c77371
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/UsingImpl.java
@@ -0,0 +1,54 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Using;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class UsingImpl extends AbstractEdmItem implements Using {
+
+  private static final long serialVersionUID = 2086957510154443445L;
+
+  @JsonProperty(value = "Namespace", required = true)
+  private String namespace;
+
+  @JsonProperty("Alias")
+  private String alias;
+
+  @Override
+  public String getNamespace() {
+    return namespace;
+  }
+
+  @Override
+  public void setNamespace(final String namespace) {
+    this.namespace = namespace;
+  }
+
+  @Override
+  public String getAlias() {
+    return alias;
+  }
+
+  @Override
+  public void setAlias(final String alias) {
+    this.alias = alias;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
new file mode 100644
index 0000000..20d31f5
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueAnnotationImpl.java
@@ -0,0 +1,148 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ValueAnnotation;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class ValueAnnotationImpl extends AbstractEdmItem implements ValueAnnotation {
+
+  private static final long serialVersionUID = -1826414005417952278L;
+
+  @JsonProperty(value = "Term", required = true)
+  private String term;
+
+  @JsonProperty("Qualifier")
+  private String qualifier;
+
+  @JsonProperty("Path")
+  private String path;
+
+  @JsonProperty("String")
+  private String string;
+
+  @JsonProperty("Int")
+  private BigInteger _int;
+
+  @JsonProperty("Float")
+  private Double _float;
+
+  @JsonProperty("Decimal")
+  private BigDecimal decimal;
+
+  @JsonProperty("Bool")
+  private Boolean bool;
+
+  @JsonProperty("DateTime")
+  private Date dateTime;
+
+  @Override
+  public String getTerm() {
+    return term;
+  }
+
+  @Override
+  public void setTerm(final String term) {
+    this.term = term;
+  }
+
+  @Override
+  public String getQualifier() {
+    return qualifier;
+  }
+
+  @Override
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
+
+  @Override
+  public String getPath() {
+    return path;
+  }
+
+  @Override
+  public void setPath(final String path) {
+    this.path = path;
+  }
+
+  @Override
+  public String getString() {
+    return string;
+  }
+
+  @Override
+  public void setString(final String string) {
+    this.string = string;
+  }
+
+  @Override
+  public BigInteger getInt() {
+    return _int;
+  }
+
+  @Override
+  public void setInt(final BigInteger _int) {
+    this._int = _int;
+  }
+
+  @Override
+  public Double getFloat() {
+    return _float;
+  }
+
+  @Override
+  public void setFloat(final Double _float) {
+    this._float = _float;
+  }
+
+  @Override
+  public BigDecimal getDecimal() {
+    return decimal;
+  }
+
+  @Override
+  public void setDecimal(final BigDecimal decimal) {
+    this.decimal = decimal;
+  }
+
+  @Override
+  public Boolean getBool() {
+    return bool;
+  }
+
+  @Override
+  public void setBool(final Boolean bool) {
+    this.bool = bool;
+  }
+
+  @Override
+  public Date getDateTime() {
+    return dateTime == null ? null : new Date(dateTime.getTime());
+  }
+
+  @Override
+  public void setDateTime(final Date dateTime) {
+    this.dateTime = dateTime == null ? null : new Date(dateTime.getTime());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
new file mode 100644
index 0000000..c13a29f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ValueTermImpl.java
@@ -0,0 +1,54 @@
+/*
+ * 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.xml.v3;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v3.ValueTerm;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class ValueTermImpl extends AbstractEdmItem implements ValueTerm {
+
+  private static final long serialVersionUID = 6149019886137610604L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty(value = "Type", required = true)
+  private String type;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
new file mode 100644
index 0000000..39e87b8
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public abstract class AbstractAnnotatedEdmItem extends AbstractEdmItem implements AnnotatedEdmItem {
+
+  private static final long serialVersionUID = -8859729466090997718L;
+
+  @JsonProperty("Annotation")
+  private AnnotationImpl annotation;
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @JsonIgnore
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionDeserializer.java
new file mode 100644
index 0000000..ea93d75
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionDeserializer.java
@@ -0,0 +1,60 @@
+/*
+ * 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.xml.v4;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class ActionDeserializer extends AbstractEdmDeserializer<ActionImpl> {
+
+  @Override
+  protected ActionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final ActionImpl action = new ActionImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          action.setName(jp.nextTextValue());
+        } else if ("IsBound".equals(jp.getCurrentName())) {
+          action.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("EntitySetPath".equals(jp.getCurrentName())) {
+          action.setEntitySetPath(jp.nextTextValue());
+        } else if ("Parameter".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          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.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return action;
+  }
+}


[22/22] git commit: [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
[OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation


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

Branch: refs/heads/olingo169
Commit: bae3d847a866bf1376627b09e55b65f4570c9f24
Parents: a8c0e9e
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 5 16:06:00 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 5 16:06:00 2014 +0100

----------------------------------------------------------------------
 .../odata4/client/api/edm/EdmMetadata.java      |  60 ---
 .../client/api/edm/xml/CommonParameter.java     |  14 +-
 .../client/api/edm/xml/CommonProperty.java      |  13 +-
 .../odata4/client/api/edm/xml/Member.java       |   2 +-
 .../odata4/client/api/edm/xml/Schema.java       |   1 -
 .../odata4/client/api/edm/xml/XMLMetadata.java  |  59 +++
 .../client/api/edm/xml/v4/BindingTarget.java    |  31 ++
 .../client/api/edm/xml/v4/EntityContainer.java  |   4 +
 .../odata4/client/api/edm/xml/v4/EntitySet.java |   6 +-
 .../client/api/edm/xml/v4/ReturnType.java       |  14 +-
 .../odata4/client/api/edm/xml/v4/Singleton.java |   9 +-
 .../client/api/edm/xml/v4/TypeDefinition.java   |  12 +-
 .../odata4/client/api/op/ODataDeserializer.java |   4 +-
 .../odata4/client/api/op/ODataReader.java       |   4 +-
 .../odata4/client/api/utils/EdmTypeInfo.java    |  81 ++++
 .../client/core/edm/AbstractEdmMetadata.java    | 105 -----
 .../edm/AbstractEdmServiceMetadataImpl.java     | 115 +++++
 .../odata4/client/core/edm/AbstractEdmType.java | 265 -----------
 .../odata4/client/core/edm/EdmActionImpl.java   |  37 ++
 .../client/core/edm/EdmActionImportImpl.java    |  45 ++
 .../client/core/edm/EdmBindingTargetImpl.java   |  80 ++++
 .../odata4/client/core/edm/EdmClientImpl.java   | 285 ++++++++++++
 .../client/core/edm/EdmComplexTypeImpl.java     |  63 +++
 .../client/core/edm/EdmEntityContainerImpl.java |  87 ++++
 .../client/core/edm/EdmEntitySetImpl.java       |  35 ++
 .../client/core/edm/EdmEntityTypeImpl.java      |  79 ++++
 .../odata4/client/core/edm/EdmEnumTypeImpl.java |  83 ++++
 .../odata4/client/core/edm/EdmFunctionImpl.java |  44 ++
 .../client/core/edm/EdmFunctionImportImpl.java  |  47 ++
 .../client/core/edm/EdmKeyPropertyRefImpl.java  |  49 ++
 .../core/edm/EdmNavigationPropertyImpl.java     |  74 +++
 .../client/core/edm/EdmOperationImpl.java       |  63 +++
 .../client/core/edm/EdmOperationImportImpl.java |  35 ++
 .../client/core/edm/EdmParameterImpl.java       |  74 +++
 .../odata4/client/core/edm/EdmPropertyImpl.java |  91 ++++
 .../client/core/edm/EdmReturnTypeImpl.java      |  68 +++
 .../client/core/edm/EdmSingletonImpl.java       |  35 ++
 .../core/edm/EdmStructuredTypeHelperImpl.java   |  71 +++
 .../client/core/edm/EdmTypeDefinitionImpl.java  |  74 +++
 .../client/core/edm/v3/EdmMetadataImpl.java     |  51 ---
 .../core/edm/v3/EdmServiceMetadataImpl.java     |  52 +++
 .../odata4/client/core/edm/v3/EdmTypeImpl.java  |   5 +-
 .../client/core/edm/v4/EdmMetadataImpl.java     |  56 ---
 .../core/edm/v4/EdmServiceMetadataImpl.java     |  83 ++++
 .../odata4/client/core/edm/v4/EdmTypeImpl.java  |   5 +-
 .../annotation/AbstractElOrAttrConstruct.java   |  37 --
 .../annotation/AnnotatedDynExprConstruct.java   |  40 --
 .../core/edm/v4/annotation/AnnotationPath.java  |  25 -
 .../client/core/edm/v4/annotation/Apply.java    |  53 ---
 .../edm/v4/annotation/ApplyDeserializer.java    |  55 ---
 .../client/core/edm/v4/annotation/Cast.java     |  90 ----
 .../edm/v4/annotation/CastDeserializer.java     |  62 ---
 .../core/edm/v4/annotation/Collection.java      |  37 --
 .../v4/annotation/CollectionDeserializer.java   |  50 --
 .../v4/annotation/ConstExprConstructImpl.java   |  51 ---
 .../DynExprConstructDeserializer.java           | 145 ------
 .../edm/v4/annotation/DynExprConstructImpl.java |  29 --
 .../edm/v4/annotation/DynExprDoubleParamOp.java |  73 ---
 .../edm/v4/annotation/DynExprSingleParamOp.java |  69 ---
 .../edm/v4/annotation/ExprConstructImpl.java    |  28 --
 .../client/core/edm/v4/annotation/If.java       |  57 ---
 .../client/core/edm/v4/annotation/IsOf.java     |  90 ----
 .../edm/v4/annotation/IsOfDeserializer.java     |  62 ---
 .../core/edm/v4/annotation/LabeledElement.java  |  49 --
 .../annotation/LabeledElementDeserializer.java  |  53 ---
 .../v4/annotation/LabeledElementReference.java  |  25 -
 .../v4/annotation/NavigationPropertyPath.java   |  25 -
 .../client/core/edm/v4/annotation/Null.java     |  28 --
 .../edm/v4/annotation/NullDeserializer.java     |  49 --
 .../client/core/edm/v4/annotation/Path.java     |  25 -
 .../core/edm/v4/annotation/PropertyPath.java    |  25 -
 .../core/edm/v4/annotation/PropertyValue.java   |  49 --
 .../annotation/PropertyValueDeserializer.java   |  55 ---
 .../client/core/edm/v4/annotation/Record.java   |  46 --
 .../edm/v4/annotation/RecordDeserializer.java   |  53 ---
 .../client/core/edm/v4/annotation/UrlRef.java   |  39 --
 .../edm/v4/annotation/UrlRefDeserializer.java   |  50 --
 .../client/core/edm/xml/AbstractEdmType.java    | 262 +++++++++++
 .../client/core/edm/xml/AbstractMember.java     |   6 +-
 .../client/core/edm/xml/AbstractParameter.java  |  28 +-
 .../client/core/edm/xml/AbstractProperty.java   |  35 +-
 .../core/edm/xml/AbstractXMLMetadata.java       |  95 ++++
 .../core/edm/xml/ParameterDeserializer.java     |  69 +++
 .../core/edm/xml/PropertyDeserializer.java      | 102 +++++
 .../client/core/edm/xml/v3/ParameterImpl.java   |   2 -
 .../client/core/edm/xml/v3/PropertyImpl.java    |  19 +-
 .../client/core/edm/xml/v3/XMLMetadataImpl.java |  48 ++
 .../core/edm/xml/v4/AnnotationDeserializer.java |   2 +-
 .../client/core/edm/xml/v4/AnnotationImpl.java  |   4 +-
 .../core/edm/xml/v4/EntityContainerImpl.java    |   2 +
 .../client/core/edm/xml/v4/EntitySetImpl.java   |   6 +-
 .../client/core/edm/xml/v4/ParameterImpl.java   |   2 -
 .../client/core/edm/xml/v4/PropertyImpl.java    |   2 -
 .../core/edm/xml/v4/ReturnTypeDeserializer.java |  60 +++
 .../client/core/edm/xml/v4/ReturnTypeImpl.java  |  28 +-
 .../client/core/edm/xml/v4/SchemaImpl.java      |   4 +
 .../core/edm/xml/v4/SingletonDeserializer.java  |   2 +-
 .../client/core/edm/xml/v4/SingletonImpl.java   |  16 +-
 .../edm/xml/v4/TypeDefinitionDeserializer.java  |   9 +-
 .../core/edm/xml/v4/TypeDefinitionImpl.java     |  21 +-
 .../client/core/edm/xml/v4/XMLMetadataImpl.java |  51 +++
 .../annotation/AbstractElOrAttrConstruct.java   |  37 ++
 .../annotation/AnnotatedDynExprConstruct.java   |  40 ++
 .../edm/xml/v4/annotation/AnnotationPath.java   |  25 +
 .../core/edm/xml/v4/annotation/Apply.java       |  53 +++
 .../xml/v4/annotation/ApplyDeserializer.java    |  55 +++
 .../client/core/edm/xml/v4/annotation/Cast.java |  90 ++++
 .../edm/xml/v4/annotation/CastDeserializer.java |  62 +++
 .../core/edm/xml/v4/annotation/Collection.java  |  37 ++
 .../v4/annotation/CollectionDeserializer.java   |  50 ++
 .../v4/annotation/ConstExprConstructImpl.java   |  51 +++
 .../DynExprConstructDeserializer.java           | 145 ++++++
 .../xml/v4/annotation/DynExprConstructImpl.java |  29 ++
 .../xml/v4/annotation/DynExprDoubleParamOp.java |  73 +++
 .../xml/v4/annotation/DynExprSingleParamOp.java |  69 +++
 .../xml/v4/annotation/ExprConstructImpl.java    |  28 ++
 .../client/core/edm/xml/v4/annotation/If.java   |  57 +++
 .../client/core/edm/xml/v4/annotation/IsOf.java |  90 ++++
 .../edm/xml/v4/annotation/IsOfDeserializer.java |  62 +++
 .../edm/xml/v4/annotation/LabeledElement.java   |  49 ++
 .../annotation/LabeledElementDeserializer.java  |  53 +++
 .../v4/annotation/LabeledElementReference.java  |  25 +
 .../v4/annotation/NavigationPropertyPath.java   |  25 +
 .../client/core/edm/xml/v4/annotation/Null.java |  28 ++
 .../edm/xml/v4/annotation/NullDeserializer.java |  49 ++
 .../client/core/edm/xml/v4/annotation/Path.java |  25 +
 .../edm/xml/v4/annotation/PropertyPath.java     |  25 +
 .../edm/xml/v4/annotation/PropertyValue.java    |  49 ++
 .../annotation/PropertyValueDeserializer.java   |  55 +++
 .../core/edm/xml/v4/annotation/Record.java      |  46 ++
 .../xml/v4/annotation/RecordDeserializer.java   |  53 +++
 .../core/edm/xml/v4/annotation/UrlRef.java      |  39 ++
 .../xml/v4/annotation/UrlRefDeserializer.java   |  50 ++
 .../core/op/impl/AbstractEdmDeserializer.java   |   2 +-
 .../core/op/impl/v3/ODataDeserializerImpl.java  |   5 +-
 .../client/core/op/impl/v3/ODataReaderImpl.java |   7 +-
 .../core/op/impl/v4/ODataDeserializerImpl.java  |   5 +-
 .../client/core/op/impl/v4/ODataReaderImpl.java |   7 +-
 .../odata4/client/core/v3/MetadataTest.java     |  22 +-
 .../odata4/client/core/v4/MetadataTest.java     | 157 ++++---
 .../odata4/client/core/v4/demo-metadata.xml     | 143 +++++-
 .../odata4/client/core/v4/fromdoc1-metadata.xml |  10 +
 .../client/core/v4/northwind-metadata.xml       | 451 ++++++++++++++++++-
 .../olingo/odata4/commons/api/edm/Edm.java      |  12 +-
 .../commons/api/edm/EdmActionImportInfo.java    |  40 ++
 .../odata4/commons/api/edm/EdmComplexType.java  |   2 +-
 .../odata4/commons/api/edm/EdmEntityType.java   |   2 +-
 .../commons/api/edm/EdmFunctionImportInfo.java  |   7 +-
 .../commons/api/edm/EdmOperationImportInfo.java |  31 ++
 .../commons/api/edm/EdmServiceMetadata.java     |   5 +
 .../commons/api/edm/EdmStructuralType.java      |  66 ---
 .../commons/api/edm/EdmStructuredType.java      |  82 ++++
 .../olingo/odata4/commons/api/edm/Target.java   |  71 +++
 .../core/edm/AbstractEdmBindingTarget.java      |  55 +++
 .../core/edm/AbstractEdmComplexType.java        |  50 ++
 .../core/edm/AbstractEdmEntityContainer.java    | 101 +++++
 .../commons/core/edm/AbstractEdmEntityType.java | 113 +++++
 .../commons/core/edm/AbstractEdmEnumType.java   | 205 +++++++++
 .../commons/core/edm/AbstractEdmImpl.java       |   2 +-
 .../core/edm/AbstractEdmKeyPropertyRef.java     |  80 ++++
 .../core/edm/AbstractEdmNavigationProperty.java |  76 ++++
 .../commons/core/edm/AbstractEdmOperation.java  | 113 +++++
 .../core/edm/AbstractEdmOperationImport.java    |  63 +++
 .../commons/core/edm/AbstractEdmParameter.java  |  87 ++++
 .../commons/core/edm/AbstractEdmProperty.java   |  70 +++
 .../commons/core/edm/AbstractEdmReturnType.java |  85 ++++
 .../core/edm/AbstractEdmStructuredType.java     | 128 ++++++
 .../core/edm/AbstractEdmTypeDefinition.java     | 107 +++++
 .../core/edm/EdmActionImportInfoImpl.java       |  45 ++
 .../odata4/commons/core/edm/EdmElementImpl.java |  29 ++
 .../commons/core/edm/EdmEntitySetInfoImpl.java  |  52 +++
 .../core/edm/EdmFunctionImportInfoImpl.java     |  45 ++
 .../odata4/commons/core/edm/EdmMemberImpl.java  |  38 ++
 .../odata4/commons/core/edm/EdmNamedImpl.java   |  40 ++
 .../core/edm/EdmOperationImportInfoImpl.java    |  36 ++
 .../commons/core/edm/EdmSingletonInfoImpl.java  |  52 +++
 .../core/edm/EdmStructuredTypeHelper.java       |  30 ++
 .../odata4/commons/core/edm/EdmTypeImpl.java    |  48 ++
 .../edm/primitivetype/EdmPrimitiveTypeKind.java |  16 +
 .../server/api/edm/provider/ActionImport.java   |   1 +
 .../server/api/edm/provider/ComplexType.java    |   2 +-
 .../server/api/edm/provider/EntityType.java     |   2 +-
 .../server/api/edm/provider/FunctionImport.java |   1 +
 .../edm/provider/NavigationPropertyBinding.java |   2 +
 .../api/edm/provider/OperationImport.java       |   3 +
 .../server/api/edm/provider/StructuralType.java |  93 ----
 .../server/api/edm/provider/StructuredType.java |  93 ++++
 .../odata4/server/api/edm/provider/Target.java  |  47 --
 .../server/core/edm/provider/EdmActionImpl.java |   7 +-
 .../core/edm/provider/EdmActionImportImpl.java  |   8 +-
 .../core/edm/provider/EdmBindingTargetImpl.java |  55 +--
 .../core/edm/provider/EdmComplexTypeImpl.java   |  43 +-
 .../core/edm/provider/EdmElementImpl.java       |  28 --
 .../edm/provider/EdmEntityContainerImpl.java    | 119 ++---
 .../core/edm/provider/EdmEntitySetImpl.java     |   3 +-
 .../core/edm/provider/EdmEntitySetInfoImpl.java |  53 ---
 .../core/edm/provider/EdmEntityTypeImpl.java    |  98 ++--
 .../server/core/edm/provider/EdmEnumImpl.java   | 228 ----------
 .../core/edm/provider/EdmEnumTypeImpl.java      |  61 +++
 .../core/edm/provider/EdmFunctionImpl.java      |  11 +-
 .../edm/provider/EdmFunctionImportImpl.java     |   8 +-
 .../edm/provider/EdmFunctionImportInfoImpl.java |  53 ---
 .../edm/provider/EdmKeyPropertyRefImpl.java     |  49 +-
 .../server/core/edm/provider/EdmMemberImpl.java |  38 --
 .../server/core/edm/provider/EdmNamedImpl.java  |  39 --
 .../edm/provider/EdmNavigationPropertyImpl.java |  47 +-
 .../core/edm/provider/EdmOperationImpl.java     |  85 +---
 .../edm/provider/EdmOperationImportImpl.java    |  41 +-
 .../core/edm/provider/EdmParameterImpl.java     |  44 +-
 .../core/edm/provider/EdmPropertyImpl.java      |  44 +-
 .../core/edm/provider/EdmProviderImpl.java      |  96 ++--
 .../core/edm/provider/EdmReturnTypeImpl.java    |  46 +-
 .../edm/provider/EdmServiceMetadataImpl.java    |  66 ++-
 .../core/edm/provider/EdmSingletonImpl.java     |   3 +-
 .../core/edm/provider/EdmSingletonInfoImpl.java |  53 ---
 .../edm/provider/EdmStructuralTypeImpl.java     | 129 ------
 .../provider/EdmStructuredTypeHelperImpl.java   |  72 +++
 .../edm/provider/EdmTypeDefinitionImpl.java     |  72 +--
 .../server/core/edm/provider/EdmTypeImpl.java   |  46 --
 .../server/core/uri/UriResourceTypedImpl.java   |   4 +-
 .../core/uri/parser/UriParseTreeVisitor.java    |  16 +-
 .../core/edm/provider/EdmActionImplTest.java    |   6 +-
 .../edm/provider/EdmActionImportImplTest.java   |  17 +-
 .../edm/provider/EdmComplexTypeImplTest.java    |   8 +-
 .../core/edm/provider/EdmEntitySetImplTest.java |   2 +-
 .../edm/provider/EdmEntitySetInfoImplTest.java  |  51 ---
 .../edm/provider/EdmEntityTypeImplTest.java     |  14 +-
 .../server/core/edm/provider/EdmEnumTest.java   |   4 +-
 .../core/edm/provider/EdmFunctionImplTest.java  |   4 +-
 .../edm/provider/EdmFunctionImportImplTest.java |   2 +-
 .../provider/EdmFunctionImportInfoImplTest.java |  50 --
 .../edm/provider/EdmKeyPropertyRefImplTest.java |  18 +-
 .../core/edm/provider/EdmMemberImplTest.java    |   3 +-
 .../core/edm/provider/EdmNamedImplTest.java     |   1 +
 .../core/edm/provider/EdmSingletonImplTest.java |   2 +-
 .../edm/provider/EdmSingletonInfoImplTest.java  |  51 ---
 .../core/edm/provider/EdmTypeImplTest.java      |   1 +
 .../server/core/testutil/EdmTechProvider.java   |   2 +-
 238 files changed, 7710 insertions(+), 4121 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
deleted file mode 100644
index 9fef9c5..0000000
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/EdmMetadata.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.api.edm;
-
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.xml.Schema;
-
-/**
- * Entry point for access information about EDM metadata.
- */
-public interface EdmMetadata {
-
-  /**
-   * Checks whether the given key is a valid namespace or alias in the EdM metadata document.
-   *
-   * @param key namespace or alias
-   * @return true if key is valid namespace or alias
-   */
-  boolean isNsOrAlias(String key);
-
-  /**
-   * Returns the Schema at the specified position in the EdM metadata document.
-   *
-   * @param index index of the Schema to return
-   * @return the Schema at the specified position in the EdM metadata document
-   */
-  Schema getSchema(final int index);
-
-  /**
-   * Returns the Schema with the specified key (namespace or alias) in the EdM metadata document.
-   *
-   * @param key namespace or alias
-   * @return the Schema with the specified key in the EdM metadata document
-   */
-  Schema getSchema(final String key);
-
-  /**
-   * Returns all Schema objects defined in the EdM metadata document.
-   *
-   * @return all Schema objects defined in the EdM metadata document
-   */
-  List<? extends Schema> getSchemas();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
index 1366289..6d39a8d 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonParameter.java
@@ -18,8 +18,6 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml;
 
-import java.math.BigInteger;
-
 public interface CommonParameter extends Named {
 
   String getType();
@@ -30,16 +28,16 @@ public interface CommonParameter extends Named {
 
   void setNullable(boolean nullable);
 
-  String getMaxLength();
+  Integer getMaxLength();
 
-  void setMaxLength(String maxLength);
+  void setMaxLength(Integer maxLength);
 
-  BigInteger getPrecision();
+  Integer getPrecision();
 
-  void setPrecision(BigInteger precision);
+  void setPrecision(Integer precision);
 
-  BigInteger getScale();
+  Integer getScale();
 
-  void setScale(BigInteger scale);
+  void setScale(Integer scale);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
index 1621cd2..cc362a5 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/CommonProperty.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml;
 
-import java.math.BigInteger;
 import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
 import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
 
@@ -36,21 +35,21 @@ public interface CommonProperty extends Named {
 
   void setDefaultValue(String defaultValue);
 
-  String getMaxLength();
+  Integer getMaxLength();
 
-  void setMaxLength(String maxLength);
+  void setMaxLength(Integer maxLength);
 
   boolean isFixedLength();
 
   void setFixedLength(boolean fixedLength);
 
-  BigInteger getPrecision();
+  Integer getPrecision();
 
-  void setPrecision(BigInteger precision);
+  void setPrecision(Integer precision);
 
-  BigInteger getScale();
+  Integer getScale();
 
-  void setScale(BigInteger scale);
+  void setScale(Integer scale);
 
   boolean isUnicode();
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
index cf1e258..d6292c9 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Member.java
@@ -22,5 +22,5 @@ public interface Member {
 
   String getName();
 
-  Integer getValue();
+  String getValue();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
index 1856f8e..8229234 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml;
 
-import org.apache.olingo.odata4.client.api.edm.xml.v3.Annotations;
 import java.util.List;
 
 public interface Schema {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/XMLMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/XMLMetadata.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/XMLMetadata.java
new file mode 100644
index 0000000..2350214
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/XMLMetadata.java
@@ -0,0 +1,59 @@
+/*
+ * 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.api.edm.xml;
+
+import java.util.List;
+
+/**
+ * Entry point for access information about EDM metadata.
+ */
+public interface XMLMetadata {
+
+  /**
+   * Checks whether the given key is a valid namespace or alias in the EdM metadata document.
+   *
+   * @param key namespace or alias
+   * @return true if key is valid namespace or alias
+   */
+  boolean isNsOrAlias(String key);
+
+  /**
+   * Returns the Schema at the specified position in the EdM metadata document.
+   *
+   * @param index index of the Schema to return
+   * @return the Schema at the specified position in the EdM metadata document
+   */
+  Schema getSchema(final int index);
+
+  /**
+   * Returns the Schema with the specified key (namespace or alias) in the EdM metadata document.
+   *
+   * @param key namespace or alias
+   * @return the Schema with the specified key in the EdM metadata document
+   */
+  Schema getSchema(final String key);
+
+  /**
+   * Returns all Schema objects defined in the EdM metadata document.
+   *
+   * @return all Schema objects defined in the EdM metadata document
+   */
+  List<? extends Schema> getSchemas();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/BindingTarget.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/BindingTarget.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/BindingTarget.java
new file mode 100644
index 0000000..c2c4aba
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/BindingTarget.java
@@ -0,0 +1,31 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface BindingTarget extends Named, AnnotatedEdmItem {
+
+  String getEntityType();
+
+  void setEntityType(String entityType);
+
+  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
index 6acf741..d3a7611 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
@@ -22,6 +22,10 @@ import java.util.List;
 
 public interface EntityContainer extends org.apache.olingo.odata4.client.api.edm.xml.EntityContainer {
 
+  List<? extends Singleton> getSingletons();
+
+  Singleton getSingleton(String name);
+
   /**
    * Gets the first action import with given name.
    *

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
index c6754c7..abdd598 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
@@ -18,13 +18,9 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-import java.util.List;
-
-public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, AnnotatedEdmItem {
+public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, BindingTarget {
 
   boolean isIncludeInServiceDocument();
 
   void setIncludeInServiceDocument(boolean includeInServiceDocument);
-
-  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
index 8e3c1f2..b6cd912 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
@@ -18,15 +18,13 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-import java.math.BigInteger;
-
 public interface ReturnType {
 
-  String getMaxLength();
+  Integer getMaxLength();
 
-  BigInteger getPrecision();
+  Integer getPrecision();
 
-  BigInteger getScale();
+  Integer getScale();
 
   String getSrid();
 
@@ -34,13 +32,13 @@ public interface ReturnType {
 
   boolean isNullable();
 
-  void setMaxLength(String maxLength);
+  void setMaxLength(Integer maxLength);
 
   void setNullable(boolean nullable);
 
-  void setPrecision(BigInteger precision);
+  void setPrecision(Integer precision);
 
-  void setScale(BigInteger scale);
+  void setScale(Integer scale);
 
   void setSrid(String srid);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
index a706f89..41145e5 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
@@ -18,15 +18,8 @@
  */
 package org.apache.olingo.odata4.client.api.edm.xml.v4;
 
-import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.Named;
 
-public interface Singleton extends Named {
-
-  String getType();
-
-  void setType(String type);
-
-  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
+public interface Singleton extends Named, BindingTarget {
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
index aaad5e7..531cf45 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
@@ -26,11 +26,11 @@ public interface TypeDefinition extends Named {
 
   List<? extends Annotation> getAnnotations();
 
-  String getMaxLength();
+  Integer getMaxLength();
 
-  BigInteger getPrecision();
+  Integer getPrecision();
 
-  BigInteger getScale();
+  Integer getScale();
 
   String getSrid();
 
@@ -38,11 +38,11 @@ public interface TypeDefinition extends Named {
 
   boolean isUnicode();
 
-  void setMaxLength(String maxLength);
+  void setMaxLength(Integer maxLength);
 
-  void setPrecision(BigInteger precision);
+  void setPrecision(Integer precision);
 
-  void setScale(BigInteger scale);
+  void setScale(Integer scale);
 
   void setSrid(String srid);
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
index fe6872c..8d6fc62 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataDeserializer.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.api.op;
 
 import java.io.InputStream;
 import java.io.Serializable;
-import org.apache.olingo.odata4.client.api.edm.xml.Edmx;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
 import org.w3c.dom.Element;
 
 /**
@@ -28,7 +28,7 @@ import org.w3c.dom.Element;
  */
 public interface ODataDeserializer extends Serializable {
 
-  Edmx toMetadata(InputStream input);
+  XMLMetadata toMetadata(InputStream input);
 
   /**
    * Gets the ServiceDocumentResource object represented by the given InputStream.

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
index e6f59db..a933919 100644
--- a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/op/ODataReader.java
@@ -20,7 +20,7 @@ package org.apache.olingo.odata4.client.api.op;
 
 import java.io.InputStream;
 import java.io.Serializable;
-import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 
 /**
  * OData reader.
@@ -37,7 +37,7 @@ public interface ODataReader extends Serializable {
    * @param input stream to de-serialize.
    * @return metadata representation.
    */
-  EdmMetadata readMetadata(InputStream input);
+  Edm readMetadata(InputStream input);
 
   /**
    * Parses an OData service document.

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/utils/EdmTypeInfo.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/utils/EdmTypeInfo.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/utils/EdmTypeInfo.java
new file mode 100644
index 0000000..33dd468
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/utils/EdmTypeInfo.java
@@ -0,0 +1,81 @@
+/*
+ * 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.api.utils;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+
+public class EdmTypeInfo {
+
+  private final String typeExpression;
+
+  private final boolean collection;
+
+  private final FullQualifiedName fullQualifiedName;
+
+  public EdmTypeInfo(final String typeExpression, final String defaultNamespace) {
+    this(typeExpression.indexOf('.') == -1
+            ? defaultNamespace + "." + typeExpression
+            : typeExpression);
+  }
+
+  public EdmTypeInfo(final String typeExpression) {
+    this.typeExpression = typeExpression;
+
+    String baseType;
+    final int collStartIdx = typeExpression.indexOf("Collection(");
+    final int collEndIdx = typeExpression.lastIndexOf(')');
+    if (collStartIdx == -1) {
+      baseType = typeExpression;
+      this.collection = false;
+    } else {
+      if (collEndIdx == -1) {
+        throw new IllegalArgumentException("Malformed type: " + typeExpression);
+      }
+
+      this.collection = true;
+      baseType = typeExpression.substring(collStartIdx + 11, collEndIdx);
+    }
+
+    final int lastDotIdx = baseType.lastIndexOf('.');
+    if (lastDotIdx == -1) {
+      throw new IllegalArgumentException("Cannot find namespace or alias in " + typeExpression);
+    }
+    final String namespace = 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);
+    }
+
+    this.fullQualifiedName = new FullQualifiedName(namespace, typeName);
+  }
+
+  public String getTypeExpression() {
+    return typeExpression;
+  }
+
+  public boolean isCollection() {
+    return collection;
+  }
+
+  public FullQualifiedName getFullQualifiedName() {
+    return fullQualifiedName;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
deleted file mode 100644
index 2e6cc1a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmMetadata.java
+++ /dev/null
@@ -1,105 +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.edm;
-
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.odata4.client.api.ODataClient;
-import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
-import org.apache.olingo.odata4.client.api.edm.xml.Edmx;
-import org.apache.olingo.odata4.client.api.edm.xml.Schema;
-import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
-
-/**
- * Entry point for access information about EDM metadata.
- */
-public abstract class AbstractEdmMetadata extends AbstractEdmItem implements EdmMetadata {
-
-  private static final long serialVersionUID = -1214173426671503187L;
-
-  protected final Edmx edmx;
-
-  protected final Map<String, Schema> schemaByNsOrAlias;
-
-  /**
-   * Constructor.
-   *
-   * @param client OData client
-   * @param inputStream source stream.
-   */
-  @SuppressWarnings("unchecked")
-  public AbstractEdmMetadata(final ODataClient client, final InputStream inputStream) {
-    edmx = client.getDeserializer().toMetadata(inputStream);
-
-    this.schemaByNsOrAlias = new HashMap<String, Schema>();
-    for (Schema schema : edmx.getDataServices().getSchemas()) {
-      this.schemaByNsOrAlias.put(schema.getNamespace(), schema);
-      if (StringUtils.isNotBlank(schema.getAlias())) {
-        this.schemaByNsOrAlias.put(schema.getAlias(), schema);
-      }
-    }
-  }
-
-  /**
-   * Checks whether the given key is a valid namespace or alias in the EdM metadata document.
-   *
-   * @param key namespace or alias
-   * @return true if key is valid namespace or alias
-   */
-  @Override
-  public boolean isNsOrAlias(final String key) {
-    return this.schemaByNsOrAlias.keySet().contains(key);
-  }
-
-  /**
-   * Returns the Schema at the specified position in the EdM metadata document.
-   *
-   * @param index index of the Schema to return
-   * @return the Schema at the specified position in the EdM metadata document
-   */
-  @Override
-  public Schema getSchema(final int index) {
-    return this.edmx.getDataServices().getSchemas().get(index);
-  }
-
-  /**
-   * Returns the Schema with the specified key (namespace or alias) in the EdM metadata document.
-   *
-   * @param key namespace or alias
-   * @return the Schema with the specified key in the EdM metadata document
-   */
-  @Override
-  public Schema getSchema(final String key) {
-    return this.schemaByNsOrAlias.get(key);
-  }
-
-  /**
-   * Returns all Schema objects defined in the EdM metadata document.
-   *
-   * @return all Schema objects defined in the EdM metadata document
-   */
-  @Override
-  public List<? extends Schema> getSchemas() {
-    return this.edmx.getDataServices().getSchemas();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
new file mode 100644
index 0000000..d036e9f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmServiceMetadataImpl.java
@@ -0,0 +1,115 @@
+/*
+ * 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 java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmServiceMetadata;
+import org.apache.olingo.odata4.commons.core.edm.EdmEntitySetInfoImpl;
+import org.apache.olingo.odata4.commons.core.edm.EdmFunctionImportInfoImpl;
+
+public abstract class AbstractEdmServiceMetadataImpl implements EdmServiceMetadata {
+
+  protected final XMLMetadata xmlMetadata;
+
+  private List<EdmEntitySetInfo> entitySetInfos;
+
+  private List<EdmFunctionImportInfo> functionImportInfos;
+
+  public static EdmServiceMetadata getInstance(final XMLMetadata xmlMetadata) {
+    return xmlMetadata instanceof org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl
+            ? new org.apache.olingo.odata4.client.core.edm.v3.EdmServiceMetadataImpl(
+                    (org.apache.olingo.odata4.client.core.edm.xml.v3.XMLMetadataImpl) xmlMetadata)
+            : new org.apache.olingo.odata4.client.core.edm.v4.EdmServiceMetadataImpl(
+                    (org.apache.olingo.odata4.client.core.edm.xml.v4.XMLMetadataImpl) xmlMetadata);
+
+  }
+
+  public AbstractEdmServiceMetadataImpl(final XMLMetadata xmlMetadata) {
+    this.xmlMetadata = xmlMetadata;
+  }
+
+  @Override
+  public InputStream getMetadata() {
+    throw new UnsupportedOperationException("Not supported in client code.");
+  }
+
+  @Override
+  public List<EdmEntitySetInfo> getEntitySetInfos() {
+    synchronized (this) {
+      if (entitySetInfos == null) {
+        entitySetInfos = new ArrayList<EdmEntitySetInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          for (EntityContainer entityContainer : schema.getEntityContainers()) {
+            for (EntitySet entitySet : entityContainer.getEntitySets()) {
+              entitySetInfos.add(
+                      new EdmEntitySetInfoImpl(entityContainer.getName(), entitySet.getName()));
+            }
+          }
+        }
+      }
+      return entitySetInfos;
+    }
+  }
+
+  @Override
+  public List<EdmFunctionImportInfo> getFunctionImportInfos() {
+    synchronized (this) {
+      if (functionImportInfos == null) {
+        functionImportInfos = new ArrayList<EdmFunctionImportInfo>();
+        for (Schema schema : xmlMetadata.getSchemas()) {
+          for (EntityContainer entityContainer : schema.getEntityContainers()) {
+            for (CommonFunctionImport functionImport : entityContainer.getFunctionImports()) {
+              functionImportInfos.add(
+                      new EdmFunctionImportInfoImpl(entityContainer.getName(), functionImport.getName()));
+            }
+          }
+        }
+      }
+    }
+    return functionImportInfos;
+  }
+
+  @Override
+  public boolean equals(final Object obj) {
+    return EqualsBuilder.reflectionEquals(this, obj);
+  }
+
+  @Override
+  public int hashCode() {
+    return HashCodeBuilder.reflectionHashCode(this);
+  }
+
+  @Override
+  public String toString() {
+    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/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
deleted file mode 100644
index 2d4dccf..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/AbstractEdmType.java
+++ /dev/null
@@ -1,265 +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.edm;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.odata4.client.api.data.EdmSimpleType;
-import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
-import org.apache.olingo.odata4.client.api.edm.EdmMetadata;
-import org.apache.olingo.odata4.client.api.edm.EdmType;
-import org.apache.olingo.odata4.client.api.edm.EdmTypeNotFoundException;
-import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
-import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
-import org.apache.olingo.odata4.client.api.edm.xml.Schema;
-import org.apache.olingo.odata4.client.core.edm.xml.AbstractComplexType;
-import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityType;
-import org.apache.olingo.odata4.client.core.edm.xml.AbstractEnumType;
-
-/**
- * Parse type information from metadata into semantic data.
- */
-public abstract class AbstractEdmType implements EdmType {
-
-  private final String typeExpression;
-
-  private final String baseType;
-
-  private final String namespaceOrAlias;
-
-  private boolean collection;
-
-  private EdmSimpleType simpleType;
-
-  private EnumType enumType;
-
-  private ComplexType complexType;
-
-  private EntityType 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 EdmMetadata 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 Schema schema = metadata.getSchema(namespaceOrAlias);
-
-      for (EnumType type : schema.getEnumTypes()) {
-        if (typeName.equals(type.getName())) {
-          this.enumType = type;
-        }
-      }
-      if (this.enumType == null) {
-        for (ComplexType type : schema.getComplexTypes()) {
-          if (typeName.equals(type.getName())) {
-            this.complexType = type;
-          }
-        }
-        if (this.complexType == null) {
-          for (EntityType 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 EnumType 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 ComplexType 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 EntityType 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/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImpl.java
new file mode 100644
index 0000000..8cf1eed
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImpl.java
@@ -0,0 +1,37 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.v4.Action;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public class EdmActionImpl extends EdmOperationImpl implements EdmAction {
+
+  public static EdmActionImpl getInstance(final Edm edm, final FullQualifiedName name, final Action action) {
+    return EdmOperationImpl.getInstance(new EdmActionImpl(edm, name, action));
+  }
+
+  private EdmActionImpl(final Edm edm, final FullQualifiedName name, final Action action) {
+    super(edm, name, action, EdmTypeKind.ACTION);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
new file mode 100644
index 0000000..a133578
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmActionImportImpl.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+
+public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
+
+  private final ActionImport actionImport;
+
+  public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final ActionImport actionImport) {
+
+    super(edm, container, name, actionImport);
+    this.actionImport = actionImport;
+  }
+
+  @Override
+  public EdmAction getAction() {
+    return edm.getAction(
+            new EdmTypeInfo(actionImport.getAction(), container.getNamespace()).getFullQualifiedName(), null, null);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
new file mode 100644
index 0000000..26f70e9
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmBindingTargetImpl.java
@@ -0,0 +1,80 @@
+/*
+ * 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 java.util.Iterator;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.BindingTarget;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.Target;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmBindingTarget;
+
+public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
+
+  private final BindingTarget target;
+
+  public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container,
+          final String name, final FullQualifiedName type, final BindingTarget target) {
+
+    super(edm, container, name, type);
+    this.target = target;
+  }
+
+  @Override
+  public EdmBindingTarget getRelatedBindingTarget(final String path) {
+    EdmBindingTarget bindingTarget = null;
+
+    final List<? extends NavigationPropertyBinding> navigationPropertyBindings = target.getNavigationPropertyBindings();
+    if (navigationPropertyBindings != null) {
+      boolean found = false;
+      for (final Iterator<? extends NavigationPropertyBinding> itor = navigationPropertyBindings.iterator();
+              itor.hasNext() && !found;) {
+
+        final NavigationPropertyBinding binding = itor.next();
+        if (binding.getPath().equals(path)) {
+          final Target edmTarget = new Target.Builder(binding.getTarget(), container).build();
+
+          final EdmEntityContainer entityContainer = edm.getEntityContainer(edmTarget.getEntityContainer());
+          if (entityContainer == null) {
+            throw new EdmException("Cant find entity container with name: " + edmTarget.getEntityContainer());
+          }
+          bindingTarget = entityContainer.getEntitySet(edmTarget.getTargetName());
+          if (bindingTarget == null) {
+            bindingTarget = entityContainer.getSingleton(edmTarget.getTargetName());
+            if (bindingTarget == null) {
+              throw new EdmException("Cant find target with name: " + edmTarget.getTargetName());
+            }
+
+            found = true;
+          } else {
+            found = true;
+          }
+        }
+      }
+    }
+
+    return bindingTarget;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
new file mode 100644
index 0000000..ab15e7d
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmClientImpl.java
@@ -0,0 +1,285 @@
+/*
+ * 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 java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ActionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.FunctionImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ParameterImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
+import org.apache.olingo.odata4.commons.api.edm.EdmAction;
+import org.apache.olingo.odata4.commons.api.edm.EdmComplexType;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmImpl;
+
+public class EdmClientImpl extends AbstractEdmImpl {
+
+  private final XMLMetadata xmlMetadata;
+
+  private final EdmServiceMetadata serviceMetadata;
+
+  public EdmClientImpl(final XMLMetadata xmlMetadata) {
+    this.xmlMetadata = xmlMetadata;
+    this.serviceMetadata = AbstractEdmServiceMetadataImpl.getInstance(xmlMetadata);
+  }
+
+  public XMLMetadata getXMLMetadata() {
+    return xmlMetadata;
+  }
+
+  @Override
+  protected EdmServiceMetadata createServiceMetadata() {
+    return serviceMetadata;
+  }
+
+  @Override
+  protected Map<String, String> createAliasToNamespaceInfo() {
+    final Map<String, String> aliasToNamespace = new HashMap<String, String>();
+
+    for (Schema schema : xmlMetadata.getSchemas()) {
+      aliasToNamespace.put(null, schema.getNamespace());
+      if (StringUtils.isNotBlank(schema.getAlias())) {
+        aliasToNamespace.put(schema.getAlias(), schema.getNamespace());
+      }
+    }
+
+    return aliasToNamespace;
+  }
+
+  @Override
+  protected EdmEntityContainer createEntityContainer(final FullQualifiedName containerName) {
+    EdmEntityContainer result = null;
+
+    final Schema schema = xmlMetadata.getSchema(containerName.getNamespace());
+    if (schema != null) {
+      final EntityContainer xmlEntityContainer = (EntityContainer) schema.getDefaultEntityContainer();
+      if (xmlEntityContainer != null) {
+        result = new EdmEntityContainerImpl(this, containerName, xmlEntityContainer);
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmEnumType createEnumType(final FullQualifiedName enumName) {
+    EdmEnumType result = null;
+
+    final Schema schema = xmlMetadata.getSchema(enumName.getNamespace());
+    if (schema != null) {
+      final EnumType xmlEnumType = schema.getEnumType(enumName.getName());
+      if (xmlEnumType != null) {
+        result = new EdmEnumTypeImpl(this, enumName, xmlEnumType);
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmTypeDefinition createTypeDefinition(final FullQualifiedName typeDefinitionName) {
+    EdmTypeDefinition result = null;
+
+    final Schema schema = xmlMetadata.getSchema(typeDefinitionName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final TypeDefinition xmlTypeDefinition = ((SchemaImpl) schema).getTypeDefinition(typeDefinitionName.getName());
+      if (xmlTypeDefinition != null) {
+        result = new EdmTypeDefinitionImpl(this, typeDefinitionName, xmlTypeDefinition);
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmEntityType createEntityType(final FullQualifiedName entityTypeName) {
+    EdmEntityType result = null;
+
+    final Schema schema = xmlMetadata.getSchema(entityTypeName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final EntityType xmlEntityType = ((SchemaImpl) schema).getEntityType(entityTypeName.getName());
+      if (xmlEntityType != null) {
+        result = EdmEntityTypeImpl.getInstance(this, entityTypeName, xmlEntityType);
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmComplexType createComplexType(final FullQualifiedName complexTypeName) {
+    EdmComplexType result = null;
+
+    final Schema schema = xmlMetadata.getSchema(complexTypeName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final ComplexType xmlComplexType = ((SchemaImpl) schema).getComplexType(complexTypeName.getName());
+      if (xmlComplexType != null) {
+        result = EdmComplexTypeImpl.getInstance(this, complexTypeName, xmlComplexType);
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmAction createUnboundAction(final FullQualifiedName actionName) {
+    EdmAction result = null;
+
+    final Schema schema = xmlMetadata.getSchema(actionName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final List<ActionImpl> actions = ((SchemaImpl) schema).getActions(actionName.getName());
+      boolean found = false;
+      for (Iterator<ActionImpl> itor = actions.iterator(); itor.hasNext() && !found;) {
+        final ActionImpl action = itor.next();
+        if (!action.isBound()) {
+          found = true;
+          result = EdmActionImpl.getInstance(this, actionName, action);
+        }
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmFunction createUnboundFunction(final FullQualifiedName functionName, final List<String> parameterNames) {
+    EdmFunction result = null;
+
+    final Schema schema = xmlMetadata.getSchema(functionName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final List<FunctionImpl> functions = ((SchemaImpl) schema).getFunctions(functionName.getName());
+      boolean found = false;
+      for (Iterator<FunctionImpl> itor = functions.iterator(); itor.hasNext() && !found;) {
+        final FunctionImpl function = itor.next();
+        if (!function.isBound()) {
+          final Set<String> functionParamNames = new HashSet<String>();
+          for (ParameterImpl param : function.getParameters()) {
+            functionParamNames.add(param.getName());
+          }
+          found = parameterNames == null
+                  ? functionParamNames.isEmpty()
+                  : functionParamNames.containsAll(parameterNames);
+          result = EdmFunctionImpl.getInstance(this, functionName, function);
+        }
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmAction createBoundAction(final FullQualifiedName actionName,
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
+    EdmAction result = null;
+
+    final Schema schema = xmlMetadata.getSchema(actionName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final List<ActionImpl> actions = ((SchemaImpl) schema).getActions(actionName.getName());
+      boolean found = false;
+      for (Iterator<ActionImpl> itor = actions.iterator(); itor.hasNext() && !found;) {
+        final ActionImpl action = itor.next();
+        if (action.isBound()) {
+          final EdmTypeInfo boundParam = new EdmTypeInfo(action.getParameters().get(0).getType());
+          if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
+                  && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+
+            found = true;
+            result = EdmActionImpl.getInstance(this, actionName, action);
+          }
+        }
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected EdmFunction createBoundFunction(final FullQualifiedName functionName,
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection,
+          final List<String> parameterNames) {
+
+    EdmFunction result = null;
+
+    final Schema schema = xmlMetadata.getSchema(functionName.getNamespace());
+    if (schema instanceof SchemaImpl) {
+      final List<FunctionImpl> functions = ((SchemaImpl) schema).getFunctions(functionName.getName());
+      boolean found = false;
+      for (Iterator<FunctionImpl> itor = functions.iterator(); itor.hasNext() && !found;) {
+        final FunctionImpl function = itor.next();
+        if (function.isBound()) {
+          final EdmTypeInfo boundParam = new EdmTypeInfo(function.getParameters().get(0).getType());
+          if (bindingParameterTypeName.equals(boundParam.getFullQualifiedName())
+                  && isBindingParameterCollection.booleanValue() == boundParam.isCollection()) {
+
+            final Set<String> functionParamNames = new HashSet<String>();
+            for (ParameterImpl param : function.getParameters()) {
+              functionParamNames.add(param.getName());
+            }
+            found = parameterNames == null
+                    ? functionParamNames.isEmpty()
+                    : functionParamNames.containsAll(parameterNames);
+            result = EdmFunctionImpl.getInstance(this, functionName, function);
+          }
+        }
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  public boolean equals(final Object obj) {
+    return EqualsBuilder.reflectionEquals(this, obj);
+  }
+
+  @Override
+  public int hashCode() {
+    return HashCodeBuilder.reflectionHashCode(this);
+  }
+
+  @Override
+  public String toString() {
+    return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.java
new file mode 100644
index 0000000..c036172
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmComplexTypeImpl.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.client.core.edm;
+
+import java.util.Map;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmComplexType;
+import org.apache.olingo.odata4.commons.core.edm.EdmStructuredTypeHelper;
+
+public class EdmComplexTypeImpl extends AbstractEdmComplexType {
+
+  private final EdmStructuredTypeHelper helper;
+
+  public static EdmComplexTypeImpl getInstance(final Edm edm, final FullQualifiedName fqn,
+          final ComplexType complexType) {
+
+    final FullQualifiedName baseTypeName = complexType.getBaseType() == null
+            ? null : new EdmTypeInfo(complexType.getBaseType()).getFullQualifiedName();
+    final EdmComplexTypeImpl instance = new EdmComplexTypeImpl(edm, fqn, baseTypeName, complexType);
+    instance.baseType = instance.buildBaseType(baseTypeName);
+
+    return instance;
+  }
+
+  private EdmComplexTypeImpl(final Edm edm, final FullQualifiedName fqn, final FullQualifiedName baseTypeName,
+          final ComplexType complexType) {
+
+    super(edm, fqn, baseTypeName);
+    this.helper = new EdmStructuredTypeHelperImpl(edm, complexType);
+  }
+
+  @Override
+  protected Map<String, EdmProperty> getProperties() {
+    return helper.getProperties();
+  }
+
+  @Override
+  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
+    return helper.getNavigationProperties();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
new file mode 100644
index 0000000..31269a2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntityContainerImpl.java
@@ -0,0 +1,87 @@
+/*
+ * 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.olingo.odata4.client.api.edm.xml.v4.ActionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
+import org.apache.olingo.odata4.client.api.utils.EdmTypeInfo;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmEntityContainer;
+
+public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
+
+  private final EntityContainer xmlEntityContainer;
+
+  public EdmEntityContainerImpl(final Edm edm, final FullQualifiedName entityContainerName,
+          final EntityContainer xmlEntityContainer) {
+
+    super(edm, entityContainerName);
+    this.xmlEntityContainer = xmlEntityContainer;
+  }
+
+  @Override
+  protected EdmSingleton createSingleton(final String singletonName) {
+    final Singleton singleton = xmlEntityContainer.getSingleton(singletonName);
+    if (singleton == null) {
+      throw new EdmException("Singleton named '" + singletonName + "' not found in " + entityContainerName);
+    }
+    return new EdmSingletonImpl(edm, this, singletonName,
+            new EdmTypeInfo(singleton.getEntityType(), entityContainerName.getNamespace()).getFullQualifiedName(),
+            singleton);
+  }
+
+  @Override
+  protected EdmEntitySet createEntitySet(final String entitySetName) {
+    final EntitySet entitySet = (EntitySet) xmlEntityContainer.getEntitySet(entitySetName);
+    if (entitySet == null) {
+      throw new EdmException("EntitySet named '" + entitySetName + "' not found in " + entityContainerName);
+    }
+    return new EdmEntitySetImpl(edm, this, entitySetName,
+            new EdmTypeInfo(entitySet.getEntityType(), entityContainerName.getNamespace()).getFullQualifiedName(),
+            entitySet);
+  }
+
+  @Override
+  protected EdmActionImport createActionImport(final String actionImportName) {
+    final ActionImport actionImport = xmlEntityContainer.getActionImport(actionImportName);
+    if (actionImport == null) {
+      throw new EdmException("ActionImport named '" + actionImportName + "' not found in " + entityContainerName);
+    }
+    return new EdmActionImportImpl(edm, this, actionImportName, actionImport);
+  }
+
+  @Override
+  protected EdmFunctionImport createFunctionImport(final String functionImportName) {
+    final FunctionImport functionImport = (FunctionImport) xmlEntityContainer.getFunctionImport(functionImportName);
+    if (functionImport == null) {
+      throw new EdmException("FunctionImport named '" + functionImportName + "' not found in " + entityContainerName);
+    }
+    return new EdmFunctionImportImpl(edm, this, functionImportName, functionImport);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.java
new file mode 100644
index 0000000..669e431
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/EdmEntitySetImpl.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;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+
+public class EdmEntitySetImpl extends EdmBindingTargetImpl implements EdmEntitySet {
+
+  public EdmEntitySetImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final FullQualifiedName type, final EntitySet entitySet) {
+
+    super(edm, container, name, type, entitySet);
+  }
+
+}


[20/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructDeserializer.java
deleted file mode 100644
index d3d4fd4..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructDeserializer.java
+++ /dev/null
@@ -1,145 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.core.JsonLocation;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.io.IOException;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.ClassUtils;
-import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-
-public class DynExprConstructDeserializer extends AbstractEdmDeserializer<DynExprConstructImpl> {
-
-    private static final String[] EL_OR_ATTR = { AnnotationPath.class.getSimpleName(), Path.class.getSimpleName() };
-
-    private static final String APPLY = Apply.class.getSimpleName();
-
-    private static final String CAST = Cast.class.getSimpleName();
-
-    private static final String COLLECTION = Collection.class.getSimpleName();
-
-    private static final String IF = If.class.getSimpleName();
-
-    private static final String IS_OF = IsOf.class.getSimpleName();
-
-    private static final String LABELED_ELEMENT = LabeledElement.class.getSimpleName();
-
-    private static final String NULL = Null.class.getSimpleName();
-
-    private static final String RECORD = Record.class.getSimpleName();
-
-    private static final String URL_REF = UrlRef.class.getSimpleName();
-
-    private AbstractElOrAttrConstruct getElOrAttrInstance(final String simpleClassName) throws JsonParseException {
-        try {
-            @SuppressWarnings("unchecked")
-            Class<? extends AbstractElOrAttrConstruct> elOrAttrClass =
-                    (Class<? extends AbstractElOrAttrConstruct>) ClassUtils.getClass(
-                            getClass().getPackage().getName() + "." + simpleClassName);
-            return elOrAttrClass.newInstance();
-        } catch (Exception e) {
-            throw new JsonParseException("Could not instantiate " + simpleClassName, JsonLocation.NA, e);
-        }
-    }
-
-    private ExprConstructImpl parseConstOrEnumExprConstruct(final JsonParser jp) throws IOException {
-        ExprConstructImpl result;
-        if (isAnnotationConstExprConstruct(jp)) {
-            result = parseAnnotationConstExprConstruct(jp);
-        } else {
-            result = jp.readValueAs( DynExprConstructImpl.class);
-        }
-        jp.nextToken();
-
-        return result;
-    }
-
-    @Override
-    protected DynExprConstructImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-            throws IOException, JsonProcessingException {
-
-        DynExprConstructImpl construct = null;
-
-        if (DynExprSingleParamOp.Type.fromString(jp.getCurrentName()) != null) {
-            final DynExprSingleParamOp dynExprSingleParamOp = new DynExprSingleParamOp();
-            dynExprSingleParamOp.setType(DynExprSingleParamOp.Type.fromString(jp.getCurrentName()));
-
-            jp.nextToken();
-            jp.nextToken();
-            dynExprSingleParamOp.setExpression(jp.readValueAs( DynExprConstructImpl.class));
-
-            construct = dynExprSingleParamOp;
-        } else if (DynExprDoubleParamOp.Type.fromString(jp.getCurrentName()) != null) {
-            final DynExprDoubleParamOp dynExprDoubleParamOp = new DynExprDoubleParamOp();
-            dynExprDoubleParamOp.setType(DynExprDoubleParamOp.Type.fromString(jp.getCurrentName()));
-
-            jp.nextToken();
-            jp.nextToken();
-            dynExprDoubleParamOp.setLeft(jp.readValueAs( DynExprConstructImpl.class));
-            dynExprDoubleParamOp.setRight(jp.readValueAs( DynExprConstructImpl.class));
-
-            construct = dynExprDoubleParamOp;
-        } else if (ArrayUtils.contains(EL_OR_ATTR, jp.getCurrentName())) {
-            final AbstractElOrAttrConstruct elOrAttr = getElOrAttrInstance(jp.getCurrentName());
-            elOrAttr.setValue(jp.nextTextValue());
-
-            construct = elOrAttr;
-        } else if (APPLY.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( Apply.class);
-        } else if (CAST.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( Cast.class);
-        } else if (COLLECTION.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( Collection.class);
-        } else if (IF.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            jp.nextToken();
-
-            final If _if = new If();
-            _if.setGuard(parseConstOrEnumExprConstruct(jp));
-            _if.setThen(parseConstOrEnumExprConstruct(jp));
-            _if.setElse(parseConstOrEnumExprConstruct(jp));
-
-            construct = _if;
-        } else if (IS_OF.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( IsOf.class);
-        } else if (LABELED_ELEMENT.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( LabeledElement.class);
-        } else if (NULL.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( Null.class);
-        } else if (RECORD.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( Record.class);
-        } else if (URL_REF.equals(jp.getCurrentName())) {
-            jp.nextToken();
-            construct = jp.readValueAs( UrlRef.class);
-        }
-
-        return construct;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
deleted file mode 100644
index ececbf2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprConstructImpl.java
+++ /dev/null
@@ -1,29 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
-
-@JsonDeserialize(using = DynExprConstructDeserializer.class)
-public abstract class DynExprConstructImpl extends ExprConstructImpl implements DynExprConstruct {
-
-  private static final long serialVersionUID = -642012862023177349L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
deleted file mode 100644
index a455a86..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprDoubleParamOp.java
+++ /dev/null
@@ -1,73 +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.edm.v4.annotation;
-
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
-
-public class DynExprDoubleParamOp extends DynExprConstructImpl {
-
-  private static final long serialVersionUID = -7974475975925167731L;
-
-  public static enum Type {
-
-    And,
-    Or;
-
-    public static Type fromString(final String value) {
-      Type result = null;
-      for (Type type : values()) {
-        if (value.equals(type.name())) {
-          result = type;
-        }
-      }
-      return result;
-    }
-  }
-
-  private Type type;
-
-  private DynExprConstruct left;
-
-  private DynExprConstruct right;
-
-  public Type getType() {
-    return type;
-  }
-
-  public void setType(final Type type) {
-    this.type = type;
-  }
-
-  public DynExprConstruct getLeft() {
-    return left;
-  }
-
-  public void setLeft(final DynExprConstruct left) {
-    this.left = left;
-  }
-
-  public DynExprConstruct getRight() {
-    return right;
-  }
-
-  public void setRight(final DynExprConstruct right) {
-    this.right = right;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
deleted file mode 100644
index fa5862f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/DynExprSingleParamOp.java
+++ /dev/null
@@ -1,69 +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.edm.v4.annotation;
-
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
-
-public class DynExprSingleParamOp extends DynExprConstructImpl {
-
-  private static final long serialVersionUID = -7974475975925167731L;
-
-  public static enum Type {
-
-    Not,
-    Eq,
-    Ne,
-    Gt,
-    Ge,
-    Lt,
-    Le;
-
-    public static Type fromString(final String value) {
-      Type result = null;
-      for (Type type : values()) {
-        if (value.equals(type.name())) {
-          result = type;
-        }
-      }
-      return result;
-    }
-
-  }
-
-  private Type type;
-
-  private DynExprConstruct expression;
-
-  public Type getType() {
-    return type;
-  }
-
-  public void setType(final Type type) {
-    this.type = type;
-  }
-
-  public DynExprConstruct getExpression() {
-    return expression;
-  }
-
-  public void setExpression(final DynExprConstruct expression) {
-    this.expression = expression;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
deleted file mode 100644
index b628006..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/ExprConstructImpl.java
+++ /dev/null
@@ -1,28 +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.edm.v4.annotation;
-
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
-import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
-
-public abstract class ExprConstructImpl extends AbstractEdmItem implements ExprConstruct {
-
-  private static final long serialVersionUID = 7108626008005050492L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
deleted file mode 100644
index f1c285d..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/If.java
+++ /dev/null
@@ -1,57 +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.edm.v4.annotation;
-
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
-
-public class If extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = 6752952406406218936L;
-
-  private ExprConstruct guard;
-
-  private ExprConstruct _then;
-
-  private ExprConstruct _else;
-
-  public ExprConstruct getGuard() {
-    return guard;
-  }
-
-  public void setGuard(final ExprConstruct guard) {
-    this.guard = guard;
-  }
-
-  public ExprConstruct getThen() {
-    return _then;
-  }
-
-  public void setThen(final ExprConstruct _then) {
-    this._then = _then;
-  }
-
-  public ExprConstruct getElse() {
-    return _else;
-  }
-
-  public void setElse(final ExprConstruct _else) {
-    this._else = _else;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.java
deleted file mode 100644
index 036a13c..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOf.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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
-
-@JsonDeserialize(using = IsOfDeserializer.class)
-public class IsOf extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = 6958304670385303776L;
-
-  private String type;
-
-  private String maxLength;
-
-  private BigInteger precision;
-
-  private BigInteger scale;
-
-  private String srid;
-
-  private DynExprConstruct value;
-
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-
-  public String getSrid() {
-    return srid;
-  }
-
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-  public DynExprConstruct getValue() {
-    return value;
-  }
-
-  public void setValue(final DynExprConstruct value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
deleted file mode 100644
index 68e5358..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/IsOfDeserializer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4.annotation;
-
-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 java.math.BigInteger;
-import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class IsOfDeserializer extends AbstractEdmDeserializer<IsOf> {
-
-  @Override
-  protected IsOf doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final IsOf isof = new IsOf();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Type".equals(jp.getCurrentName())) {
-          isof.setType(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          isof.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        } else if ("MaxLength".equals(jp.getCurrentName())) {
-          isof.setMaxLength(jp.nextTextValue());
-        } else if ("Precision".equals(jp.getCurrentName())) {
-          isof.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("Scale".equals(jp.getCurrentName())) {
-          isof.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("SRID".equals(jp.getCurrentName())) {
-          isof.setSrid(jp.nextTextValue());
-        } else {
-          isof.setValue(jp.readValueAs(DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return isof;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
deleted file mode 100644
index be762a9..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElement.java
+++ /dev/null
@@ -1,49 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
-
-@JsonDeserialize(using = LabeledElementDeserializer.class)
-public class LabeledElement extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = 6938971787086282939L;
-
-  private String name;
-
-  private DynExprConstruct value;
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  public DynExprConstruct getValue() {
-    return value;
-  }
-
-  public void setValue(final DynExprConstruct value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
deleted file mode 100644
index 60d9c57..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementDeserializer.java
+++ /dev/null
@@ -1,53 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class LabeledElementDeserializer extends AbstractEdmDeserializer<LabeledElement> {
-
-  @Override
-  protected LabeledElement doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final LabeledElement element = new LabeledElement();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          element.setName(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          element.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        } else {
-          element.setValue(jp.readValueAs(DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return element;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementReference.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementReference.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementReference.java
deleted file mode 100644
index c6f3b35..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/LabeledElementReference.java
+++ /dev/null
@@ -1,25 +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.edm.v4.annotation;
-
-public class LabeledElementReference extends AbstractElOrAttrConstruct {
-
-  private static final long serialVersionUID = 3649068436729494270L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NavigationPropertyPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NavigationPropertyPath.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NavigationPropertyPath.java
deleted file mode 100644
index 8105b3e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NavigationPropertyPath.java
+++ /dev/null
@@ -1,25 +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.edm.v4.annotation;
-
-public class NavigationPropertyPath extends AbstractElOrAttrConstruct {
-
-  private static final long serialVersionUID = -8066400142504963043L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Null.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Null.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Null.java
deleted file mode 100644
index d6d6bb0..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Null.java
+++ /dev/null
@@ -1,28 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-
-@JsonDeserialize(using = NullDeserializer.class)
-public class Null extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = -3611384710172781951L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
deleted file mode 100644
index 8d7e21e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/NullDeserializer.java
+++ /dev/null
@@ -1,49 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class NullDeserializer extends AbstractEdmDeserializer<Null> {
-
-  @Override
-  protected Null doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final Null _null = new Null();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Annotation".equals(jp.getCurrentName())) {
-          _null.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        }
-      }
-    }
-
-    return _null;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Path.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Path.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Path.java
deleted file mode 100644
index 8416a36..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Path.java
+++ /dev/null
@@ -1,25 +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.edm.v4.annotation;
-
-public class Path extends AbstractElOrAttrConstruct {
-
-  private static final long serialVersionUID = -2551058493469292082L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyPath.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyPath.java
deleted file mode 100644
index 96288e2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyPath.java
+++ /dev/null
@@ -1,25 +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.edm.v4.annotation;
-
-public class PropertyPath extends AbstractElOrAttrConstruct {
-
-  private static final long serialVersionUID = 2328584735437885159L;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
deleted file mode 100644
index 4411682..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValue.java
+++ /dev/null
@@ -1,49 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
-
-@JsonDeserialize(using = PropertyValueDeserializer.class)
-public class PropertyValue extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = 3081968466425707461L;
-
-  private String property;
-
-  private ExprConstruct value;
-
-  public String getProperty() {
-    return property;
-  }
-
-  public void setProperty(final String property) {
-    this.property = property;
-  }
-
-  public ExprConstruct getValue() {
-    return value;
-  }
-
-  public void setValue(final ExprConstruct value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
deleted file mode 100644
index fd3dfae..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/PropertyValueDeserializer.java
+++ /dev/null
@@ -1,55 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class PropertyValueDeserializer extends AbstractEdmDeserializer<PropertyValue> {
-
-  @Override
-  protected PropertyValue doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final PropertyValue propValue = new PropertyValue();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Property".equals(jp.getCurrentName())) {
-          propValue.setProperty(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          propValue.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        } else if (isAnnotationConstExprConstruct(jp)) {
-          propValue.setValue(parseAnnotationConstExprConstruct(jp));
-        } else {
-          propValue.setValue(jp.readValueAs(DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return propValue;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Record.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Record.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Record.java
deleted file mode 100644
index 2bed70c..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/Record.java
+++ /dev/null
@@ -1,46 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-
-@JsonDeserialize(using = RecordDeserializer.class)
-public class Record extends AnnotatedDynExprConstruct {
-
-  private static final long serialVersionUID = -2886526224721870304L;
-
-  private String type;
-
-  private final List<PropertyValue> propertyValues = new ArrayList<PropertyValue>();
-
-  public String getType() {
-    return type;
-  }
-
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  public List<PropertyValue> getPropertyValues() {
-    return propertyValues;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
deleted file mode 100644
index dbd4567..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/RecordDeserializer.java
+++ /dev/null
@@ -1,53 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
-
-public class RecordDeserializer extends AbstractEdmDeserializer<Record> {
-
-  @Override
-  protected Record doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final Record record = new Record();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Tyoe".equals(jp.getCurrentName())) {
-          record.setType(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          record.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        } else {
-          record.getPropertyValues().add(jp.readValueAs(PropertyValue.class));
-        }
-      }
-    }
-
-    return record;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
deleted file mode 100644
index eb32b16..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRef.java
+++ /dev/null
@@ -1,39 +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.edm.v4.annotation;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
-
-@JsonDeserialize(using = UrlRefDeserializer.class)
-public class UrlRef extends DynExprConstructImpl {
-
-  private static final long serialVersionUID = 3755101394647430897L;
-
-  private ExprConstruct value;
-
-  public ExprConstruct getValue() {
-    return value;
-  }
-
-  public void setValue(final ExprConstruct value) {
-    this.value = value;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRefDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRefDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRefDeserializer.java
deleted file mode 100644
index de91b7c..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/annotation/UrlRefDeserializer.java
+++ /dev/null
@@ -1,50 +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.edm.v4.annotation;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class UrlRefDeserializer extends AbstractEdmDeserializer<UrlRef> {
-
-  @Override
-  protected UrlRef doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final UrlRef urlref = new UrlRef();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if (isAnnotationConstExprConstruct(jp)) {
-          urlref.setValue(parseAnnotationConstExprConstruct(jp));
-        } else {
-          urlref.setValue(jp.readValueAs( DynExprConstructImpl.class));
-        }
-      }
-    }
-
-    return urlref;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java
new file mode 100644
index 0000000..48de560
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractEdmType.java
@@ -0,0 +1,262 @@
+/*
+ * 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.xml;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.odata4.client.api.data.EdmSimpleType;
+import org.apache.olingo.odata4.client.api.edm.xml.ComplexType;
+import org.apache.olingo.odata4.client.api.edm.EdmType;
+import org.apache.olingo.odata4.client.api.edm.EdmTypeNotFoundException;
+import org.apache.olingo.odata4.client.api.edm.xml.EntityType;
+import org.apache.olingo.odata4.client.api.edm.xml.EnumType;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+
+/**
+ * Parse type information from metadata into semantic data.
+ */
+public abstract class AbstractEdmType implements EdmType {
+
+  private final String typeExpression;
+
+  private final String baseType;
+
+  private final String namespaceOrAlias;
+
+  private boolean collection;
+
+  private EdmSimpleType simpleType;
+
+  private EnumType enumType;
+
+  private ComplexType complexType;
+
+  private EntityType 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 XMLMetadata 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 Schema schema = metadata.getSchema(namespaceOrAlias);
+
+      for (EnumType type : schema.getEnumTypes()) {
+        if (typeName.equals(type.getName())) {
+          this.enumType = type;
+        }
+      }
+      if (this.enumType == null) {
+        for (ComplexType type : schema.getComplexTypes()) {
+          if (typeName.equals(type.getName())) {
+            this.complexType = type;
+          }
+        }
+        if (this.complexType == null) {
+          for (EntityType 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 EnumType 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 ComplexType 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 EntityType 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/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
index c1b2f95..95c4c81 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractMember.java
@@ -29,7 +29,7 @@ public abstract class AbstractMember extends AbstractEdmItem implements Member {
   private String name;
 
   @JsonProperty("Value")
-  private Integer value;
+  private String value;
 
   @Override
   public String getName() {
@@ -41,11 +41,11 @@ public abstract class AbstractMember extends AbstractEdmItem implements Member {
   }
 
   @Override
-  public Integer getValue() {
+  public String getValue() {
     return value;
   }
 
-  public void setValue(final Integer value) {
+  public void setValue(final String value) {
     this.value = value;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
index 66f9dea..89c15db 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractParameter.java
@@ -18,31 +18,25 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigInteger;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
 
+@JsonDeserialize(using = ParameterDeserializer.class)
 public abstract class AbstractParameter extends AbstractEdmItem implements CommonParameter {
 
   private static final long serialVersionUID = -4305016554930334342L;
 
-  @JsonProperty(value = "Name", required = true)
   private String name;
 
-  @JsonProperty(value = "Type", required = true)
   private String type;
 
-  @JsonProperty(value = "Nullable")
   private boolean nullable = true;
 
-  @JsonProperty("MaxLength")
-  private String maxLength;
+  private Integer maxLength;
 
-  @JsonProperty("Precision")
-  private BigInteger precision;
+  private Integer precision;
 
-  @JsonProperty("Scale")
-  private BigInteger scale;
+  private Integer scale;
 
   @Override
   public String getName() {
@@ -75,32 +69,32 @@ public abstract class AbstractParameter extends AbstractEdmItem implements Commo
   }
 
   @Override
-  public String getMaxLength() {
+  public Integer getMaxLength() {
     return maxLength;
   }
 
   @Override
-  public void setMaxLength(final String maxLength) {
+  public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
 
   @Override
-  public BigInteger getPrecision() {
+  public Integer getPrecision() {
     return precision;
   }
 
   @Override
-  public void setPrecision(final BigInteger precision) {
+  public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
 
   @Override
-  public BigInteger getScale() {
+  public Integer getScale() {
     return scale;
   }
 
   @Override
-  public void setScale(final BigInteger scale) {
+  public void setScale(final Integer scale) {
     this.scale = scale;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
index 3f2754a..2535e23 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractProperty.java
@@ -18,53 +18,40 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigInteger;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.xml.CommonProperty;
 import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
 import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
 
+@JsonDeserialize(using = PropertyDeserializer.class)
 public abstract class AbstractProperty extends AbstractEdmItem implements CommonProperty {
 
   private static final long serialVersionUID = -6004492361142315153L;
 
-  @JsonProperty(value = "Name", required = true)
   private String name;
 
-  @JsonProperty(value = "Type", required = true)
   private String type;
 
-  @JsonProperty(value = "Nullable")
   private boolean nullable = true;
 
-  @JsonProperty(value = "DefaultValue")
   private String defaultValue;
 
-  @JsonProperty(value = "MaxLength")
-  private String maxLength;
+  private Integer maxLength;
 
-  @JsonProperty(value = "FixedLength")
   private boolean fixedLength;
 
-  @JsonProperty(value = "Precision")
-  private BigInteger precision;
+  private Integer precision;
 
-  @JsonProperty(value = "Scale")
-  private BigInteger scale;
+  private Integer scale;
 
-  @JsonProperty(value = "Unicode")
   private boolean unicode = true;
 
-  @JsonProperty(value = "Collation")
   private String collation;
 
-  @JsonProperty(value = "SRID")
   private String srid;
 
-  @JsonProperty(value = "ConcurrencyMode")
   private ConcurrencyMode concurrencyMode;
 
-  @JsonProperty("StoreGeneratedPattern")
   private StoreGeneratedPattern storeGeneratedPattern = StoreGeneratedPattern.None;
 
   @Override
@@ -108,12 +95,12 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
   }
 
   @Override
-  public String getMaxLength() {
+  public Integer getMaxLength() {
     return maxLength;
   }
 
   @Override
-  public void setMaxLength(final String maxLength) {
+  public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
 
@@ -128,22 +115,22 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
   }
 
   @Override
-  public BigInteger getPrecision() {
+  public Integer getPrecision() {
     return precision;
   }
 
   @Override
-  public void setPrecision(final BigInteger precision) {
+  public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
 
   @Override
-  public BigInteger getScale() {
+  public Integer getScale() {
     return scale;
   }
 
   @Override
-  public void setScale(final BigInteger scale) {
+  public void setScale(final Integer scale) {
     this.scale = scale;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractXMLMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractXMLMetadata.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractXMLMetadata.java
new file mode 100644
index 0000000..e052948
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/AbstractXMLMetadata.java
@@ -0,0 +1,95 @@
+/*
+ * 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.xml;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.odata4.client.api.edm.xml.XMLMetadata;
+import org.apache.olingo.odata4.client.api.edm.xml.Edmx;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+
+/**
+ * Entry point for access information about EDM metadata.
+ */
+public abstract class AbstractXMLMetadata extends AbstractEdmItem implements XMLMetadata {
+
+  private static final long serialVersionUID = -1214173426671503187L;
+
+  protected final Edmx edmx;
+
+  protected final Map<String, Schema> schemaByNsOrAlias;
+
+  public AbstractXMLMetadata(final Edmx edmx) {
+    this.edmx = edmx;
+
+    this.schemaByNsOrAlias = new HashMap<String, Schema>();
+    for (Schema schema : edmx.getDataServices().getSchemas()) {
+      this.schemaByNsOrAlias.put(schema.getNamespace(), schema);
+      if (StringUtils.isNotBlank(schema.getAlias())) {
+        this.schemaByNsOrAlias.put(schema.getAlias(), schema);
+      }
+    }
+  }
+
+  /**
+   * Checks whether the given key is a valid namespace or alias in the EdM metadata document.
+   *
+   * @param key namespace or alias
+   * @return true if key is valid namespace or alias
+   */
+  @Override
+  public boolean isNsOrAlias(final String key) {
+    return this.schemaByNsOrAlias.keySet().contains(key);
+  }
+
+  /**
+   * Returns the Schema at the specified position in the EdM metadata document.
+   *
+   * @param index index of the Schema to return
+   * @return the Schema at the specified position in the EdM metadata document
+   */
+  @Override
+  public Schema getSchema(final int index) {
+    return this.edmx.getDataServices().getSchemas().get(index);
+  }
+
+  /**
+   * Returns the Schema with the specified key (namespace or alias) in the EdM metadata document.
+   *
+   * @param key namespace or alias
+   * @return the Schema with the specified key in the EdM metadata document
+   */
+  @Override
+  public Schema getSchema(final String key) {
+    return this.schemaByNsOrAlias.get(key);
+  }
+
+  /**
+   * Returns all Schema objects defined in the EdM metadata document.
+   *
+   * @return all Schema objects defined in the EdM metadata document
+   */
+  @Override
+  public List<? extends Schema> getSchemas() {
+    return this.edmx.getDataServices().getSchemas();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/ParameterDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/ParameterDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/ParameterDeserializer.java
new file mode 100644
index 0000000..e8bd47a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/ParameterDeserializer.java
@@ -0,0 +1,69 @@
+/*
+ * 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.xml;
+
+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.api.edm.xml.v3.ParameterMode;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+
+public class ParameterDeserializer extends AbstractEdmDeserializer<AbstractParameter> {
+
+  @Override
+  protected AbstractParameter doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AbstractParameter parameter = ODataServiceVersion.V30 == client.getServiceVersion()
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.ParameterImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.ParameterImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          parameter.setName(jp.nextTextValue());
+        } else if ("Type".equals(jp.getCurrentName())) {
+          parameter.setType(jp.nextTextValue());
+        } else if ("Nullable".equals(jp.getCurrentName())) {
+          parameter.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          final String maxLenght = jp.nextTextValue();
+          parameter.setMaxLength(maxLenght.equalsIgnoreCase("max") ? Integer.MAX_VALUE : Integer.valueOf(maxLenght));
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          parameter.setPrecision(Integer.valueOf(jp.nextTextValue()));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          parameter.setScale(Integer.valueOf(jp.nextTextValue()));
+        } else if ("Mode".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.ParameterImpl) parameter).
+                  setMode(ParameterMode.valueOf(jp.nextTextValue()));
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.ParameterImpl) parameter).setSrid(jp.nextTextValue());
+        }
+      }
+    }
+
+    return parameter;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyDeserializer.java
new file mode 100644
index 0000000..f45b510
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/PropertyDeserializer.java
@@ -0,0 +1,102 @@
+/*
+ * 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.xml;
+
+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.xml.v4.AnnotationImpl;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.commons.api.edm.constants.ConcurrencyMode;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.odata4.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.odata4.commons.api.edm.constants.StoreGeneratedPattern;
+
+public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProperty> {
+
+  @Override
+  protected AbstractProperty doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AbstractProperty property = ODataServiceVersion.V30 == client.getServiceVersion()
+            ? new org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl()
+            : new org.apache.olingo.odata4.client.core.edm.xml.v4.PropertyImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          property.setName(jp.nextTextValue());
+        } else if ("Type".equals(jp.getCurrentName())) {
+          property.setType(jp.nextTextValue());
+        } else if ("Nullable".equals(jp.getCurrentName())) {
+          property.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("DefaultValue".equals(jp.getCurrentName())) {
+          property.setDefaultValue(jp.nextTextValue());
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          final String maxLenght = jp.nextTextValue();
+          property.setMaxLength(maxLenght.equalsIgnoreCase("max") ? Integer.MAX_VALUE : Integer.valueOf(maxLenght));
+        } else if ("FixedLength".equals(jp.getCurrentName())) {
+          property.setFixedLength(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          property.setPrecision(Integer.valueOf(jp.nextTextValue()));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          property.setScale(Integer.valueOf(jp.nextTextValue()));
+        } else if ("Unicode".equals(jp.getCurrentName())) {
+          property.setUnicode(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("Collation".equals(jp.getCurrentName())) {
+          property.setCollation(jp.nextTextValue());
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          property.setSrid(jp.nextTextValue());
+        } else if ("ConcurrencyMode".equals(jp.getCurrentName())) {
+          property.setConcurrencyMode(ConcurrencyMode.valueOf(jp.nextTextValue()));
+        } else if ("StoreGeneratedPattern".equals(jp.getCurrentName())) {
+          property.setStoreGeneratedPattern(StoreGeneratedPattern.valueOf(jp.nextTextValue()));
+        } else if ("FC_SourcePath".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl) property).
+                  setFcSourcePath(jp.nextTextValue());
+        } else if ("FC_TargetPath".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl) property).
+                  setFcTargetPath(jp.nextTextValue());
+        } else if ("FC_ContentKind".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl) property).
+                  setFcContentKind(EdmContentKind.valueOf(jp.nextTextValue()));
+        } else if ("FC_NsPrefix".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl) property).
+                  setFcNSPrefix(jp.nextTextValue());
+        } else if ("FC_NsUri".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl) property).
+                  setFcNSURI(jp.nextTextValue());
+        } else if ("FC_KeepInContent".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v3.PropertyImpl) property).
+                  setFcKeepInContent(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          ((org.apache.olingo.odata4.client.core.edm.xml.v4.PropertyImpl) property).
+                  setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return property;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
index d0a8559..0912b46 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/ParameterImpl.java
@@ -19,7 +19,6 @@
 package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
 import org.apache.olingo.odata4.client.api.edm.xml.v3.ParameterMode;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.Parameter;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractParameter;
 
@@ -27,7 +26,6 @@ public class ParameterImpl extends AbstractParameter implements Parameter {
 
   private static final long serialVersionUID = 7596724999614891358L;
 
-  @JsonProperty("Mode")
   private ParameterMode mode;
 
   @Override


[16/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEnumType.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEnumType.java
new file mode 100644
index 0000000..dd89349
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmEnumType.java
@@ -0,0 +1,205 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmInt64;
+
+public abstract class AbstractEdmEnumType extends EdmTypeImpl implements EdmEnumType {
+
+  private final boolean isFlags;
+
+  private final String uriPrefix;
+
+  private final String uriSuffix;
+
+  private List<String> memberNames;
+
+  private Map<String, EdmMember> members;
+
+  public AbstractEdmEnumType(final Edm edm, final FullQualifiedName fqn, final boolean isFlags) {
+    super(edm, fqn, EdmTypeKind.ENUM);
+
+    this.isFlags = isFlags;
+    this.uriPrefix = fqn.getFullQualifiedNameAsString() + '\'';
+    this.uriSuffix = "'";
+  }
+
+  protected abstract Collection<? extends EdmMember> getMembers();
+
+  @Override
+  public EdmMember getMember(final String name) {
+    if (members == null) {
+      members = new LinkedHashMap<String, EdmMember>();
+      for (final EdmMember member : getMembers()) {
+        members.put(member.getName(), member);
+      }
+    }
+    return members.get(name);
+  }
+
+  @Override
+  public List<String> getMemberNames() {
+    if (memberNames == null) {
+      memberNames = new ArrayList<String>();
+      for (final EdmMember member : getMembers()) {
+        memberNames.add(member.getName());
+      }
+    }
+    return memberNames;
+  }
+
+  @Override
+  public abstract EdmPrimitiveType getUnderlyingType();
+
+  @Override
+  public boolean isCompatible(final EdmPrimitiveType primitiveType) {
+    return equals(primitiveType);
+  }
+
+  @Override
+  public Class<?> getDefaultType() {
+    return getUnderlyingType().getDefaultType();
+  }
+
+  @Override
+  public boolean validate(final String value, final Boolean isNullable, final Integer maxLength,
+          final Integer precision, final Integer scale, final Boolean isUnicode) {
+
+    try {
+      valueOfString(value, isNullable, maxLength, precision, scale, isUnicode, getDefaultType());
+      return true;
+    } catch (final EdmPrimitiveTypeException e) {
+      return false;
+    }
+  }
+
+  private 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 : 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;
+  }
+
+  @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 {
+
+    if (value == null) {
+      if (isNullable != null && !isNullable) {
+        throw new EdmPrimitiveTypeException("EdmPrimitiveTypeException.LITERAL_NULL_NOT_ALLOWED");
+      }
+      return null;
+    }
+
+    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 String constructEnumValue(final long value) throws EdmPrimitiveTypeException {
+    long remaining = value;
+    StringBuilder result = new StringBuilder();
+
+    for (final EdmMember member : 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();
+  }
+
+  @Override
+  public String valueToString(final Object value, final Boolean isNullable, final Integer maxLength,
+          final Integer precision, final Integer scale, final Boolean isUnicode) throws EdmPrimitiveTypeException {
+
+    if (value == null) {
+      if (isNullable != null && !isNullable) {
+        throw new EdmPrimitiveTypeException("EdmPrimitiveTypeException.VALUE_NULL_NOT_ALLOWED");
+      }
+      return null;
+    }
+    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())");
+    }
+  }
+
+  @Override
+  public String toUriLiteral(final String literal) {
+    return literal == null ? null
+           : uriPrefix.isEmpty() && uriSuffix.isEmpty() ? literal : uriPrefix + literal + uriSuffix;
+  }
+
+  @Override
+  public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
+    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)");
+    }
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmImpl.java
index 29d9b04..34eba4b 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmImpl.java
@@ -65,7 +65,7 @@ public abstract class AbstractEdmImpl implements Edm {
   private EdmServiceMetadata serviceMetadata;
 
   private Map<String, String> aliasToNamespaceInfo;
-
+  
   @Override
   public EdmEntityContainer getEntityContainer(final FullQualifiedName namespaceOrAliasFQN) {
     final FullQualifiedName fqn = resolvePossibleAlias(namespaceOrAliasFQN);

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmKeyPropertyRef.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmKeyPropertyRef.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmKeyPropertyRef.java
new file mode 100644
index 0000000..157dd73
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmKeyPropertyRef.java
@@ -0,0 +1,80 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+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.EdmProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmStructuredType;
+
+public abstract class AbstractEdmKeyPropertyRef implements EdmKeyPropertyRef {
+
+  private final EdmEntityType edmEntityType;
+
+  private EdmProperty property;
+
+  public AbstractEdmKeyPropertyRef(final EdmEntityType edmEntityType) {
+    this.edmEntityType = edmEntityType;
+  }
+
+  @Override
+  public abstract String getKeyPropertyName();
+
+  @Override
+  public abstract String getAlias();
+
+  @Override
+  public abstract String getPath();
+
+  @Override
+  public EdmProperty getProperty() {
+    if (property == null) {
+      if (getAlias() == null) {
+        property = edmEntityType.getStructuralProperty(getKeyPropertyName());
+        if (property == null) {
+          throw new EdmException("Invalid key property ref specified. Can´t find property with name: "
+                                 + getKeyPropertyName());
+        }
+      } else {
+        if (getPath() == null || getPath().isEmpty()) {
+          throw new EdmException("Alias but no path specified for propertyRef");
+        }
+        final String[] splitPath = getPath().split("/");
+        EdmStructuredType structType = edmEntityType;
+        for (int i = 0; i < splitPath.length - 1; i++) {
+          final EdmProperty _property = structType.getStructuralProperty(splitPath[i]);
+          if (_property == null) {
+            throw new EdmException("Invalid property ref specified. Can´t find property with name: " + splitPath[i]
+                                   + " at type: " + structType.getNamespace() + "." + structType.getName());
+          }
+          structType = (EdmStructuredType) _property.getType();
+        }
+        property = structType.getStructuralProperty(splitPath[splitPath.length - 1]);
+        if (property == null) {
+          throw new EdmException("Invalid property ref specified. Can´t find property with name: "
+                                 + splitPath[splitPath.length - 1] + " at type: " + structType.getNamespace() + "."
+                                 + structType.getName());
+        }
+      }
+    }
+
+    return property;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmNavigationProperty.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmNavigationProperty.java
new file mode 100644
index 0000000..3140ef7
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmNavigationProperty.java
@@ -0,0 +1,76 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmStructuredType;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+
+public abstract class AbstractEdmNavigationProperty extends EdmElementImpl implements EdmNavigationProperty {
+
+  private EdmEntityType typeImpl;
+
+  private EdmNavigationProperty partnerNavigationProperty;
+
+  public AbstractEdmNavigationProperty(final Edm edm, final String name) {
+    super(edm, name);
+  }
+
+  protected abstract FullQualifiedName getTypeFQN();
+
+  @Override
+  public EdmType getType() {
+    if (typeImpl == null) {
+      typeImpl = edm.getEntityType(getTypeFQN());
+      if (typeImpl == null) {
+        throw new EdmException("Cannot find type with name: " + getTypeFQN());
+      }
+    }
+    return typeImpl;
+  }
+
+  protected abstract String internatGetPartner();
+
+  @Override
+  public EdmNavigationProperty getPartner() {
+    if (partnerNavigationProperty == null) {
+      String partner = internatGetPartner();
+      if (partner != null) {
+        EdmStructuredType type = (EdmStructuredType) getType();
+        EdmNavigationProperty property = null;
+        final String[] split = partner.split("/");
+        for (String element : split) {
+          property = type.getNavigationProperty(element);
+          if (property == null) {
+            throw new EdmException("Cannot find property with name: " + element + " at type " + type.getName());
+          }
+          type = (EdmStructuredType) property.getType();
+        }
+        partnerNavigationProperty = property;
+      }
+    }
+    return partnerNavigationProperty;
+  }
+
+  public abstract String getReferencingPropertyName(String referencedPropertyName);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperation.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperation.java
new file mode 100644
index 0000000..933714f
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperation.java
@@ -0,0 +1,113 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
+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.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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public abstract class AbstractEdmOperation extends EdmTypeImpl implements EdmOperation {
+
+  private final Map<String, EdmParameter> parameters = new LinkedHashMap<String, EdmParameter>();
+
+  private String entitySetPath;
+
+  private boolean isBound;
+
+  private EdmReturnType returnType;
+
+  private List<String> parameterNames;
+
+  protected AbstractEdmOperation(final Edm edm, final FullQualifiedName fqn, final EdmTypeKind kind) {
+    super(edm, fqn, kind);
+  }
+
+  protected void setParameters(final List<EdmParameter> _parameters) {
+    for (EdmParameter parameter : _parameters) {
+      parameters.put(parameter.getName(), parameter);
+    }
+  }
+
+  protected void setEntitySetPath(final String entitySetPath) {
+    this.entitySetPath = entitySetPath;
+  }
+
+  protected void setIsBound(final boolean isBound) {
+    this.isBound = isBound;
+  }
+
+  protected void setReturnType(final EdmReturnType returnType) {
+    this.returnType = returnType;
+  }
+
+  @Override
+  public EdmParameter getParameter(final String name) {
+    return parameters.get(name);
+  }
+
+  @Override
+  public List<String> getParameterNames() {
+    if (parameterNames == null) {
+      parameterNames = new ArrayList<String>(parameters.size());
+      for (String parameterName : parameters.keySet()) {
+        parameterNames.add(parameterName);
+      }
+    }
+    return parameterNames;
+  }
+
+  @Override
+  public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
+    EdmEntitySet returnedEntitySet = null;
+    if (bindingParameterEntitySet != null && entitySetPath != null) {
+      final EdmBindingTarget relatedBindingTarget = bindingParameterEntitySet.
+              getRelatedBindingTarget(entitySetPath);
+      if (relatedBindingTarget == null) {
+        throw new EdmException("Cannot find entity set with path: " + entitySetPath);
+      }
+      if (relatedBindingTarget instanceof EdmEntitySet) {
+        returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
+      } else {
+        throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName() + " must be an entity set");
+      }
+    }
+    return returnedEntitySet;
+  }
+
+  @Override
+  public EdmReturnType getReturnType() {
+    return returnType;
+  }
+
+  @Override
+  public boolean isBound() {
+    return isBound;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperationImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperationImport.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperationImport.java
new file mode 100644
index 0000000..07bfb7c
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmOperationImport.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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmOperationImport;
+import org.apache.olingo.odata4.commons.api.edm.Target;
+
+public abstract class AbstractEdmOperationImport extends EdmNamedImpl implements EdmOperationImport {
+
+  protected final EdmEntityContainer container;
+
+  private final Target entitySet;
+
+  private EdmEntitySet returnedEntitySet;
+
+  public AbstractEdmOperationImport(final Edm edm, final EdmEntityContainer container, final String name,
+          final Target entitySet) {
+
+    super(edm, name);
+    this.container = container;
+    this.entitySet = entitySet;
+  }
+
+  @Override
+  public EdmEntitySet getReturnedEntitySet() {
+    if (entitySet != null && returnedEntitySet == null) {
+      EdmEntityContainer entityContainer = edm.getEntityContainer(entitySet.getEntityContainer());
+      if (entityContainer == null) {
+        throw new EdmException("Can´t find entity container with name: " + entitySet.getEntityContainer());
+      }
+      returnedEntitySet = entityContainer.getEntitySet(entitySet.getTargetName());
+      if (returnedEntitySet == null) {
+        throw new EdmException("Can´t find entity set with name: " + entitySet.getTargetName());
+      }
+    }
+    return returnedEntitySet;
+  }
+
+  @Override
+  public EdmEntityContainer getEntityContainer() {
+    return container;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmParameter.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmParameter.java
new file mode 100644
index 0000000..e4adb41
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmParameter.java
@@ -0,0 +1,87 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+
+public abstract class AbstractEdmParameter extends EdmElementImpl implements EdmParameter {
+
+  private final FullQualifiedName paramType;
+
+  private EdmType typeImpl;
+
+  public AbstractEdmParameter(final Edm edm, final String name, final FullQualifiedName paramType) {
+    super(edm, name);
+    this.paramType = paramType;
+  }
+
+  @Override
+  public EdmType getType() {
+    if (typeImpl == null) {
+      if (EdmPrimitiveType.EDM_NAMESPACE.equals(paramType.getNamespace())) {
+        try {
+          typeImpl = EdmPrimitiveTypeKind.valueOf(paramType.getName()).getEdmPrimitiveTypeInstance();
+        } catch (IllegalArgumentException e) {
+          throw new EdmException("Cannot find type with name: " + paramType, e);
+        }
+      } else {
+        typeImpl = edm.getComplexType(paramType);
+        if (typeImpl == null) {
+          typeImpl = edm.getEntityType(paramType);
+          if (typeImpl == null) {
+            typeImpl = edm.getEnumType(paramType);
+            if (typeImpl == null) {
+              typeImpl = edm.getTypeDefinition(paramType);
+              if (typeImpl == null) {
+                throw new EdmException("Cannot find type with name: " + paramType);
+              }
+            }
+          }
+        }
+      }
+    }
+    return typeImpl;
+  }
+
+  @Override
+  public abstract boolean isCollection();
+
+  @Override
+  public abstract EdmMapping getMapping();
+
+  @Override
+  public abstract Boolean isNullable();
+
+  @Override
+  public abstract Integer getMaxLength();
+
+  @Override
+  public abstract Integer getPrecision();
+
+  @Override
+  public abstract Integer getScale();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmProperty.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmProperty.java
new file mode 100644
index 0000000..ba28f6c
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmProperty.java
@@ -0,0 +1,70 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.EdmProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+
+public abstract class AbstractEdmProperty extends EdmElementImpl implements EdmProperty {
+
+  private EdmType propertyType;
+
+  public AbstractEdmProperty(final Edm edm, final String name) {
+    super(edm, name);
+  }
+
+  protected abstract FullQualifiedName getTypeFQN();
+
+  @Override
+  public boolean isPrimitive() {
+    return EdmPrimitiveType.EDM_NAMESPACE.equals(getTypeFQN().getNamespace());
+  }
+
+  @Override
+  public EdmType getType() {
+    if (propertyType == null) {
+      final FullQualifiedName typeName = getTypeFQN();
+      if (isPrimitive()) {
+        try {
+          propertyType = EdmPrimitiveTypeKind.valueOf(typeName.getName()).getEdmPrimitiveTypeInstance();
+        } catch (IllegalArgumentException e) {
+          throw new EdmException("Cannot find type with name: " + typeName, e);
+        }
+      } else {
+        propertyType = edm.getComplexType(typeName);
+        if (propertyType == null) {
+          propertyType = edm.getEnumType(typeName);
+          if (propertyType == null) {
+            propertyType = edm.getTypeDefinition(typeName);
+            if (propertyType == null) {
+              throw new EdmException("Cannot find type with name: " + typeName);
+            }
+          }
+        }
+      }
+    }
+
+    return propertyType;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmReturnType.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmReturnType.java
new file mode 100644
index 0000000..7f2fb39
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmReturnType.java
@@ -0,0 +1,85 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+
+public abstract class AbstractEdmReturnType implements EdmReturnType {
+
+  private final Edm edm;
+
+  private final FullQualifiedName typeName;
+
+  private EdmType typeImpl;
+
+  public AbstractEdmReturnType(final Edm edm, final FullQualifiedName typeName) {
+    this.edm = edm;
+    this.typeName = typeName;
+  }
+
+  @Override
+  public EdmType getType() {
+    if (typeImpl == null) {
+      if (EdmPrimitiveType.EDM_NAMESPACE.equals(typeName.getNamespace())) {
+        try {
+          typeImpl = EdmPrimitiveTypeKind.valueOf(typeName.getName()).getEdmPrimitiveTypeInstance();
+        } catch (IllegalArgumentException e) {
+          throw new EdmException("Cannot find type with name: " + typeName, e);
+        }
+      } else {
+        typeImpl = edm.getComplexType(typeName);
+        if (typeImpl == null) {
+          typeImpl = edm.getEntityType(typeName);
+          if (typeImpl == null) {
+            typeImpl = edm.getEnumType(typeName);
+            if (typeImpl == null) {
+              typeImpl = edm.getTypeDefinition(typeName);
+              if (typeImpl == null) {
+                throw new EdmException("Cant find type with name: " + typeName);
+              }
+            }
+          }
+        }
+      }
+    }
+    return typeImpl;
+  }
+
+  @Override
+  public abstract Boolean isNullable();
+
+  @Override
+  public abstract Integer getMaxLength();
+
+  @Override
+  public abstract Integer getPrecision();
+
+  @Override
+  public abstract Integer getScale();
+
+  @Override
+  public abstract boolean isCollection();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmStructuredType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmStructuredType.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmStructuredType.java
new file mode 100644
index 0000000..2a3df7c
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmStructuredType.java
@@ -0,0 +1,128 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmElement;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmStructuredType;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public abstract class AbstractEdmStructuredType extends EdmTypeImpl implements EdmStructuredType {
+
+  protected EdmStructuredType baseType;
+
+  private List<String> propertyNames;
+
+  private List<String> navigationPropertyNames;
+
+  public AbstractEdmStructuredType(final Edm edm, final FullQualifiedName fqn, final EdmTypeKind kind,
+          final FullQualifiedName baseTypeName) {
+
+    super(edm, fqn, kind);
+  }
+
+  protected abstract EdmStructuredType buildBaseType(FullQualifiedName baseTypeName);
+
+  protected abstract Map<String, EdmProperty> getProperties();
+
+  protected abstract Map<String, EdmNavigationProperty> getNavigationProperties();
+
+  @Override
+  public List<String> getPropertyNames() {
+    if (propertyNames == null) {
+      propertyNames = new ArrayList<String>();
+      if (baseType != null) {
+        propertyNames.addAll(baseType.getPropertyNames());
+      }
+      propertyNames.addAll(getProperties().keySet());
+    }
+    return propertyNames;
+  }
+
+  @Override
+  public List<String> getNavigationPropertyNames() {
+    if (navigationPropertyNames == null) {
+      navigationPropertyNames = new ArrayList<String>();
+      if (baseType != null) {
+        navigationPropertyNames.addAll(baseType.getNavigationPropertyNames());
+      }
+      navigationPropertyNames.addAll(getNavigationProperties().keySet());
+    }
+    return navigationPropertyNames;
+  }
+
+  @Override
+  public EdmElement getProperty(final String name) {
+    EdmElement property = getStructuralProperty(name);
+    if (property == null) {
+      property = getNavigationProperty(name);
+    }
+    return property;
+  }
+
+  @Override
+  public EdmProperty getStructuralProperty(final String name) {
+    EdmProperty property = null;
+    if (baseType != null) {
+      property = baseType.getStructuralProperty(name);
+    }
+    if (property == null) {
+      property = getProperties().get(name);
+    }
+    return property;
+  }
+
+  @Override
+  public EdmNavigationProperty getNavigationProperty(final String name) {
+    EdmNavigationProperty property = null;
+    if (baseType != null) {
+      property = baseType.getNavigationProperty(name);
+    }
+    if (property == null) {
+      property = getNavigationProperties().get(name);
+    }
+    return property;
+  }
+
+  @Override
+  public boolean compatibleTo(final EdmType targetType) {
+    EdmStructuredType sourceType = this;
+    if (targetType == null) {
+      throw new EdmException("Target type must not be null");
+    }
+    while (!sourceType.getName().equals(targetType.getName()) 
+           || !sourceType.getNamespace().equals(targetType.getNamespace())) {
+      
+      sourceType = sourceType.getBaseType();
+      if (sourceType == null) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmTypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmTypeDefinition.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmTypeDefinition.java
new file mode 100644
index 0000000..6a4c03a
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/AbstractEdmTypeDefinition.java
@@ -0,0 +1,107 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public abstract class AbstractEdmTypeDefinition extends EdmNamedImpl implements EdmTypeDefinition {
+
+  private final String namespace;
+
+  public AbstractEdmTypeDefinition(final Edm edm, final FullQualifiedName typeDefinitionName) {
+    super(edm, typeDefinitionName.getName());
+    this.namespace = typeDefinitionName.getNamespace();
+  }
+
+  @Override
+  public abstract EdmPrimitiveType getUnderlyingType();
+
+  @Override
+  public boolean isCompatible(final EdmPrimitiveType primitiveType) {
+    return getUnderlyingType().isCompatible(primitiveType);
+  }
+
+  @Override
+  public Class<?> getDefaultType() {
+    return getUnderlyingType().getDefaultType();
+  }
+
+  @Override
+  public boolean validate(final String value, final Boolean isNullable, final Integer maxLength,
+          final Integer precision, final Integer scale,
+          final Boolean isUnicode) {
+
+    return getUnderlyingType().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 getUnderlyingType().
+            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 getUnderlyingType().valueToString(value, isNullable, maxLength, precision, scale, isUnicode);
+  }
+
+  @Override
+  public String toUriLiteral(final String literal) {
+    return getUnderlyingType().toUriLiteral(literal);
+  }
+
+  @Override
+  public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
+    return getUnderlyingType().fromUriLiteral(literal);
+  }
+
+  @Override
+  public String getNamespace() {
+    return namespace;
+  }
+
+  @Override
+  public EdmTypeKind getKind() {
+    return EdmTypeKind.DEFINITION;
+  }
+
+  @Override
+  public abstract Integer getMaxLength();
+
+  @Override
+  public abstract Integer getPrecision();
+
+  @Override
+  public abstract Integer getScale();
+
+  @Override
+  public abstract Boolean isUnicode();
+
+}

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmElementImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmElementImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmElementImpl.java
new file mode 100644
index 0000000..d931853
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmElementImpl.java
@@ -0,0 +1,29 @@
+/* 
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmElement;
+
+public abstract class EdmElementImpl extends EdmNamedImpl implements EdmElement {
+
+  public EdmElementImpl(final Edm edm, final String name) {
+    super(edm, name);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmEntitySetInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmEntitySetInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmEntitySetInfoImpl.java
new file mode 100644
index 0000000..768960a
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/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;
+
+import java.net.URI;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+
+public class EdmEntitySetInfoImpl implements EdmEntitySetInfo {
+
+  private final String entityContainerName;
+
+  private final String entitySetName;
+
+  public EdmEntitySetInfoImpl(final String entityContainerName, final String entitySetName) {
+    this.entityContainerName = entityContainerName;
+    this.entitySetName = entitySetName;
+  }
+
+  @Override
+  public String getEntityContainerName() {
+    return entityContainerName;
+  }
+
+  @Override
+  public String getEntitySetName() {
+    return entitySetName;
+  }
+
+  @Override
+  public URI getEntitySetUri() {
+    throw new EdmException("Not yet implemented");
+  }
+
+}

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmMemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmMemberImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmMemberImpl.java
new file mode 100644
index 0000000..7e6c998
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmMemberImpl.java
@@ -0,0 +1,38 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmMember;
+
+public class EdmMemberImpl extends EdmNamedImpl implements EdmMember {
+
+  private final String value;
+
+  public EdmMemberImpl(final Edm edm, final String name, final String value) {
+    super(edm, name);
+    this.value = value;
+  }
+
+  @Override
+  public String getValue() {
+    return value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmNamedImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmNamedImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmNamedImpl.java
new file mode 100644
index 0000000..5f0ac2c
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmNamedImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmNamed;
+
+public abstract class EdmNamedImpl implements EdmNamed {
+
+  protected final Edm edm;
+
+  private final String name;
+
+  public EdmNamedImpl(final Edm edm, final String name) {
+    this.edm = edm;
+    this.name = name;
+  }
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmOperationImportInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmOperationImportInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmOperationImportInfoImpl.java
new file mode 100644
index 0000000..334669b
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmOperationImportInfoImpl.java
@@ -0,0 +1,36 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmOperationImportInfo;
+
+public abstract class EdmOperationImportInfoImpl implements EdmOperationImportInfo {
+
+  protected String entityContainerName;
+
+  public EdmOperationImportInfoImpl(final String entityContainerName) {
+    this.entityContainerName = entityContainerName;
+  }
+
+  @Override
+  public String getEntityContainerName() {
+    return this.entityContainerName;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmSingletonInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmSingletonInfoImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmSingletonInfoImpl.java
new file mode 100644
index 0000000..6cb8a26
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/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;
+
+import java.net.URI;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.EdmSingletonInfo;
+
+public class EdmSingletonInfoImpl implements EdmSingletonInfo {
+
+  private final String entityContainerName;
+
+  private final String singletonName;
+
+  public EdmSingletonInfoImpl(final String entityContainerName, final String singletonName) {
+    this.entityContainerName = entityContainerName;
+    this.singletonName = singletonName;
+  }
+
+  @Override
+  public String getEntityContainerName() {
+    return entityContainerName;
+  }
+
+  @Override
+  public String getSingletonName() {
+    return singletonName;
+  }
+
+  @Override
+  public URI getEntitySetUri() {
+    throw new EdmException("Not yet implemented");
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmStructuredTypeHelper.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmStructuredTypeHelper.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmStructuredTypeHelper.java
new file mode 100644
index 0000000..8b732aa
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmStructuredTypeHelper.java
@@ -0,0 +1,30 @@
+/*
+ * 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;
+
+import java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
+
+public interface EdmStructuredTypeHelper {
+
+  Map<String, EdmProperty> getProperties();
+
+  Map<String, EdmNavigationProperty> getNavigationProperties();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmTypeImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmTypeImpl.java
new file mode 100644
index 0000000..c2f635a
--- /dev/null
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/EdmTypeImpl.java
@@ -0,0 +1,48 @@
+/*
+ * 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;
+
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmType;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+
+public class EdmTypeImpl extends EdmNamedImpl implements EdmType {
+
+  protected final FullQualifiedName fqn;
+
+  protected final EdmTypeKind kind;
+
+  public EdmTypeImpl(final Edm edm, final FullQualifiedName fqn, final EdmTypeKind kind) {
+    super(edm, fqn.getName());
+    this.fqn = fqn;
+    this.kind = kind;
+  }
+
+  @Override
+  public String getNamespace() {
+    return fqn.getNamespace();
+  }
+
+  @Override
+  public EdmTypeKind getKind() {
+    return kind;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/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 88f4379..2b0b08f 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
@@ -79,4 +79,20 @@ public enum EdmPrimitiveTypeKind {
         throw new RuntimeException("Wrong type:" + this);
     }
   }
+
+  /**
+   * Gets <tt>EdmPrimitiveTypeKind</tt> from a full string (e.g. 'Edm.Int32').
+   *
+   * @param value string value type.
+   * @return <tt>EdmPrimitiveTypeKind</tt> object.
+   */
+  public static EdmPrimitiveTypeKind fromString(final String value) {
+    final String noNsValue = value.substring(4);
+    for (EdmPrimitiveTypeKind edmSimpleType : EdmPrimitiveTypeKind.values()) {
+      if (edmSimpleType.name().equals(noNsValue)) {
+        return edmSimpleType;
+      }
+    }
+    throw new IllegalArgumentException(value);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ActionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ActionImport.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ActionImport.java
index c9dd8c1..9311094 100644
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ActionImport.java
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ActionImport.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.server.api.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 
 public class ActionImport extends OperationImport {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ComplexType.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ComplexType.java
index 6e37a87..4857b37 100644
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ComplexType.java
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/ComplexType.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 
-public class ComplexType extends StructuralType {
+public class ComplexType extends StructuredType {
 
   @Override
   public ComplexType setName(final String name) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/EntityType.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/EntityType.java
index 2265cff..dec7584 100644
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/EntityType.java
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/EntityType.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 
-public class EntityType extends StructuralType {
+public class EntityType extends StructuredType {
 
   private List<PropertyRef> key;
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/FunctionImport.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/FunctionImport.java
index b403bd1..6b82bbe 100644
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/FunctionImport.java
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/FunctionImport.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.server.api.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 
 public class FunctionImport extends OperationImport {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/NavigationPropertyBinding.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/NavigationPropertyBinding.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/NavigationPropertyBinding.java
index 2980a20..0e82a3c 100644
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/NavigationPropertyBinding.java
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/NavigationPropertyBinding.java
@@ -18,6 +18,8 @@
  */
 package org.apache.olingo.odata4.server.api.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Target;
+
 public class NavigationPropertyBinding {
 
   private String path;

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/OperationImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/OperationImport.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/OperationImport.java
index e8850df..bd845bd 100644
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/OperationImport.java
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/OperationImport.java
@@ -18,9 +18,12 @@
  */
 package org.apache.olingo.odata4.server.api.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Target;
+
 public abstract class OperationImport {
 
   protected String name;
+
   protected Target entitySet;
 
   // Annotations?

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuralType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuralType.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuralType.java
deleted file mode 100644
index 1d48b3b..0000000
--- a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuralType.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/* 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.server.api.edm.provider;
-
-import java.util.List;
-
-import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
-
-public abstract class StructuralType {
-
-  protected String name;
-
-  protected boolean isOpenType;
-
-  protected FullQualifiedName baseType;
-
-  protected boolean isAbstract;
-
-  protected List<Property> properties;
-
-  protected List<NavigationProperty> navigationProperties;
-
-  // What about mapping and annotations?
-  public String getName() {
-    return name;
-  }
-
-  public StructuralType setName(final String name) {
-    this.name = name;
-    return this;
-  }
-
-  public boolean isOpenType() {
-    return isOpenType;
-  }
-
-  public StructuralType setOpenType(final boolean isOpenType) {
-    this.isOpenType = isOpenType;
-    return this;
-  }
-
-  public FullQualifiedName getBaseType() {
-    return baseType;
-  }
-
-  public StructuralType setBaseType(final FullQualifiedName baseType) {
-    this.baseType = baseType;
-    return this;
-  }
-
-  public boolean isAbstract() {
-    return isAbstract;
-  }
-
-  public StructuralType setAbstract(final boolean isAbstract) {
-    this.isAbstract = isAbstract;
-    return this;
-  }
-
-  public List<Property> getProperties() {
-    return properties;
-  }
-
-  public StructuralType setProperties(final List<Property> properties) {
-    this.properties = properties;
-    return this;
-  }
-
-  public List<NavigationProperty> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-  public StructuralType setNavigationProperties(final List<NavigationProperty> navigationProperties) {
-    this.navigationProperties = navigationProperties;
-    return this;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuredType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuredType.java b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuredType.java
new file mode 100644
index 0000000..f91e55e
--- /dev/null
+++ b/odata4-lib/odata4-server-api/src/main/java/org/apache/olingo/odata4/server/api/edm/provider/StructuredType.java
@@ -0,0 +1,93 @@
+/* 
+ * 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.server.api.edm.provider;
+
+import java.util.List;
+
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+
+public abstract class StructuredType {
+
+  protected String name;
+
+  protected boolean isOpenType;
+
+  protected FullQualifiedName baseType;
+
+  protected boolean isAbstract;
+
+  protected List<Property> properties;
+
+  protected List<NavigationProperty> navigationProperties;
+
+  // What about mapping and annotations?
+  public String getName() {
+    return name;
+  }
+
+  public StructuredType setName(final String name) {
+    this.name = name;
+    return this;
+  }
+
+  public boolean isOpenType() {
+    return isOpenType;
+  }
+
+  public StructuredType setOpenType(final boolean isOpenType) {
+    this.isOpenType = isOpenType;
+    return this;
+  }
+
+  public FullQualifiedName getBaseType() {
+    return baseType;
+  }
+
+  public StructuredType setBaseType(final FullQualifiedName baseType) {
+    this.baseType = baseType;
+    return this;
+  }
+
+  public boolean isAbstract() {
+    return isAbstract;
+  }
+
+  public StructuredType setAbstract(final boolean isAbstract) {
+    this.isAbstract = isAbstract;
+    return this;
+  }
+
+  public List<Property> getProperties() {
+    return properties;
+  }
+
+  public StructuredType setProperties(final List<Property> properties) {
+    this.properties = properties;
+    return this;
+  }
+
+  public List<NavigationProperty> getNavigationProperties() {
+    return navigationProperties;
+  }
+
+  public StructuredType setNavigationProperties(final List<NavigationProperty> navigationProperties) {
+    this.navigationProperties = navigationProperties;
+    return this;
+  }
+}

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

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImpl.java
index e669350..6f5d6fd 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
@@ -25,7 +26,11 @@ import org.apache.olingo.odata4.server.api.edm.provider.Action;
 
 public class EdmActionImpl extends EdmOperationImpl implements EdmAction {
 
-  public EdmActionImpl(final EdmProviderImpl edm, final FullQualifiedName name, final Action action) {
+  public static EdmActionImpl getInstance(final Edm edm, final FullQualifiedName name, final Action action) {
+    return EdmOperationImpl.getInstance(new EdmActionImpl(edm, name, action));
+  }
+
+  private EdmActionImpl(final Edm edm, final FullQualifiedName name, final Action action) {
     super(edm, name, action, EdmTypeKind.ACTION);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImpl.java
index 34aca6d..691842d 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmActionImportImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmAction;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
@@ -27,9 +28,10 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
 
   private final ActionImport actionImport;
 
-  public EdmActionImportImpl(final EdmProviderImpl edm, final String name, final EdmEntityContainer container,
-      final ActionImport actionImport) {
-    super(edm, name, container, actionImport);
+  public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final ActionImport actionImport) {
+
+    super(edm, container, name, actionImport);
     this.actionImport = actionImport;
   }
 


[12/22] git commit: White noise: formatting

Posted by il...@apache.org.
White noise: formatting


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

Branch: refs/heads/olingo169
Commit: 04855436611f2aa511da8766537a769ce9a9c381
Parents: cdb520e
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Feb 28 09:51:19 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Feb 28 09:51:19 2014 +0100

----------------------------------------------------------------------
 .../src/test/resources/minimalEntity.json       |  35 +-
 .../olingo/odata4/client/core/v3/metadata.xml   | 701 ++++++++++++++++++-
 2 files changed, 720 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/04855436/odata4-lib/odata4-client-core/src/test/resources/minimalEntity.json
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/test/resources/minimalEntity.json b/odata4-lib/odata4-client-core/src/test/resources/minimalEntity.json
index abd9b9e..a6bd671 100644
--- a/odata4-lib/odata4-client-core/src/test/resources/minimalEntity.json
+++ b/odata4-lib/odata4-client-core/src/test/resources/minimalEntity.json
@@ -1,16 +1,21 @@
 {
-"odata.context": "http://host/service/$metadata#Customers/$entity", "odata.id": "Customers('ALFKI')",
-"odata.etag": "W/\"MjAxMy0wNS0yN1QxMTo1OFo=\"",
-"odata.editLink": "Customers('ALFKI')", "Orders@odata.navigationLink": "Customers('ALFKI')/Orders", "Orders@odata.associationLink": "Customers('ALFKI')/Orders/$ref", "ID": "ALFKI",
-"CompanyName": "Alfreds Futterkiste",
-"ContactName": "Maria Anders",
-"ContactTitle": "Sales Representative",
-"Phone": "030-0074321",
-"Fax": "030-0076545",
-"Address": {
-"Street": "Obere Str. 57",
-"City": "Berlin",
-"Region": null,
-"PostalCode": "D-12209",
-"Country@odata.navigationLink": "Customers('ALFKI')/Address/Country", "Country@odata.associationLink":"Customers('ALFKI')/Address/Country/$ref",
-} }
\ No newline at end of file
+  "odata.context": "http://host/service/$metadata#Customers/$entity", "odata.id": "Customers('ALFKI')",
+  "odata.etag": "W/\"MjAxMy0wNS0yN1QxMTo1OFo=\"",
+  "odata.editLink": "Customers('ALFKI')",
+  "Orders@odata.navigationLink": "Customers('ALFKI')/Orders",
+  "Orders@odata.associationLink": "Customers('ALFKI')/Orders/$ref",
+  "ID": "ALFKI",
+  "CompanyName": "Alfreds Futterkiste",
+  "ContactName": "Maria Anders",
+  "ContactTitle": "Sales Representative",
+  "Phone": "030-0074321",
+  "Fax": "030-0076545",
+  "Address": {
+    "Street": "Obere Str. 57",
+    "City": "Berlin",
+    "Region": null,
+    "PostalCode": "D-12209",
+    "Country@odata.navigationLink": "Customers('ALFKI')/Address/Country", 
+    "Country@odata.associationLink": "Customers('ALFKI')/Address/Country/$ref"
+  }
+}


[15/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmBindingTargetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmBindingTargetImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmBindingTargetImpl.java
index cd92170..be8b35b 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmBindingTargetImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmBindingTargetImpl.java
@@ -18,51 +18,55 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import java.util.Iterator;
 import java.util.List;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
 import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmBindingTarget;
 import org.apache.olingo.odata4.server.api.edm.provider.BindingTarget;
 import org.apache.olingo.odata4.server.api.edm.provider.NavigationPropertyBinding;
-import org.apache.olingo.odata4.server.api.edm.provider.Target;
+import org.apache.olingo.odata4.commons.api.edm.Target;
 
-public abstract class EdmBindingTargetImpl extends EdmNamedImpl implements EdmBindingTarget {
+public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget {
 
-  private BindingTarget target;
-  private EdmEntityContainer container;
+  private final BindingTarget target;
 
-  public EdmBindingTargetImpl(final EdmProviderImpl edm, final EdmEntityContainer container,
-      final BindingTarget target) {
-    super(edm, target.getName());
-    this.container = container;
+  public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container, final BindingTarget target) {
+    super(edm, container, target.getName(), target.getType());
     this.target = target;
   }
 
   @Override
   public EdmBindingTarget getRelatedBindingTarget(final String path) {
     EdmBindingTarget bindingTarget = null;
-    List<NavigationPropertyBinding> navigationPropertyBindings = target.getNavigationPropertyBindings();
+
+    final List<NavigationPropertyBinding> navigationPropertyBindings = target.getNavigationPropertyBindings();
     if (navigationPropertyBindings != null) {
-      for (NavigationPropertyBinding binding : navigationPropertyBindings) {
+      boolean found = false;
+      for (final Iterator<NavigationPropertyBinding> itor = navigationPropertyBindings.iterator();
+              itor.hasNext() && !found;) {
+
+        final NavigationPropertyBinding binding = itor.next();
         if (binding.getPath().equals(path)) {
-          Target providerTarget = binding.getTarget();
-          EdmEntityContainer entityContainer = edm.getEntityContainer(providerTarget.getEntityContainer());
+          final Target providerTarget = binding.getTarget();
+          final EdmEntityContainer entityContainer = edm.getEntityContainer(providerTarget.getEntityContainer());
           if (entityContainer == null) {
             throw new EdmException("Cant find entity container with name: " + providerTarget.getEntityContainer());
           }
-          String targetName = providerTarget.getTargetName();
+          final String targetName = providerTarget.getTargetName();
           bindingTarget = entityContainer.getEntitySet(targetName);
           if (bindingTarget == null) {
             bindingTarget = entityContainer.getSingleton(targetName);
-            if (bindingTarget != null) {
-              break;
-            } else {
+            if (bindingTarget == null) {
               throw new EdmException("Cant find target with name: " + targetName);
             }
+
+            found = true;
           } else {
-            break;
+            found = true;
           }
         }
       }
@@ -70,19 +74,4 @@ public abstract class EdmBindingTargetImpl extends EdmNamedImpl implements EdmBi
 
     return bindingTarget;
   }
-
-  @Override
-  public EdmEntityContainer getEntityContainer() {
-    return container;
-  }
-
-  @Override
-  public EdmEntityType getEntityType() {
-    EdmEntityType type = edm.getEntityType(target.getType());
-    if (type == null) {
-      throw new EdmException("Can´t find entity type : " + target.getType() + "for entity set: " + target.getName());
-    }
-    return type;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImpl.java
index 33e4a25..e409d09 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmComplexTypeImpl.java
@@ -18,34 +18,41 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
-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 java.util.Map;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmComplexType;
+import org.apache.olingo.odata4.commons.core.edm.EdmStructuredTypeHelper;
 import org.apache.olingo.odata4.server.api.edm.provider.ComplexType;
 
-public class EdmComplexTypeImpl extends EdmStructuralTypeImpl implements EdmComplexType {
+public class EdmComplexTypeImpl extends AbstractEdmComplexType {
 
-  public EdmComplexTypeImpl(final EdmProviderImpl edm, final FullQualifiedName name, final ComplexType complexType) {
-    super(edm, name, complexType, EdmTypeKind.COMPLEX);
+  private final EdmStructuredTypeHelper helper;
+
+  public static EdmComplexTypeImpl getInstance(
+          final Edm edm, final FullQualifiedName name, final ComplexType complexType) {
+
+    final EdmComplexTypeImpl instance = new EdmComplexTypeImpl(edm, name, complexType);
+    instance.baseType = instance.buildBaseType(complexType.getBaseType());
+
+    return instance;
+  }
+
+  private EdmComplexTypeImpl(final Edm edm, final FullQualifiedName name, final ComplexType complexType) {
+    super(edm, name, complexType.getBaseType());
+    this.helper = new EdmStructuredTypeHelperImpl(edm, complexType);
   }
 
   @Override
-  public EdmComplexType getBaseType() {
-    return (EdmComplexType) baseType;
+  protected Map<String, EdmProperty> getProperties() {
+    return helper.getProperties();
   }
 
   @Override
-  protected EdmStructuralType buildBaseType(final FullQualifiedName baseTypeName) {
-    EdmComplexType baseType = null;
-    if (baseTypeName != null) {
-      baseType = edm.getComplexType(baseTypeName);
-      if (baseType == null) {
-        throw new EdmException("Can't find base type with name: " + baseTypeName + " for complex type: " + getName());
-      }
-    }
-    return baseType;
+  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
+    return helper.getNavigationProperties();
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmElementImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmElementImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmElementImpl.java
deleted file mode 100644
index c0d5277..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmElementImpl.java
+++ /dev/null
@@ -1,28 +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.server.core.edm.provider;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmElement;
-
-public abstract class EdmElementImpl extends EdmNamedImpl implements EdmElement {
-
-  public EdmElementImpl(final EdmProviderImpl edm, final String name) {
-    super(edm, name);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityContainerImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityContainerImpl.java
index 2e2b8ff..9bc32fc 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityContainerImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityContainerImpl.java
@@ -18,17 +18,14 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.olingo.odata4.commons.api.ODataException;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmActionImport;
-import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmEntityContainer;
 import org.apache.olingo.odata4.server.api.edm.provider.ActionImport;
 import org.apache.olingo.odata4.server.api.edm.provider.EdmProvider;
 import org.apache.olingo.odata4.server.api.edm.provider.EntityContainerInfo;
@@ -36,100 +33,78 @@ import org.apache.olingo.odata4.server.api.edm.provider.EntitySet;
 import org.apache.olingo.odata4.server.api.edm.provider.FunctionImport;
 import org.apache.olingo.odata4.server.api.edm.provider.Singleton;
 
-public class EdmEntityContainerImpl extends EdmNamedImpl implements EdmEntityContainer {
+public class EdmEntityContainerImpl extends AbstractEdmEntityContainer {
 
-  private final FullQualifiedName entityContainerName;
   private final EdmProvider provider;
-  private final Map<String, EdmSingleton> singletons = new HashMap<String, EdmSingleton>();
-  private final Map<String, EdmEntitySet> entitySets = new HashMap<String, EdmEntitySet>();
-  private final Map<String, EdmActionImport> actionImports = new HashMap<String, EdmActionImport>();
-  private final Map<String, EdmFunctionImport> functionImports = new HashMap<String, EdmFunctionImport>();
-
-  public EdmEntityContainerImpl(final EdmProviderImpl edm, final EdmProvider provider,
-      final EntityContainerInfo entityContainerInfo) {
-    super(edm, entityContainerInfo.getContainerName().getName());
+
+  public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider,
+          final EntityContainerInfo entityContainerInfo) {
+
+    super(edm, entityContainerInfo.getContainerName());
     this.provider = provider;
-    entityContainerName = entityContainerInfo.getContainerName();
   }
 
   @Override
-  public String getNamespace() {
-    return entityContainerName.getNamespace();
-  }
+  protected EdmSingleton createSingleton(final String singletonName) {
+    EdmSingleton singleton = null;
 
-  @Override
-  public EdmSingleton getSingleton(final String singletonName) {
-    EdmSingleton singleton = singletons.get(singletonName);
-    if (singleton == null) {
-      try {
-        Singleton providerSingleton = provider.getSingleton(entityContainerName, singletonName);
-        if (providerSingleton != null) {
-          singleton = new EdmSingletonImpl(edm, this, providerSingleton);
-          if (singleton != null) {
-            singletons.put(singletonName, singleton);
-          }
-        }
-      } catch (ODataException e) {
-        throw new EdmException(e);
+    try {
+      final Singleton providerSingleton = provider.getSingleton(entityContainerName, singletonName);
+      if (providerSingleton != null) {
+        singleton = new EdmSingletonImpl(edm, this, providerSingleton);
       }
+    } catch (ODataException e) {
+      throw new EdmException(e);
     }
+
     return singleton;
   }
 
   @Override
-  public EdmEntitySet getEntitySet(final String entitySetName) {
-    EdmEntitySet entitySet = entitySets.get(entitySetName);
-    if (entitySet == null) {
-      try {
-        EntitySet providerEntitySet = provider.getEntitySet(entityContainerName, entitySetName);
-        if (providerEntitySet != null) {
-          entitySet = new EdmEntitySetImpl(edm, this, providerEntitySet);
-          if (entitySet != null) {
-            entitySets.put(entitySetName, entitySet);
-          }
-        }
-      } catch (ODataException e) {
-        throw new EdmException(e);
+  protected EdmEntitySet createEntitySet(final String entitySetName) {
+    EdmEntitySet entitySet = null;
+
+    try {
+      final EntitySet providerEntitySet = provider.getEntitySet(entityContainerName, entitySetName);
+      if (providerEntitySet != null) {
+        entitySet = new EdmEntitySetImpl(edm, this, providerEntitySet);
       }
+    } catch (ODataException e) {
+      throw new EdmException(e);
     }
+
     return entitySet;
   }
 
   @Override
-  public EdmActionImport getActionImport(final String actionImportName) {
-    EdmActionImport actionImport = actionImports.get(actionImportName);
-    if (actionImport == null) {
-      try {
-        ActionImport providerImport = provider.getActionImport(entityContainerName, actionImportName);
-        if (providerImport != null) {
-          actionImport = new EdmActionImportImpl(edm, actionImportName, this, providerImport);
-          if (actionImport != null) {
-            actionImports.put(actionImportName, actionImport);
-          }
-        }
-      } catch (ODataException e) {
-        throw new EdmException(e);
+  protected EdmActionImport createActionImport(final String actionImportName) {
+    EdmActionImport actionImport = null;
+
+    try {
+      final ActionImport providerImport = provider.getActionImport(entityContainerName, actionImportName);
+      if (providerImport != null) {
+        actionImport = new EdmActionImportImpl(edm, this, actionImportName, providerImport);
       }
+    } catch (ODataException e) {
+      throw new EdmException(e);
     }
+
     return actionImport;
   }
 
   @Override
-  public EdmFunctionImport getFunctionImport(final String functionImportName) {
-    EdmFunctionImport functionImport = functionImports.get(functionImportName);
-    if (functionImport == null) {
-      try {
-        FunctionImport providerImport = provider.getFunctionImport(entityContainerName, functionImportName);
-        if (providerImport != null) {
-          functionImport = new EdmFunctionImportImpl(edm, functionImportName, this, providerImport);
-          if (functionImport != null) {
-            functionImports.put(functionImportName, functionImport);
-          }
-        }
-      } catch (ODataException e) {
-        throw new EdmException(e);
+  protected EdmFunctionImport createFunctionImport(final String functionImportName) {
+    EdmFunctionImport functionImport = null;
+
+    try {
+      final FunctionImport providerImport = provider.getFunctionImport(entityContainerName, functionImportName);
+      if (providerImport != null) {
+        functionImport = new EdmFunctionImportImpl(edm, this, functionImportName, providerImport);
       }
+    } catch (ODataException e) {
+      throw new EdmException(e);
     }
+
     return functionImport;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImpl.java
index d724a5d..7305b1e 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetImpl.java
@@ -18,13 +18,14 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
 import org.apache.olingo.odata4.server.api.edm.provider.EntitySet;
 
 public class EdmEntitySetImpl extends EdmBindingTargetImpl implements EdmEntitySet {
 
-  public EdmEntitySetImpl(final EdmProviderImpl edm, final EdmEntityContainer container, final EntitySet entitySet) {
+  public EdmEntitySetImpl(final Edm edm, final EdmEntityContainer container, final EntitySet entitySet) {
     super(edm, container, entitySet);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImpl.java
deleted file mode 100644
index 0d167b7..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntitySetInfoImpl.java
+++ /dev/null
@@ -1,53 +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.server.core.edm.provider;
-
-import java.net.URI;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmEntitySetInfo;
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata4.server.api.edm.provider.EntitySet;
-
-public class EdmEntitySetInfoImpl implements EdmEntitySetInfo {
-
-  private final EntityContainer entityContainer;
-  private final EntitySet set;
-
-  public EdmEntitySetInfoImpl(final EntityContainer entityContainer, final 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() {
-    throw new EdmException("Not yet implemented");
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImpl.java
index 557dd01..41b8ea9 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEntityTypeImpl.java
@@ -19,101 +19,69 @@
 package org.apache.olingo.odata4.server.core.edm.provider;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
 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.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmProperty;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmEntityType;
+import org.apache.olingo.odata4.commons.core.edm.EdmStructuredTypeHelper;
 import org.apache.olingo.odata4.server.api.edm.provider.EntityType;
 import org.apache.olingo.odata4.server.api.edm.provider.PropertyRef;
 
-public class EdmEntityTypeImpl extends EdmStructuralTypeImpl implements EdmEntityType {
+public class EdmEntityTypeImpl extends AbstractEdmEntityType {
 
-  private EntityType entityType;
-  private final List<String> keyPredicateNames = new ArrayList<String>();
-  private final HashMap<String, EdmKeyPropertyRef> keyPropertyRefs = new HashMap<String, EdmKeyPropertyRef>();
-  private final EdmEntityType entityBaseType;
-  private ArrayList<EdmKeyPropertyRef> keyPropertyRefsList;
+  private final EdmStructuredTypeHelper helper;
 
-  public EdmEntityTypeImpl(final EdmProviderImpl edm, final FullQualifiedName name, final EntityType entityType) {
-    super(edm, name, entityType, EdmTypeKind.ENTITY);
-    this.entityType = entityType;
-    if (baseType == null) {
-      entityBaseType = null;
-      List<PropertyRef> key = entityType.getKey();
+  private final EntityType entityType;
+
+  public static EdmEntityTypeImpl getInstance(final Edm edm, final FullQualifiedName name,
+          final EntityType entityType) {
+
+    final EdmEntityTypeImpl instance = new EdmEntityTypeImpl(edm, name, entityType);
+    instance.baseType = instance.buildBaseType(entityType.getBaseType());
+
+    if (instance.baseType == null) {
+      instance.entityBaseType = null;
+      
+      final List<PropertyRef> key = entityType.getKey();
       if (key == null && !entityType.isAbstract()) {
         throw new EdmException("Non-Abstract entity types must define a key.");
       }
       if (key != null) {
+        final List<EdmKeyPropertyRef> edmKey = new ArrayList<EdmKeyPropertyRef>();
         for (PropertyRef ref : key) {
-          EdmKeyPropertyRef edmKeyRef = new EdmKeyPropertyRefImpl(this, ref);
-          if (ref.getAlias() != null) {
-            keyPredicateNames.add(ref.getAlias());
-            keyPropertyRefs.put(ref.getAlias(), edmKeyRef);
-          } else {
-            keyPredicateNames.add(ref.getPropertyName());
-            keyPropertyRefs.put(ref.getPropertyName(), edmKeyRef);
-          }
+          edmKey.add(new EdmKeyPropertyRefImpl(instance, ref));
         }
+        instance.setEdmKeyPropertyRef(edmKey);
       }
     } else {
-      entityBaseType = (EdmEntityType) baseType;
+      instance.entityBaseType = (EdmEntityType) instance.baseType;
     }
 
+    return instance;
   }
 
-  @Override
-  public boolean hasStream() {
-    return entityType.hasStream();
-  }
-
-  @Override
-  public EdmEntityType getBaseType() {
-    return entityBaseType;
-  }
-
-  @Override
-  public List<String> getKeyPredicateNames() {
-    if (keyPredicateNames.isEmpty() && baseType != null) {
-      return entityBaseType.getKeyPredicateNames();
-    }
-    return keyPredicateNames;
-  }
+  private EdmEntityTypeImpl(final Edm edm, final FullQualifiedName name, final EntityType entityType) {
+    super(edm, name, entityType.getBaseType(), entityType.hasStream());
 
-  @Override
-  public List<EdmKeyPropertyRef> getKeyPropertyRefs() {
-    if (keyPropertyRefsList == null) {
-      keyPropertyRefsList = new ArrayList<EdmKeyPropertyRef>(keyPropertyRefs.values());
-    }
-    if (keyPropertyRefsList.isEmpty() && entityBaseType != null) {
-      return entityBaseType.getKeyPropertyRefs();
-    }
-    return keyPropertyRefsList;
+    this.helper = new EdmStructuredTypeHelperImpl(edm, entityType);
+    this.entityType = entityType;
   }
 
   @Override
-  public EdmKeyPropertyRef getKeyPropertyRef(final String keyPredicateName) {
-    EdmKeyPropertyRef edmKeyPropertyRef = keyPropertyRefs.get(keyPredicateName);
-    if (edmKeyPropertyRef == null && entityBaseType != null) {
-      return entityBaseType.getKeyPropertyRef(keyPredicateName);
-    }
-    return edmKeyPropertyRef;
+  protected Map<String, EdmProperty> getProperties() {
+    return helper.getProperties();
   }
 
   @Override
-  protected EdmStructuralType buildBaseType(final FullQualifiedName baseTypeName) {
-    EdmEntityType baseType = null;
-    if (baseTypeName != null) {
-      baseType = edm.getEntityType(baseTypeName);
-      if (baseType == null) {
-        throw new EdmException("Cannot find base type with name: " + baseTypeName + " for entity type: " + getName());
-      }
-    }
-    return baseType;
+  protected Map<String, EdmNavigationProperty> getNavigationProperties() {
+    return helper.getNavigationProperties();
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumImpl.java
deleted file mode 100644
index 5de9cf2..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumImpl.java
+++ /dev/null
@@ -1,228 +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.server.core.edm.provider;
-
-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.FullQualifiedName;
-import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
-import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmInt64;
-import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
-import org.apache.olingo.odata4.server.api.edm.provider.EnumType;
-
-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 equals(primitiveType);
-  }
-
-  @Override
-  public Class<?> getDefaultType() {
-    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) {
-    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 {
-    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 {
-    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 literal == null ? null :
-        uriPrefix.isEmpty() && uriSuffix.isEmpty() ? literal : uriPrefix + literal + uriSuffix;
-  }
-
-  @Override
-  public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException {
-    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
-  public String getNamespace() {
-    return enumName.getNamespace();
-  }
-
-  @Override
-  public EdmTypeKind getKind() {
-    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() {
-    if (memberNames == null) {
-      memberNames = new ArrayList<String>();
-      for (final EdmMember member : enumType.getMembers()) {
-        memberNames.add(member.getName());
-      }
-    }
-    return memberNames;
-  }
-
-  @Override
-  public EdmPrimitiveType getUnderlyingType() {
-    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/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTypeImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTypeImpl.java
new file mode 100644
index 0000000..4e88b49
--- /dev/null
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmEnumTypeImpl.java
@@ -0,0 +1,61 @@
+/* 
+ * 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.server.core.edm.provider;
+
+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.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmEnumType;
+import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+import org.apache.olingo.odata4.server.api.edm.provider.EnumType;
+
+public class EdmEnumTypeImpl extends AbstractEdmEnumType implements EdmEnumType {
+
+  private final EdmPrimitiveType underlyingType;
+
+  private final EnumType enumType;
+
+  public EdmEnumTypeImpl(final EdmProviderImpl edm, final FullQualifiedName enumName, final EnumType enumType) {
+    super(edm, enumName, enumType.isFlags());
+
+    if (enumType.getUnderlyingType() == null) {
+      this.underlyingType = EdmPrimitiveTypeKind.Int32.getEdmPrimitiveTypeInstance();
+    } else {
+      this.underlyingType = EdmPrimitiveTypeKind.valueOf(
+              enumType.getUnderlyingType().getName()).getEdmPrimitiveTypeInstance();
+      // TODO: Should we validate that the underlying type is of byte, sbyte, in16, int32 or int64?
+    }
+
+    this.enumType = enumType;
+  }
+
+  @Override
+  public EdmPrimitiveType getUnderlyingType() {
+    return underlyingType;
+  }
+
+  @Override
+  protected List<? extends EdmMember> getMembers() {
+    return enumType.getMembers();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImpl.java
index 61f513a..f2e3cf2 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 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;
@@ -27,9 +28,13 @@ import org.apache.olingo.odata4.server.api.edm.provider.Function;
 
 public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction {
 
-  private Function function;
+  private final Function function;
 
-  public EdmFunctionImpl(final EdmProviderImpl edm, final FullQualifiedName name, final Function function) {
+  public static EdmFunctionImpl getInstance(final Edm edm, final FullQualifiedName name, final Function function) {
+    return EdmOperationImpl.getInstance(new EdmFunctionImpl(edm, name, function));
+  }
+
+  private EdmFunctionImpl(final Edm edm, final FullQualifiedName name, final Function function) {
     super(edm, name, function, EdmTypeKind.FUNCTION);
     this.function = function;
   }
@@ -41,7 +46,7 @@ public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction {
 
   @Override
   public EdmReturnType getReturnType() {
-    EdmReturnType returnType = super.getReturnType();
+    final EdmReturnType returnType = super.getReturnType();
     if (returnType == null) {
       throw new EdmException("ReturnType for a function must not be null");
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImpl.java
index 487ae51..f4e06f1 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportImpl.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata4.server.core.edm.provider;
 
 import java.util.List;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
 import org.apache.olingo.odata4.commons.api.edm.EdmFunction;
@@ -29,9 +30,10 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
 
   private final FunctionImport functionImport;
 
-  public EdmFunctionImportImpl(final EdmProviderImpl edm, final String name, final EdmEntityContainer container,
-      final FunctionImport functionImport) {
-    super(edm, name, container, functionImport);
+  public EdmFunctionImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final FunctionImport functionImport) {
+
+    super(edm, container, name, functionImport);
     this.functionImport = functionImport;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImpl.java
deleted file mode 100644
index 025d919..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmFunctionImportInfoImpl.java
+++ /dev/null
@@ -1,53 +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.server.core.edm.provider;
-
-import java.net.URI;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.commons.api.edm.EdmFunctionImportInfo;
-import org.apache.olingo.odata4.server.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata4.server.api.edm.provider.FunctionImport;
-
-public class EdmFunctionImportInfoImpl implements EdmFunctionImportInfo {
-
-  private EntityContainer entityContainer;
-  private FunctionImport functionImport;
-
-  public EdmFunctionImportInfoImpl(final EntityContainer entityContainer, final 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() {
-    throw new EdmException("Not yet implemented");
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImpl.java
index 6bff7e3..06351ac 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmKeyPropertyRefImpl.java
@@ -19,20 +19,15 @@
 package org.apache.olingo.odata4.server.core.edm.provider;
 
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
-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.EdmProperty;
-import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmKeyPropertyRef;
 import org.apache.olingo.odata4.server.api.edm.provider.PropertyRef;
 
-public class EdmKeyPropertyRefImpl implements EdmKeyPropertyRef {
+public class EdmKeyPropertyRefImpl extends AbstractEdmKeyPropertyRef {
 
-  private PropertyRef ref;
-  private EdmEntityType edmEntityType;
-  private EdmProperty property;
+  private final PropertyRef ref;
 
   public EdmKeyPropertyRefImpl(final EdmEntityType edmEntityType, final PropertyRef ref) {
-    this.edmEntityType = edmEntityType;
+    super(edmEntityType);
     this.ref = ref;
   }
 
@@ -50,40 +45,4 @@ public class EdmKeyPropertyRefImpl implements EdmKeyPropertyRef {
   public String getPath() {
     return ref.getPath();
   }
-
-  @Override
-  public EdmProperty getProperty() {
-    if (property == null) {
-      if (ref.getAlias() == null) {
-        property = (EdmProperty) edmEntityType.getProperty(ref.getPropertyName());
-        if (property == null) {
-          throw new EdmException("Invalid key property ref specified. Can´t find property with name: "
-              + ref.getPropertyName());
-        }
-      } else {
-        if (ref.getPath() == null || ref.getPath().isEmpty()) {
-          throw new EdmException("Alias but no path specified for propertyRef");
-        }
-        String[] splitPath = ref.getPath().split("/");
-        EdmStructuralType structType = edmEntityType;
-        for (int i = 0; i < splitPath.length - 1; i++) {
-          EdmProperty property = (EdmProperty) structType.getProperty(splitPath[i]);
-          if (property == null) {
-            throw new EdmException("Invalid property ref specified. Can´t find property with name: "
-                + splitPath[i] + " at type: " + structType.getNamespace() + "." + structType.getName());
-          }
-          structType = (EdmStructuralType) property.getType();
-        }
-        property = (EdmProperty) structType.getProperty(splitPath[splitPath.length - 1]);
-        if (property == null) {
-          throw new EdmException("Invalid property ref specified. Can´t find property with name: "
-              + splitPath[splitPath.length - 1] + " at type: " + structType.getNamespace() + "."
-              + structType.getName());
-        }
-      }
-    }
-
-    return property;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImpl.java
deleted file mode 100644
index b42e39b..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmMemberImpl.java
+++ /dev/null
@@ -1,38 +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.server.core.edm.provider;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmMember;
-import org.apache.olingo.odata4.server.api.edm.provider.EnumMember;
-
-public class EdmMemberImpl extends EdmNamedImpl implements EdmMember {
-
-  private final EnumMember member;
-
-  public EdmMemberImpl(final EdmProviderImpl edm, final EnumMember member) {
-    super(edm, member.getName());
-    this.member = member;
-  }
-
-  @Override
-  public String getValue() {
-    return member.getValue();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImpl.java
deleted file mode 100644
index 2526e07..0000000
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNamedImpl.java
+++ /dev/null
@@ -1,39 +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.server.core.edm.provider;
-
-import org.apache.olingo.odata4.commons.api.edm.EdmNamed;
-
-public abstract class EdmNamedImpl implements EdmNamed {
-
-  private String name;
-  protected EdmProviderImpl edm;
-
-  // TODO: ValidateName?
-  public EdmNamedImpl(final EdmProviderImpl edm, final String name) {
-    this.edm = edm;
-    this.name = name;
-  }
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNavigationPropertyImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNavigationPropertyImpl.java
index c452d8e..3399467 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNavigationPropertyImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmNavigationPropertyImpl.java
@@ -20,35 +20,24 @@ package org.apache.olingo.odata4.server.core.edm.provider;
 
 import java.util.List;
 
-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.EdmException;
-import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
-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.Edm;
+import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmNavigationProperty;
 import org.apache.olingo.odata4.server.api.edm.provider.NavigationProperty;
 import org.apache.olingo.odata4.server.api.edm.provider.ReferentialConstraint;
 
-public class EdmNavigationPropertyImpl extends EdmElementImpl implements EdmNavigationProperty {
+public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty {
 
   private final NavigationProperty navigationProperty;
-  private EdmEntityType typeImpl;
-  private EdmNavigationProperty partnerNavigationProperty;
 
-  public EdmNavigationPropertyImpl(final EdmProviderImpl edm, final NavigationProperty navigationProperty) {
+  public EdmNavigationPropertyImpl(final Edm edm, final NavigationProperty navigationProperty) {
     super(edm, navigationProperty.getName());
     this.navigationProperty = navigationProperty;
   }
 
   @Override
-  public EdmType getType() {
-    if (typeImpl == null) {
-      typeImpl = edm.getEntityType(navigationProperty.getType());
-      if (typeImpl == null) {
-        throw new EdmException("Cannot find type with name: " + navigationProperty.getType());
-      }
-    }
-    return typeImpl;
+  protected FullQualifiedName getTypeFQN() {
+    return navigationProperty.getType();
   }
 
   @Override
@@ -62,29 +51,13 @@ public class EdmNavigationPropertyImpl extends EdmElementImpl implements EdmNavi
   }
 
   @Override
-  public EdmNavigationProperty getPartner() {
-    if (partnerNavigationProperty == null) {
-      String partner = navigationProperty.getPartner();
-      if (partner != null) {
-        EdmStructuralType type = (EdmStructuralType) getType();
-        EdmElement property = null;
-        String[] split = partner.split("/");
-        for (String element : split) {
-          property = type.getProperty(element);
-          if (property == null) {
-            throw new EdmException("Cannot find property with name: " + element + " at type " + type.getName());
-          }
-          type = (EdmStructuralType) property.getType();
-        }
-        partnerNavigationProperty = (EdmNavigationProperty) property;
-      }
-    }
-    return partnerNavigationProperty;
+  protected String internatGetPartner() {
+    return navigationProperty.getPartner();
   }
 
   @Override
   public String getReferencingPropertyName(final String referencedPropertyName) {
-    List<ReferentialConstraint> referentialConstraints = navigationProperty.getReferentialConstraints();
+    final List<ReferentialConstraint> referentialConstraints = navigationProperty.getReferentialConstraints();
     if (referentialConstraints != null) {
       for (ReferentialConstraint constraint : referentialConstraints) {
         if (constraint.getReferencedProperty().equals(referencedPropertyName)) {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImpl.java
index 4806682..73f440b 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImpl.java
@@ -19,92 +19,49 @@
 package org.apache.olingo.odata4.server.core.edm.provider;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
-import org.apache.olingo.odata4.commons.api.edm.EdmBindingTarget;
-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.EdmOperation;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmParameter;
-import org.apache.olingo.odata4.commons.api.edm.EdmReturnType;
 import org.apache.olingo.odata4.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmOperation;
 import org.apache.olingo.odata4.server.api.edm.provider.EntitySetPath;
 import org.apache.olingo.odata4.server.api.edm.provider.Operation;
 import org.apache.olingo.odata4.server.api.edm.provider.Parameter;
 
-public class EdmOperationImpl extends EdmTypeImpl implements EdmOperation {
+public abstract class EdmOperationImpl extends AbstractEdmOperation {
 
-  private final Map<String, EdmParameter> parameters = new HashMap<String, EdmParameter>();
-  private final Operation operation;
-  private EdmReturnType returnType;
-  private List<String> parameterNames;
+  protected final Operation operation;
 
-  public EdmOperationImpl(final EdmProviderImpl edm, final FullQualifiedName name, final Operation operation,
-      final EdmTypeKind kind) {
-    super(edm, name, kind);
-    this.operation = operation;
-    List<Parameter> providerParameters = operation.getParameters();
+  protected static <T extends EdmOperationImpl> T getInstance(final T instance) {
+    final List<Parameter> providerParameters = instance.operation.getParameters();
     if (providerParameters != null) {
+      final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(providerParameters.size());
       for (Parameter parameter : providerParameters) {
-        parameters.put(parameter.getName(), new EdmParameterImpl(edm, parameter));
+        _parameters.add(new EdmParameterImpl(instance.edm, parameter));
       }
+      instance.setParameters(_parameters);
     }
-  }
-
-  @Override
-  public EdmParameter getParameter(final String name) {
-    return parameters.get(name);
-  }
 
-  @Override
-  public List<String> getParameterNames() {
-    if (parameterNames == null) {
-      parameterNames = new ArrayList<String>();
-      List<Parameter> providerParameters = operation.getParameters();
-      if (providerParameters != null) {
-        for (Parameter parameter : providerParameters) {
-          parameterNames.add(parameter.getName());
-        }
-      }
+    final EntitySetPath entitySetPath = instance.operation.getEntitySetPath();
+    if (entitySetPath != null && entitySetPath.getPath() != null) {
+      instance.setEntitySetPath(entitySetPath.getPath());
     }
-    return parameterNames;
-  }
 
-  @Override
-  public EdmEntitySet getReturnedEntitySet(final EdmEntitySet bindingParameterEntitySet) {
-    EntitySetPath entitySetPath = operation.getEntitySetPath();
-    EdmEntitySet returnedEntitySet = null;
-    if (bindingParameterEntitySet != null && entitySetPath != null && entitySetPath.getBindingParameter() != null
-        && entitySetPath.getPath() != null) {
-      EdmBindingTarget relatedBindingTarget =
-          bindingParameterEntitySet.getRelatedBindingTarget(entitySetPath.getPath());
-      if (relatedBindingTarget == null) {
-        throw new EdmException("Cannot find entity set with path: " + entitySetPath.getPath());
-      }
-      if (relatedBindingTarget instanceof EdmEntitySet) {
-        returnedEntitySet = (EdmEntitySet) relatedBindingTarget;
-      } else {
-        throw new EdmException("BindingTarget with name: " + relatedBindingTarget.getName() + " must be an entity set");
-      }
+    instance.setIsBound(instance.operation.isBound());
 
+    if (instance.operation.getReturnType() != null) {
+      instance.setReturnType(new EdmReturnTypeImpl(instance.edm, instance.operation.getReturnType()));
     }
-    return returnedEntitySet;
-  }
 
-  @Override
-  public EdmReturnType getReturnType() {
-    if (returnType == null && operation.getReturnType() != null) {
-      returnType = new EdmReturnTypeImpl(edm, operation.getReturnType());
-    }
-    return returnType;
+    return instance;
   }
 
-  @Override
-  public boolean isBound() {
-    return operation.isBound();
-  }
+  protected EdmOperationImpl(final Edm edm, final FullQualifiedName name, final Operation operation,
+          final EdmTypeKind kind) {
 
+    super(edm, name, kind);
+    this.operation = operation;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImportImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImportImpl.java
index 41159ce..51ea5f7 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImportImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmOperationImportImpl.java
@@ -18,45 +18,16 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 import org.apache.olingo.odata4.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.odata4.commons.api.edm.EdmEntitySet;
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
-import org.apache.olingo.odata4.commons.api.edm.EdmOperationImport;
 import org.apache.olingo.odata4.server.api.edm.provider.OperationImport;
-import org.apache.olingo.odata4.server.api.edm.provider.Target;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmOperationImport;
 
-public abstract class EdmOperationImportImpl extends EdmNamedImpl implements EdmOperationImport {
+public abstract class EdmOperationImportImpl extends AbstractEdmOperationImport {
 
-  private final OperationImport operationImport;
-  private final EdmEntityContainer container;
-  private EdmEntitySet returnedEntitySet;
+  public EdmOperationImportImpl(final Edm edm, final EdmEntityContainer container, final String name,
+          final OperationImport operationImport) {
 
-  public EdmOperationImportImpl(final EdmProviderImpl edm, final String name, final EdmEntityContainer container,
-      final OperationImport operationImport) {
-    super(edm, name);
-    this.container = container;
-    this.operationImport = operationImport;
+    super(edm, container, name, operationImport.getEntitySet());
   }
-
-  @Override
-  public EdmEntitySet getReturnedEntitySet() {
-    Target target = operationImport.getEntitySet();
-    if (target != null && returnedEntitySet == null) {
-      EdmEntityContainer entityContainer = edm.getEntityContainer(target.getEntityContainer());
-      if (entityContainer == null) {
-        throw new EdmException("Can´t find entity container with name: " + target.getEntityContainer());
-      }
-      returnedEntitySet = entityContainer.getEntitySet(target.getTargetName());
-      if (returnedEntitySet == null) {
-        throw new EdmException("Can´t find entity set with name: " + target.getTargetName());
-      }
-    }
-    return returnedEntitySet;
-  }
-
-  @Override
-  public EdmEntityContainer getEntityContainer() {
-    return container;
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmParameterImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmParameterImpl.java
index 3ae417b..47679f6 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmParameterImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmParameterImpl.java
@@ -18,55 +18,21 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 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.FullQualifiedName;
-import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmParameter;
 import org.apache.olingo.odata4.server.api.edm.provider.Parameter;
 
-public class EdmParameterImpl extends EdmElementImpl implements EdmParameter {
+public class EdmParameterImpl extends AbstractEdmParameter {
 
   private final Parameter parameter;
-  private EdmType typeImpl;
 
-  public EdmParameterImpl(final EdmProviderImpl edm, final Parameter parameter) {
-    super(edm, parameter.getName());
+  public EdmParameterImpl(final Edm edm, final Parameter parameter) {
+    super(edm, parameter.getName(), parameter.getType());
     this.parameter = parameter;
   }
 
   @Override
-  public EdmType getType() {
-    if (typeImpl == null) {
-      FullQualifiedName typeName = parameter.getType();
-      if (EdmPrimitiveType.EDM_NAMESPACE.equals(typeName.getNamespace())) {
-        try {
-          typeImpl = EdmPrimitiveTypeKind.valueOf(typeName.getName()).getEdmPrimitiveTypeInstance();
-        } catch (IllegalArgumentException e) {
-          throw new EdmException("Cannot find type with name: " + typeName, e);
-        }
-      } else {
-        typeImpl = edm.getComplexType(typeName);
-        if (typeImpl == null) {
-          typeImpl = edm.getEntityType(typeName);
-          if (typeImpl == null) {
-            typeImpl = edm.getEnumType(typeName);
-            if (typeImpl == null) {
-              typeImpl = edm.getTypeDefinition(typeName);
-              if (typeImpl == null) {
-                throw new EdmException("Cannot find type with name: " + typeName);
-              }
-            }
-          }
-        }
-      }
-    }
-    return typeImpl;
-  }
-
-  @Override
   public boolean isCollection() {
     return parameter.isCollection();
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmPropertyImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmPropertyImpl.java
index 4882a29..46381fd 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmPropertyImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmPropertyImpl.java
@@ -18,52 +18,25 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
-import org.apache.olingo.odata4.commons.api.edm.EdmException;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
 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.FullQualifiedName;
-import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmProperty;
 import org.apache.olingo.odata4.server.api.edm.provider.Property;
 
-public class EdmPropertyImpl extends EdmElementImpl implements EdmProperty {
+public class EdmPropertyImpl extends AbstractEdmProperty implements EdmProperty {
 
   private final Property property;
-  private final boolean isPrimitive;
-  private EdmType propertyType;
 
-  public EdmPropertyImpl(final EdmProviderImpl edm, final Property property) {
+  public EdmPropertyImpl(final Edm edm, final Property property) {
     super(edm, property.getName());
     this.property = property;
-    isPrimitive = EdmPrimitiveType.EDM_NAMESPACE.equals(property.getType().getNamespace());
   }
 
   @Override
-  public EdmType getType() {
-    if (propertyType == null) {
-      FullQualifiedName typeName = property.getType();
-      if (isPrimitive) {
-        try {
-          propertyType = EdmPrimitiveTypeKind.valueOf(typeName.getName()).getEdmPrimitiveTypeInstance();
-        } catch (IllegalArgumentException e) {
-          throw new EdmException("Cannot find type with name: " + typeName, e);
-        }
-      } else {
-        propertyType = edm.getComplexType(typeName);
-        if (propertyType == null) {
-          propertyType = edm.getEnumType(typeName);
-          if (propertyType == null) {
-            propertyType = edm.getTypeDefinition(typeName);
-            if (propertyType == null) {
-              throw new EdmException("Cannot find type with name: " + typeName);
-            }
-          }
-        }
-      }
-    }
-
-    return propertyType;
+  protected FullQualifiedName getTypeFQN() {
+    return property.getType();
   }
 
   @Override
@@ -82,11 +55,6 @@ public class EdmPropertyImpl extends EdmElementImpl implements EdmProperty {
   }
 
   @Override
-  public boolean isPrimitive() {
-    return isPrimitive;
-  }
-
-  @Override
   public Boolean isNullable() {
     return property.getNullable();
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmProviderImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmProviderImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmProviderImpl.java
index 49a14fc..f2ded8c 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmProviderImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmProviderImpl.java
@@ -50,7 +50,9 @@ import org.apache.olingo.odata4.server.api.edm.provider.TypeDefinition;
 public class EdmProviderImpl extends AbstractEdmImpl {
 
   private final EdmProvider provider;
+
   private final Map<FullQualifiedName, List<Action>> actionsMap = new HashMap<FullQualifiedName, List<Action>>();
+
   private final Map<FullQualifiedName, List<Function>> functionsMap = new HashMap<FullQualifiedName, List<Function>>();
 
   public EdmProviderImpl(final EdmProvider provider) {
@@ -76,7 +78,7 @@ public class EdmProviderImpl extends AbstractEdmImpl {
     try {
       EnumType enumType = provider.getEnumType(enumName);
       if (enumType != null) {
-        return new EdmEnumImpl(this, enumName, enumType);
+        return new EdmEnumTypeImpl(this, enumName, enumType);
       }
       return null;
     } catch (ODataException e) {
@@ -102,7 +104,7 @@ public class EdmProviderImpl extends AbstractEdmImpl {
     try {
       EntityType entityType = provider.getEntityType(entityTypeName);
       if (entityType != null) {
-        return new EdmEntityTypeImpl(this, entityTypeName, entityType);
+        return EdmEntityTypeImpl.getInstance(this, entityTypeName, entityType);
       }
       return null;
     } catch (ODataException e) {
@@ -113,9 +115,9 @@ public class EdmProviderImpl extends AbstractEdmImpl {
   @Override
   public EdmComplexType createComplexType(final FullQualifiedName complexTypeName) {
     try {
-      ComplexType complexType = provider.getComplexType(complexTypeName);
+      final ComplexType complexType = provider.getComplexType(complexTypeName);
       if (complexType != null) {
-        return new EdmComplexTypeImpl(this, complexTypeName, complexType);
+        return EdmComplexTypeImpl.getInstance(this, complexTypeName, complexType);
       }
       return null;
     } catch (ODataException e) {
@@ -125,32 +127,32 @@ public class EdmProviderImpl extends AbstractEdmImpl {
 
   @Override
   public EdmAction createBoundAction(final FullQualifiedName actionName,
-      final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+    
     try {
       List<Action> actions = actionsMap.get(actionName);
       if (actions == null) {
         actions = provider.getActions(actionName);
-        if (actions != null) {
-          actionsMap.put(actionName, actions);
-        } else {
+        if (actions == null) {
           return null;
+        } else {
+          actionsMap.put(actionName, actions);
         }
       }
-      EdmActionImpl actionImpl = null;
       // Search for bound action where binding parameter matches
       for (Action action : actions) {
-        if (action.isBound() == true) {
-          List<Parameter> parameters = action.getParameters();
-          Parameter parameter = parameters.get(0);
+        if (action.isBound()) {
+          final List<Parameter> parameters = action.getParameters();
+          final Parameter parameter = parameters.get(0);
           if (bindingParameterTypeName.equals(parameter.getType())
-              && isBindingParameterCollection.booleanValue() == parameter.isCollection()) {
-            actionImpl = new EdmActionImpl(this, actionName, action);
-            break;
+                  && isBindingParameterCollection.booleanValue() == parameter.isCollection()) {
+            
+            return EdmActionImpl.getInstance(this, actionName, action);
           }
 
         }
       }
-      return actionImpl;
+      return null;
     } catch (ODataException e) {
       throw new EdmException(e);
     }
@@ -158,46 +160,43 @@ public class EdmProviderImpl extends AbstractEdmImpl {
 
   @Override
   public EdmFunction createBoundFunction(final FullQualifiedName functionName,
-      final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection,
-      final List<String> parameterNames) {
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection,
+          final List<String> parameterNames) {
+    
     try {
       List<Function> functions = functionsMap.get(functionName);
       if (functions == null) {
         functions = provider.getFunctions(functionName);
-        if (functions != null) {
-          functionsMap.put(functionName, functions);
-        } else {
+        if (functions == null) {
           return null;
+        } else {
+          functionsMap.put(functionName, functions);
         }
       }
-      List<String> parameterNamesCopy = parameterNames;
-      if (parameterNamesCopy == null) {
-        parameterNamesCopy = Collections.emptyList();
-      }
-      EdmFunctionImpl functionImpl = null;
+      final List<String> parameterNamesCopy = parameterNames == null? Collections.<String>emptyList(): parameterNames;
       for (Function function : functions) {
-        if (function.isBound() == true) {
+        if (function.isBound()) {
           List<Parameter> providerParameters = function.getParameters();
           if (providerParameters == null || providerParameters.size() == 0) {
             throw new EdmException("No parameter specified for bound function: " + functionName);
           }
-          Parameter bindingParameter = providerParameters.get(0);
+          final Parameter bindingParameter = providerParameters.get(0);
           if (bindingParameterTypeName.equals(bindingParameter.getType())
-              && isBindingParameterCollection.booleanValue() == bindingParameter.isCollection()) {
+                  && isBindingParameterCollection.booleanValue() == bindingParameter.isCollection()) {
+            
             if (parameterNamesCopy.size() == providerParameters.size() - 1) {
-              List<String> providerParameterNames = new ArrayList<String>();
+              final List<String> providerParameterNames = new ArrayList<String>();
               for (int i = 1; i < providerParameters.size(); i++) {
                 providerParameterNames.add(providerParameters.get(i).getName());
               }
               if (parameterNamesCopy.containsAll(providerParameterNames)) {
-                functionImpl = new EdmFunctionImpl(this, functionName, function);
-                break;
+                return EdmFunctionImpl.getInstance(this, functionName, function);
               }
             }
           }
         }
       }
-      return functionImpl;
+      return null;
     } catch (ODataException e) {
       throw new EdmException(e);
     }
@@ -210,9 +209,9 @@ public class EdmProviderImpl extends AbstractEdmImpl {
 
   @Override
   protected Map<String, String> createAliasToNamespaceInfo() {
-    Map<String, String> aliasToNamespaceInfos = new HashMap<String, String>();
+    final Map<String, String> aliasToNamespaceInfos = new HashMap<String, String>();
     try {
-      List<AliasInfo> aliasInfos = provider.getAliasInfos();
+      final List<AliasInfo> aliasInfos = provider.getAliasInfos();
       if (aliasInfos != null) {
         for (AliasInfo info : aliasInfos) {
           aliasToNamespaceInfos.put(info.getAlias(), info.getNamespace());
@@ -230,21 +229,19 @@ public class EdmProviderImpl extends AbstractEdmImpl {
       List<Action> actions = actionsMap.get(actionName);
       if (actions == null) {
         actions = provider.getActions(actionName);
-        if (actions != null) {
-          actionsMap.put(actionName, actions);
-        } else {
+        if (actions == null) {
           return null;
+        } else {
+          actionsMap.put(actionName, actions);
         }
       }
-      EdmActionImpl actionImpl = null;
       // Search for first unbound action
       for (Action action : actions) {
-        if (action.isBound() == false) {
-          actionImpl = new EdmActionImpl(this, actionName, action);
-          break;
+        if (!action.isBound()) {
+          return EdmActionImpl.getInstance(this, actionName, action);
         }
       }
-      return actionImpl;
+      return null;
     } catch (ODataException e) {
       throw new EdmException(e);
     }
@@ -262,13 +259,9 @@ public class EdmProviderImpl extends AbstractEdmImpl {
           return null;
         }
       }
-      List<String> parameterNamesCopy = parameterNames;
-      if (parameterNamesCopy == null) {
-        parameterNamesCopy = Collections.emptyList();
-      }
-      EdmFunctionImpl functionImpl = null;
+      final List<String> parameterNamesCopy = parameterNames == null? Collections.<String>emptyList(): parameterNames;
       for (Function function : functions) {
-        if (function.isBound() == false) {
+        if (!function.isBound()) {
           List<Parameter> providerParameters = function.getParameters();
           if (providerParameters == null) {
             providerParameters = Collections.emptyList();
@@ -280,13 +273,12 @@ public class EdmProviderImpl extends AbstractEdmImpl {
             }
 
             if (parameterNamesCopy.containsAll(functionParameterNames)) {
-              functionImpl = new EdmFunctionImpl(this, functionName, function);
-              break;
+              return EdmFunctionImpl.getInstance(this, functionName, function);
             }
           }
         }
       }
-      return functionImpl;
+      return null;
     } catch (ODataException e) {
       throw new EdmException(e);
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmReturnTypeImpl.java b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmReturnTypeImpl.java
index e94d8a0..19700af 100644
--- a/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmReturnTypeImpl.java
+++ b/odata4-lib/odata4-server-core/src/main/java/org/apache/olingo/odata4/server/core/edm/provider/EdmReturnTypeImpl.java
@@ -18,56 +18,20 @@
  */
 package org.apache.olingo.odata4.server.core.edm.provider;
 
-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.FullQualifiedName;
-import org.apache.olingo.odata4.commons.core.edm.AbstractEdmImpl;
-import org.apache.olingo.odata4.commons.core.edm.primitivetype.EdmPrimitiveTypeKind;
+import org.apache.olingo.odata4.commons.api.edm.Edm;
+import org.apache.olingo.odata4.commons.core.edm.AbstractEdmReturnType;
 import org.apache.olingo.odata4.server.api.edm.provider.ReturnType;
 
-public class EdmReturnTypeImpl implements EdmReturnType {
+public class EdmReturnTypeImpl extends AbstractEdmReturnType {
 
-  private final AbstractEdmImpl edm;
   private final ReturnType returnType;
-  private EdmType typeImpl;
 
-  public EdmReturnTypeImpl(final AbstractEdmImpl edm, final ReturnType returnType) {
-    this.edm = edm;
+  public EdmReturnTypeImpl(final Edm edm, final ReturnType returnType) {
+    super(edm, returnType.getType());
     this.returnType = returnType;
   }
 
   @Override
-  public EdmType getType() {
-    if (typeImpl == null) {
-      FullQualifiedName typeName = returnType.getType();
-      if (EdmPrimitiveType.EDM_NAMESPACE.equals(typeName.getNamespace())) {
-        try {
-          typeImpl = EdmPrimitiveTypeKind.valueOf(typeName.getName()).getEdmPrimitiveTypeInstance();
-        } catch (IllegalArgumentException e) {
-          throw new EdmException("Cannot find type with name: " + typeName, e);
-        }
-      } else {
-        typeImpl = edm.getComplexType(typeName);
-        if (typeImpl == null) {
-          typeImpl = edm.getEntityType(typeName);
-          if (typeImpl == null) {
-            typeImpl = edm.getEnumType(typeName);
-            if (typeImpl == null) {
-              typeImpl = edm.getTypeDefinition(typeName);
-              if (typeImpl == null) {
-                throw new EdmException("Cant find type with name: " + typeName);
-              }
-            }
-          }
-        }
-      }
-    }
-    return typeImpl;
-  }
-
-  @Override
   public boolean isCollection() {
     return returnType.isCollection();
   }


[13/22] git commit: Upgrading Jackson and SLF4J

Posted by il...@apache.org.
Upgrading Jackson and SLF4J


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

Branch: refs/heads/olingo169
Commit: a8c0e9ea84c428bb7f70d6378aea77b74b3ffae2
Parents: 0485543
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 5 15:47:18 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 5 15:47:18 2014 +0100

----------------------------------------------------------------------
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/a8c0e9ea/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5a1e0a2..b458284 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,11 +67,11 @@
     <commons.lang3.version>3.2.1</commons.lang3.version>
 
     <hc.client.version>4.2.6</hc.client.version>
-    <jackson.version>2.3.1</jackson.version>
+    <jackson.version>2.3.2</jackson.version>
 
     <antlr.version>4.1</antlr.version>
     
-    <sl4j.version>1.7.5</sl4j.version>    
+    <sl4j.version>1.7.6</sl4j.version>    
   </properties>
 
   <dependencyManagement>


[19/22] [OLINGO-186] client-side implementation of commons Edm interfaces completed: some refactoring on server-side performed to extract common abstract implementation

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
index b4bf986..8c52101 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/PropertyImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v3;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.xml.v3.Property;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractProperty;
 import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
@@ -27,68 +26,74 @@ public class PropertyImpl extends AbstractProperty implements Property {
 
   private static final long serialVersionUID = 6224524803474652100L;
 
-  @JsonProperty("FC_SourcePath")
   private String fcSourcePath;
 
-  @JsonProperty("FC_TargetPath")
   private String fcTargetPath;
 
-  @JsonProperty("FC_ContentKind")
   private EdmContentKind fcContentKind = EdmContentKind.text;
 
-  @JsonProperty("FC_NsPrefix")
   private String fcNSPrefix;
 
-  @JsonProperty("FC_NsUri")
   private String fcNSURI;
 
-  @JsonProperty("FC_KeepInContent")
   private boolean fcKeepInContent = true;
 
+  @Override
   public String getFcSourcePath() {
     return fcSourcePath;
   }
 
+  @Override
   public void setFcSourcePath(final String fcSourcePath) {
     this.fcSourcePath = fcSourcePath;
   }
 
+  @Override
   public String getFcTargetPath() {
     return fcTargetPath;
   }
 
+  @Override
   public void setFcTargetPath(final String fcTargetPath) {
     this.fcTargetPath = fcTargetPath;
   }
 
+  @Override
   public EdmContentKind getFcContentKind() {
     return fcContentKind;
   }
 
+  @Override
   public void setFcContentKind(final EdmContentKind fcContentKind) {
     this.fcContentKind = fcContentKind;
   }
 
+  @Override
   public String getFcNSPrefix() {
     return fcNSPrefix;
   }
 
+  @Override
   public void setFcNSPrefix(final String fcNSPrefix) {
     this.fcNSPrefix = fcNSPrefix;
   }
 
+  @Override
   public String getFcNSURI() {
     return fcNSURI;
   }
 
+  @Override
   public void setFcNSURI(final String fcNSURI) {
     this.fcNSURI = fcNSURI;
   }
 
+  @Override
   public boolean isFcKeepInContent() {
     return fcKeepInContent;
   }
 
+  @Override
   public void setFcKeepInContent(final boolean fcKeepInContent) {
     this.fcKeepInContent = fcKeepInContent;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
new file mode 100644
index 0000000..b5399ce
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v3/XMLMetadataImpl.java
@@ -0,0 +1,48 @@
+/*
+ * 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.xml.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractXMLMetadata;
+
+public class XMLMetadataImpl extends AbstractXMLMetadata {
+
+  private static final long serialVersionUID = -7765327879691528010L;
+
+  public XMLMetadataImpl(final EdmxImpl edmx) {
+    super(edmx);
+  }
+
+  @Override
+  public SchemaImpl getSchema(final int index) {
+    return (SchemaImpl) super.getSchema(index);
+  }
+
+  @Override
+  public SchemaImpl getSchema(final String key) {
+    return (SchemaImpl) super.getSchema(key);
+  }
+
+  @Override
+  @SuppressWarnings("unchecked")
+  public List<SchemaImpl> getSchemas() {
+    return (List<SchemaImpl>) super.getSchemas();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
index b449bdf..6a4332a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
@@ -24,7 +24,7 @@ import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstructImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.DynExprConstructImpl;
 
 public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationImpl> {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
index 47bc2ad..d21f846 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
@@ -23,8 +23,8 @@ import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;
-import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstructImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.annotation.DynExprConstructImpl;
 
 @JsonDeserialize(using = AnnotationDeserializer.class)
 public class AnnotationImpl extends AbstractEdmItem implements Annotation {

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
index 40bab7c..93a04b9 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
@@ -59,10 +59,12 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
     return entitySets;
   }
 
+  @Override
   public List<SingletonImpl> getSingletons() {
     return singletons;
   }
 
+  @Override
   public SingletonImpl getSingleton(final String name) {
     return getOneByName(name, getSingletons());
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
index b0451f5..8160193 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntitySet;
 
 public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
@@ -32,8 +33,7 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
 
   private AnnotationImpl annotation;
 
-  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
-          = new ArrayList<NavigationPropertyBindingImpl>();
+  private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>();
 
   @Override
   public boolean isIncludeInServiceDocument() {
@@ -46,7 +46,7 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
   }
 
   @Override
-  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
+  public List<NavigationPropertyBinding> getNavigationPropertyBindings() {
     return navigationPropertyBindings;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
index cf54d9e..ed731c3 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
@@ -18,7 +18,6 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Parameter;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractParameter;
 
@@ -26,7 +25,6 @@ public class ParameterImpl extends AbstractParameter implements Parameter {
 
   private static final long serialVersionUID = -1067642515116697747L;
 
-  @JsonProperty(value = "SRID")
   private String srid;
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
index ae2e4d1..0655061 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
@@ -19,7 +19,6 @@
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Property;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractProperty;
@@ -28,7 +27,6 @@ public class PropertyImpl extends AbstractProperty implements Property {
 
   private static final long serialVersionUID = -5541908235094985412L;
 
-  @JsonProperty("Annotation")
   private AnnotationImpl annotation;
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeDeserializer.java
new file mode 100644
index 0000000..d3e426f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeDeserializer.java
@@ -0,0 +1,60 @@
+/*
+ * 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.xml.v4;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class ReturnTypeDeserializer extends AbstractEdmDeserializer<ReturnTypeImpl> {
+
+  @Override
+  protected ReturnTypeImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final ReturnTypeImpl returnType = new ReturnTypeImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Type".equals(jp.getCurrentName())) {
+          returnType.setType(jp.nextTextValue());
+        } else if ("Nullable".equals(jp.getCurrentName())) {
+          returnType.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          final String maxLenght = jp.nextTextValue();
+          returnType.setMaxLength(maxLenght.equalsIgnoreCase("max") ? Integer.MAX_VALUE : Integer.valueOf(maxLenght));
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          returnType.setPrecision(Integer.valueOf(jp.nextTextValue()));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          returnType.setScale(Integer.valueOf(jp.nextTextValue()));
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          returnType.setSrid(jp.nextTextValue());
+        }
+      }
+    }
+
+    return returnType;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
index 6fcf691..02eb54a 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
@@ -18,31 +18,25 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigInteger;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.ReturnType;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
+@JsonDeserialize(using = ReturnTypeDeserializer.class)
 public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
 
   private static final long serialVersionUID = -5888231162358116515L;
 
-  @JsonProperty(value = "Type")
   private String type;
 
-  @JsonProperty(value = "Nullable")
   private boolean nullable = true;
 
-  @JsonProperty(value = "MaxLength")
-  private String maxLength;
+  private Integer maxLength;
 
-  @JsonProperty(value = "Precision")
-  private BigInteger precision;
+  private Integer precision;
 
-  @JsonProperty(value = "Scale")
-  private BigInteger scale;
+  private Integer scale;
 
-  @JsonProperty(value = "SRID")
   private String srid;
 
   @Override
@@ -66,32 +60,32 @@ public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
   }
 
   @Override
-  public String getMaxLength() {
+  public Integer getMaxLength() {
     return maxLength;
   }
 
   @Override
-  public void setMaxLength(final String maxLength) {
+  public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
 
   @Override
-  public BigInteger getPrecision() {
+  public Integer getPrecision() {
     return precision;
   }
 
   @Override
-  public void setPrecision(final BigInteger precision) {
+  public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
 
   @Override
-  public BigInteger getScale() {
+  public Integer getScale() {
     return scale;
   }
 
   @Override
-  public void setScale(final BigInteger scale) {
+  public void setScale(final Integer scale) {
     this.scale = scale;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
index d37e9fb..3987d3c 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
@@ -92,6 +92,10 @@ public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmIt
     return terms;
   }
 
+  public TypeDefinitionImpl getTypeDefinition(final String name) {
+    return getOneByName(name, getTypeDefinitions());
+  }
+
   public List<TypeDefinitionImpl> getTypeDefinitions() {
     return typeDefinitions;
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
index 06385db..77b7889 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonDeserializer.java
@@ -39,7 +39,7 @@ public class SingletonDeserializer extends AbstractEdmDeserializer<SingletonImpl
         if ("Name".equals(jp.getCurrentName())) {
           singleton.setName(jp.nextTextValue());
         } else if ("Type".equals(jp.getCurrentName())) {
-          singleton.setType(jp.nextTextValue());
+          singleton.setEntityType(jp.nextTextValue());
         } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {
           jp.nextToken();
           singleton.getNavigationPropertyBindings().add(

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
index 09044bc..21f2fb6 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SingletonImpl.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata4.client.core.edm.xml.v4;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.Singleton;
 
 @JsonDeserialize(using = SingletonDeserializer.class)
@@ -30,10 +31,9 @@ public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton
 
   private String name;
 
-  private String type;
+  private String entityType;
 
-  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
-          = new ArrayList<NavigationPropertyBindingImpl>();
+  private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>();
 
   @Override
   public String getName() {
@@ -46,17 +46,17 @@ public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton
   }
 
   @Override
-  public String getType() {
-    return type;
+  public String getEntityType() {
+    return entityType;
   }
 
   @Override
-  public void setType(final String type) {
-    this.type = type;
+  public void setEntityType(final String entityType) {
+    this.entityType = entityType;
   }
 
   @Override
-  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
+  public List<NavigationPropertyBinding> getNavigationPropertyBindings() {
     return navigationPropertyBindings;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
index 36b4cbe..07d2589 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionDeserializer.java
@@ -23,7 +23,6 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import java.io.IOException;
-import java.math.BigInteger;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
 
@@ -43,18 +42,18 @@ public class TypeDefinitionDeserializer extends AbstractEdmDeserializer<TypeDefi
         } else if ("UnderlyingType".equals(jp.getCurrentName())) {
           typeDefinition.setUnderlyingType(jp.nextTextValue());
         } else if ("MaxLength".equals(jp.getCurrentName())) {
-          typeDefinition.setMaxLength(jp.nextTextValue());
+          typeDefinition.setMaxLength(jp.nextIntValue(0));
         } else if ("Unicode".equals(jp.getCurrentName())) {
           typeDefinition.setUnicode(BooleanUtils.toBoolean(jp.nextTextValue()));
         } else if ("Precision".equals(jp.getCurrentName())) {
-          typeDefinition.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
+          typeDefinition.setPrecision(jp.nextIntValue(0));
         } else if ("Scale".equals(jp.getCurrentName())) {
-          typeDefinition.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
+          typeDefinition.setScale(jp.nextIntValue(0));
         } else if ("SRID".equals(jp.getCurrentName())) {
           typeDefinition.setSrid(jp.nextTextValue());
         } else if ("Annotation".equals(jp.getCurrentName())) {
           jp.nextToken();
-          typeDefinition.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
+          typeDefinition.getAnnotations().add(jp.readValueAs(AnnotationImpl.class));
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
index 061a4a6..cbccf9e 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/TypeDefinitionImpl.java
@@ -18,12 +18,13 @@
  */
 package org.apache.olingo.odata4.client.core.edm.xml.v4;
 
-import java.math.BigInteger;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.edm.xml.v4.TypeDefinition;
 import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
 
+@JsonDeserialize(using = TypeDefinitionDeserializer.class)
 public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinition {
 
   private static final long serialVersionUID = -5888231162358116515L;
@@ -32,11 +33,11 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
 
   private String underlyingType;
 
-  private String maxLength;
+  private Integer maxLength;
 
-  private BigInteger precision;
+  private Integer precision;
 
-  private BigInteger scale;
+  private Integer scale;
 
   private boolean unicode = true;
 
@@ -65,32 +66,32 @@ public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinitio
   }
 
   @Override
-  public String getMaxLength() {
+  public Integer getMaxLength() {
     return maxLength;
   }
 
   @Override
-  public void setMaxLength(final String maxLength) {
+  public void setMaxLength(final Integer maxLength) {
     this.maxLength = maxLength;
   }
 
   @Override
-  public BigInteger getPrecision() {
+  public Integer getPrecision() {
     return precision;
   }
 
   @Override
-  public void setPrecision(final BigInteger precision) {
+  public void setPrecision(final Integer precision) {
     this.precision = precision;
   }
 
   @Override
-  public BigInteger getScale() {
+  public Integer getScale() {
     return scale;
   }
 
   @Override
-  public void setScale(final BigInteger scale) {
+  public void setScale(final Integer scale) {
     this.scale = scale;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
new file mode 100644
index 0000000..98c8914
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/XMLMetadataImpl.java
@@ -0,0 +1,51 @@
+/*
+ * 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.xml.v4;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractXMLMetadata;
+
+public class XMLMetadataImpl extends AbstractXMLMetadata {
+
+  private static final long serialVersionUID = -7765327879691528010L;
+
+  public XMLMetadataImpl(final EdmxImpl edmx) {
+    super(edmx);
+  }
+
+  @Override
+  public SchemaImpl getSchema(final int index) {
+    return (SchemaImpl) super.getSchema(index);
+  }
+
+  @Override
+  public SchemaImpl getSchema(final String key) {
+    return (SchemaImpl) super.getSchema(key);
+  }
+
+  @Override
+  @SuppressWarnings("unchecked")
+  public List<SchemaImpl> getSchemas() {
+    return (List<SchemaImpl>) super.getSchemas();
+  }
+
+  public List<ReferenceImpl> getReferences() {
+    return ((EdmxImpl) this.edmx).getReferences();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AbstractElOrAttrConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AbstractElOrAttrConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AbstractElOrAttrConstruct.java
new file mode 100644
index 0000000..fe871b3
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AbstractElOrAttrConstruct.java
@@ -0,0 +1,37 @@
+/*
+ * 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.xml.v4.annotation;
+
+/**
+ * Groups dynamic expressions that may be provided using element notation or attribute notation.
+ */
+abstract class AbstractElOrAttrConstruct extends DynExprConstructImpl {
+
+  private static final long serialVersionUID = 5503275111425750339L;
+
+  private String value;
+
+  public String getValue() {
+    return value;
+  }
+
+  public void setValue(final String value) {
+    this.value = value;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
new file mode 100644
index 0000000..4fe94f9
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotatedDynExprConstruct.java
@@ -0,0 +1,40 @@
+/*
+ * 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.xml.v4.annotation;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+abstract class AnnotatedDynExprConstruct extends DynExprConstructImpl implements AnnotatedEdmItem {
+
+  private static final long serialVersionUID = -8117155475397749038L;
+
+  private AnnotationImpl annotation;
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotationPath.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotationPath.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotationPath.java
new file mode 100644
index 0000000..b6a4c7d
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/AnnotationPath.java
@@ -0,0 +1,25 @@
+/*
+ * 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.xml.v4.annotation;
+
+public class AnnotationPath extends AbstractElOrAttrConstruct {
+
+  private static final long serialVersionUID = 6198019768659098819L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Apply.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Apply.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Apply.java
new file mode 100644
index 0000000..362fbc2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Apply.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+
+@JsonDeserialize(using = ApplyDeserializer.class)
+public class Apply extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = 6198019768659098819L;
+
+  public static final String CANONICAL_FUNCTION_CONCAT = "odata.concat";
+
+  public static final String CANONICAL_FUNCTION_FILLURITEMPLATE = "odata.fillUriTemplate";
+
+  public static final String CANONICAL_FUNCTION_URIENCODE = "odata.uriEncode";
+
+  private String function;
+
+  private final List<ExprConstruct> parameters = new ArrayList<ExprConstruct>();
+
+  public String getFunction() {
+    return function;
+  }
+
+  public void setFunction(final String function) {
+    this.function = function;
+  }
+
+  public List<ExprConstruct> getParameters() {
+    return parameters;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ApplyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ApplyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ApplyDeserializer.java
new file mode 100644
index 0000000..56378dc
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ApplyDeserializer.java
@@ -0,0 +1,55 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class ApplyDeserializer extends AbstractEdmDeserializer<Apply> {
+
+  @Override
+  protected Apply doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final Apply apply = new Apply();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Function".equals(jp.getCurrentName())) {
+          apply.setFunction(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          apply.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        } else if (isAnnotationConstExprConstruct(jp)) {
+          apply.getParameters().add(parseAnnotationConstExprConstruct(jp));
+        } else {
+          apply.getParameters().add(jp.readValueAs(DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return apply;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Cast.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Cast.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Cast.java
new file mode 100644
index 0000000..b3e3127
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Cast.java
@@ -0,0 +1,90 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+@JsonDeserialize(using = CastDeserializer.class)
+public class Cast extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = -7836626668653004926L;
+
+  private String type;
+
+  private String maxLength;
+
+  private BigInteger precision;
+
+  private BigInteger scale;
+
+  private String srid;
+
+  private DynExprConstruct value;
+
+  public String getType() {
+    return type;
+  }
+
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+
+  public String getSrid() {
+    return srid;
+  }
+
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+  public DynExprConstruct getValue() {
+    return value;
+  }
+
+  public void setValue(final DynExprConstruct value) {
+    this.value = value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CastDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CastDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CastDeserializer.java
new file mode 100644
index 0000000..4430bc0
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CastDeserializer.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v4.annotation;
+
+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 java.math.BigInteger;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class CastDeserializer extends AbstractEdmDeserializer<Cast> {
+
+  @Override
+  protected Cast doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final Cast cast = new Cast();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Type".equals(jp.getCurrentName())) {
+          cast.setType(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          cast.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          cast.setMaxLength(jp.nextTextValue());
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          cast.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          cast.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          cast.setSrid(jp.nextTextValue());
+        } else {
+          cast.setValue(jp.readValueAs(DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return cast;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Collection.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Collection.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Collection.java
new file mode 100644
index 0000000..3583a5c
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/Collection.java
@@ -0,0 +1,37 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+
+@JsonDeserialize(using = CollectionDeserializer.class)
+public class Collection extends DynExprConstructImpl {
+
+  private static final long serialVersionUID = -4975881520695477686L;
+
+  private final List<ExprConstruct> items = new ArrayList<ExprConstruct>();
+
+  public List<ExprConstruct> getItems() {
+    return items;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CollectionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CollectionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CollectionDeserializer.java
new file mode 100644
index 0000000..20b0f56
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/CollectionDeserializer.java
@@ -0,0 +1,50 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class CollectionDeserializer extends AbstractEdmDeserializer<Collection> {
+
+  @Override
+  protected Collection doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final Collection collection = new Collection();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if (isAnnotationConstExprConstruct(jp)) {
+          collection.getItems().add(parseAnnotationConstExprConstruct(jp));
+        } else {
+          collection.getItems().add(jp.readValueAs( DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return collection;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ConstExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ConstExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ConstExprConstructImpl.java
new file mode 100644
index 0000000..d701d06
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ConstExprConstructImpl.java
@@ -0,0 +1,51 @@
+/*
+ * 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.xml.v4.annotation;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
+
+public class ConstExprConstructImpl extends ExprConstructImpl implements ConstExprConstruct {
+
+  private static final long serialVersionUID = 2250072064504668969L;
+
+  private Type type;
+
+  private String value;
+
+  @Override
+  public Type getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final Type type) {
+    this.type = type;
+  }
+
+  @Override
+  public String getValue() {
+    return value;
+  }
+
+  @Override
+  public void setValue(final String value) {
+    this.value = value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructDeserializer.java
new file mode 100644
index 0000000..e881c39
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructDeserializer.java
@@ -0,0 +1,145 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.core.JsonLocation;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import java.io.IOException;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+
+public class DynExprConstructDeserializer extends AbstractEdmDeserializer<DynExprConstructImpl> {
+
+    private static final String[] EL_OR_ATTR = { AnnotationPath.class.getSimpleName(), Path.class.getSimpleName() };
+
+    private static final String APPLY = Apply.class.getSimpleName();
+
+    private static final String CAST = Cast.class.getSimpleName();
+
+    private static final String COLLECTION = Collection.class.getSimpleName();
+
+    private static final String IF = If.class.getSimpleName();
+
+    private static final String IS_OF = IsOf.class.getSimpleName();
+
+    private static final String LABELED_ELEMENT = LabeledElement.class.getSimpleName();
+
+    private static final String NULL = Null.class.getSimpleName();
+
+    private static final String RECORD = Record.class.getSimpleName();
+
+    private static final String URL_REF = UrlRef.class.getSimpleName();
+
+    private AbstractElOrAttrConstruct getElOrAttrInstance(final String simpleClassName) throws JsonParseException {
+        try {
+            @SuppressWarnings("unchecked")
+            Class<? extends AbstractElOrAttrConstruct> elOrAttrClass =
+                    (Class<? extends AbstractElOrAttrConstruct>) ClassUtils.getClass(
+                            getClass().getPackage().getName() + "." + simpleClassName);
+            return elOrAttrClass.newInstance();
+        } catch (Exception e) {
+            throw new JsonParseException("Could not instantiate " + simpleClassName, JsonLocation.NA, e);
+        }
+    }
+
+    private ExprConstructImpl parseConstOrEnumExprConstruct(final JsonParser jp) throws IOException {
+        ExprConstructImpl result;
+        if (isAnnotationConstExprConstruct(jp)) {
+            result = parseAnnotationConstExprConstruct(jp);
+        } else {
+            result = jp.readValueAs( DynExprConstructImpl.class);
+        }
+        jp.nextToken();
+
+        return result;
+    }
+
+    @Override
+    protected DynExprConstructImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+            throws IOException, JsonProcessingException {
+
+        DynExprConstructImpl construct = null;
+
+        if (DynExprSingleParamOp.Type.fromString(jp.getCurrentName()) != null) {
+            final DynExprSingleParamOp dynExprSingleParamOp = new DynExprSingleParamOp();
+            dynExprSingleParamOp.setType(DynExprSingleParamOp.Type.fromString(jp.getCurrentName()));
+
+            jp.nextToken();
+            jp.nextToken();
+            dynExprSingleParamOp.setExpression(jp.readValueAs( DynExprConstructImpl.class));
+
+            construct = dynExprSingleParamOp;
+        } else if (DynExprDoubleParamOp.Type.fromString(jp.getCurrentName()) != null) {
+            final DynExprDoubleParamOp dynExprDoubleParamOp = new DynExprDoubleParamOp();
+            dynExprDoubleParamOp.setType(DynExprDoubleParamOp.Type.fromString(jp.getCurrentName()));
+
+            jp.nextToken();
+            jp.nextToken();
+            dynExprDoubleParamOp.setLeft(jp.readValueAs( DynExprConstructImpl.class));
+            dynExprDoubleParamOp.setRight(jp.readValueAs( DynExprConstructImpl.class));
+
+            construct = dynExprDoubleParamOp;
+        } else if (ArrayUtils.contains(EL_OR_ATTR, jp.getCurrentName())) {
+            final AbstractElOrAttrConstruct elOrAttr = getElOrAttrInstance(jp.getCurrentName());
+            elOrAttr.setValue(jp.nextTextValue());
+
+            construct = elOrAttr;
+        } else if (APPLY.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( Apply.class);
+        } else if (CAST.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( Cast.class);
+        } else if (COLLECTION.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( Collection.class);
+        } else if (IF.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            jp.nextToken();
+
+            final If _if = new If();
+            _if.setGuard(parseConstOrEnumExprConstruct(jp));
+            _if.setThen(parseConstOrEnumExprConstruct(jp));
+            _if.setElse(parseConstOrEnumExprConstruct(jp));
+
+            construct = _if;
+        } else if (IS_OF.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( IsOf.class);
+        } else if (LABELED_ELEMENT.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( LabeledElement.class);
+        } else if (NULL.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( Null.class);
+        } else if (RECORD.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( Record.class);
+        } else if (URL_REF.equals(jp.getCurrentName())) {
+            jp.nextToken();
+            construct = jp.readValueAs( UrlRef.class);
+        }
+
+        return construct;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructImpl.java
new file mode 100644
index 0000000..862b322
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprConstructImpl.java
@@ -0,0 +1,29 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+@JsonDeserialize(using = DynExprConstructDeserializer.class)
+public abstract class DynExprConstructImpl extends ExprConstructImpl implements DynExprConstruct {
+
+  private static final long serialVersionUID = -642012862023177349L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprDoubleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprDoubleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprDoubleParamOp.java
new file mode 100644
index 0000000..6fd83d3
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprDoubleParamOp.java
@@ -0,0 +1,73 @@
+/*
+ * 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.xml.v4.annotation;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+public class DynExprDoubleParamOp extends DynExprConstructImpl {
+
+  private static final long serialVersionUID = -7974475975925167731L;
+
+  public static enum Type {
+
+    And,
+    Or;
+
+    public static Type fromString(final String value) {
+      Type result = null;
+      for (Type type : values()) {
+        if (value.equals(type.name())) {
+          result = type;
+        }
+      }
+      return result;
+    }
+  }
+
+  private Type type;
+
+  private DynExprConstruct left;
+
+  private DynExprConstruct right;
+
+  public Type getType() {
+    return type;
+  }
+
+  public void setType(final Type type) {
+    this.type = type;
+  }
+
+  public DynExprConstruct getLeft() {
+    return left;
+  }
+
+  public void setLeft(final DynExprConstruct left) {
+    this.left = left;
+  }
+
+  public DynExprConstruct getRight() {
+    return right;
+  }
+
+  public void setRight(final DynExprConstruct right) {
+    this.right = right;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprSingleParamOp.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprSingleParamOp.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprSingleParamOp.java
new file mode 100644
index 0000000..7fc34e2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/DynExprSingleParamOp.java
@@ -0,0 +1,69 @@
+/*
+ * 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.xml.v4.annotation;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+public class DynExprSingleParamOp extends DynExprConstructImpl {
+
+  private static final long serialVersionUID = -7974475975925167731L;
+
+  public static enum Type {
+
+    Not,
+    Eq,
+    Ne,
+    Gt,
+    Ge,
+    Lt,
+    Le;
+
+    public static Type fromString(final String value) {
+      Type result = null;
+      for (Type type : values()) {
+        if (value.equals(type.name())) {
+          result = type;
+        }
+      }
+      return result;
+    }
+
+  }
+
+  private Type type;
+
+  private DynExprConstruct expression;
+
+  public Type getType() {
+    return type;
+  }
+
+  public void setType(final Type type) {
+    this.type = type;
+  }
+
+  public DynExprConstruct getExpression() {
+    return expression;
+  }
+
+  public void setExpression(final DynExprConstruct expression) {
+    this.expression = expression;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ExprConstructImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ExprConstructImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ExprConstructImpl.java
new file mode 100644
index 0000000..960c730
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/ExprConstructImpl.java
@@ -0,0 +1,28 @@
+/*
+ * 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.xml.v4.annotation;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public abstract class ExprConstructImpl extends AbstractEdmItem implements ExprConstruct {
+
+  private static final long serialVersionUID = 7108626008005050492L;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/If.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/If.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/If.java
new file mode 100644
index 0000000..e6ea91d
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/If.java
@@ -0,0 +1,57 @@
+/*
+ * 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.xml.v4.annotation;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ExprConstruct;
+
+public class If extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = 6752952406406218936L;
+
+  private ExprConstruct guard;
+
+  private ExprConstruct _then;
+
+  private ExprConstruct _else;
+
+  public ExprConstruct getGuard() {
+    return guard;
+  }
+
+  public void setGuard(final ExprConstruct guard) {
+    this.guard = guard;
+  }
+
+  public ExprConstruct getThen() {
+    return _then;
+  }
+
+  public void setThen(final ExprConstruct _then) {
+    this._then = _then;
+  }
+
+  public ExprConstruct getElse() {
+    return _else;
+  }
+
+  public void setElse(final ExprConstruct _else) {
+    this._else = _else;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOf.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOf.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOf.java
new file mode 100644
index 0000000..d327964
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOf.java
@@ -0,0 +1,90 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+@JsonDeserialize(using = IsOfDeserializer.class)
+public class IsOf extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = 6958304670385303776L;
+
+  private String type;
+
+  private String maxLength;
+
+  private BigInteger precision;
+
+  private BigInteger scale;
+
+  private String srid;
+
+  private DynExprConstruct value;
+
+  public String getType() {
+    return type;
+  }
+
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+
+  public String getSrid() {
+    return srid;
+  }
+
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+  public DynExprConstruct getValue() {
+    return value;
+  }
+
+  public void setValue(final DynExprConstruct value) {
+    this.value = value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOfDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOfDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOfDeserializer.java
new file mode 100644
index 0000000..283997e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/IsOfDeserializer.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v4.annotation;
+
+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 java.math.BigInteger;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class IsOfDeserializer extends AbstractEdmDeserializer<IsOf> {
+
+  @Override
+  protected IsOf doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final IsOf isof = new IsOf();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Type".equals(jp.getCurrentName())) {
+          isof.setType(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          isof.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        } else if ("MaxLength".equals(jp.getCurrentName())) {
+          isof.setMaxLength(jp.nextTextValue());
+        } else if ("Precision".equals(jp.getCurrentName())) {
+          isof.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("Scale".equals(jp.getCurrentName())) {
+          isof.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
+        } else if ("SRID".equals(jp.getCurrentName())) {
+          isof.setSrid(jp.nextTextValue());
+        } else {
+          isof.setValue(jp.readValueAs(DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return isof;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElement.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElement.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElement.java
new file mode 100644
index 0000000..15321d2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElement.java
@@ -0,0 +1,49 @@
+/*
+ * 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.xml.v4.annotation;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+@JsonDeserialize(using = LabeledElementDeserializer.class)
+public class LabeledElement extends AnnotatedDynExprConstruct {
+
+  private static final long serialVersionUID = 6938971787086282939L;
+
+  private String name;
+
+  private DynExprConstruct value;
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  public DynExprConstruct getValue() {
+    return value;
+  }
+
+  public void setValue(final DynExprConstruct value) {
+    this.value = value;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/bae3d847/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementDeserializer.java
new file mode 100644
index 0000000..440b08b
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/annotation/LabeledElementDeserializer.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml.v4.annotation;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.AnnotationImpl;
+
+public class LabeledElementDeserializer extends AbstractEdmDeserializer<LabeledElement> {
+
+  @Override
+  protected LabeledElement doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final LabeledElement element = new LabeledElement();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          element.setName(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          element.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        } else {
+          element.setValue(jp.readValueAs(DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return element;
+  }
+
+}


[02/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
new file mode 100644
index 0000000..d92ab8e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImpl.java
@@ -0,0 +1,92 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Action;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ReturnType;
+
+@JsonDeserialize(using = ActionDeserializer.class)
+public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
+
+  private static final long serialVersionUID = -99977447455438193L;
+
+  private String name;
+
+  private boolean bound = false;
+
+  private String entitySetPath;
+
+  private final List<ParameterImpl> parameters = new ArrayList<ParameterImpl>();
+
+  private ReturnTypeImpl returnType;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public boolean isBound() {
+    return bound;
+  }
+
+  @Override
+  public void setBound(final boolean bound) {
+    this.bound = bound;
+  }
+
+  @Override
+  public String getEntitySetPath() {
+    return entitySetPath;
+  }
+
+  @Override
+  public void setEntitySetPath(final String entitySetPath) {
+    this.entitySetPath = entitySetPath;
+  }
+
+  @Override
+  public ParameterImpl getParameter(final String name) {
+    return getOneByName(name, getParameters());
+  }
+
+  @Override
+  public List<ParameterImpl> getParameters() {
+    return parameters;
+  }
+
+  @Override
+  public ReturnTypeImpl getReturnType() {
+    return returnType;
+  }
+
+  @Override
+  public void setReturnType(final ReturnType returnType) {
+    this.returnType = (ReturnTypeImpl) returnType;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
new file mode 100644
index 0000000..63284ac
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ActionImportImpl.java
@@ -0,0 +1,67 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ActionImport;
+
+public class ActionImportImpl extends AbstractAnnotatedEdmItem implements ActionImport {
+
+  private static final long serialVersionUID = -866422101558426421L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty(value = "Action", required = true)
+  private String action;
+
+  @JsonProperty(value = "EntitySet")
+  private String entitySet;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getAction() {
+    return action;
+  }
+
+  @Override
+  public void setAction(final String action) {
+    this.action = action;
+  }
+
+  @Override
+  public String getEntitySet() {
+    return entitySet;
+  }
+
+  @Override
+  public void setEntitySet(final String entitySet) {
+    this.entitySet = entitySet;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
new file mode 100644
index 0000000..b449bdf
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationDeserializer.java
@@ -0,0 +1,57 @@
+/*
+ * 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.xml.v4;
+
+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.op.impl.AbstractEdmDeserializer;
+import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstructImpl;
+
+public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationImpl> {
+
+  @Override
+  protected AnnotationImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AnnotationImpl annotation = new AnnotationImpl();
+
+    for (; jp.getCurrentToken() != null && jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Term".equals(jp.getCurrentName())) {
+          annotation.setTerm(jp.nextTextValue());
+        } else if ("Qualifier".equals(jp.getCurrentName())) {
+          annotation.setQualifier(jp.nextTextValue());
+        } else if (isAnnotationConstExprConstruct(jp)) {
+          // Constant Expressions
+          annotation.setConstExpr(parseAnnotationConstExprConstruct(jp));
+        } else {
+          // Dynamic Expressions
+          annotation.setDynExpr(jp.readValueAs( DynExprConstructImpl.class));
+        }
+      }
+    }
+
+    return annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
new file mode 100644
index 0000000..47bc2ad
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationImpl.java
@@ -0,0 +1,82 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+import org.apache.olingo.odata4.client.core.edm.v4.annotation.ConstExprConstructImpl;
+import org.apache.olingo.odata4.client.core.edm.v4.annotation.DynExprConstructImpl;
+
+@JsonDeserialize(using = AnnotationDeserializer.class)
+public class AnnotationImpl extends AbstractEdmItem implements Annotation {
+
+  private static final long serialVersionUID = -5600031479702563436L;
+
+  private String term;
+
+  private String qualifier;
+
+  private ConstExprConstructImpl constExpr;
+
+  private DynExprConstructImpl dynExpr;
+
+  @Override
+  public String getTerm() {
+    return term;
+  }
+
+  @Override
+  public void setTerm(final String term) {
+    this.term = term;
+  }
+
+  @Override
+  public String getQualifier() {
+    return qualifier;
+  }
+
+  @Override
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
+
+  @Override
+  public ConstExprConstructImpl getConstExpr() {
+    return constExpr;
+  }
+
+  @Override
+  public void setConstExpr(final ConstExprConstruct constExpr) {
+    this.constExpr = (ConstExprConstructImpl) constExpr;
+  }
+
+  @Override
+  public DynExprConstructImpl getDynExpr() {
+    return dynExpr;
+  }
+
+  @Override
+  public void setDynExpr(final DynExprConstruct dynExpr) {
+    this.dynExpr = (DynExprConstructImpl) dynExpr;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsDeserializer.java
new file mode 100644
index 0000000..80e07ad
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsDeserializer.java
@@ -0,0 +1,53 @@
+/*
+ * 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.xml.v4;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class AnnotationsDeserializer extends AbstractEdmDeserializer<AnnotationsImpl> {
+
+  @Override
+  protected AnnotationsImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final AnnotationsImpl annotations = new AnnotationsImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Target".equals(jp.getCurrentName())) {
+          annotations.setTarget(jp.nextTextValue());
+        } else if ("Qualifier".equals(jp.getCurrentName())) {
+          annotations.setQualifier(jp.nextTextValue());
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          annotations.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
+        }
+      }
+    }
+
+    return annotations;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsImpl.java
new file mode 100644
index 0000000..cfd961d
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/AnnotationsImpl.java
@@ -0,0 +1,49 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotations;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractAnnotations;
+
+@JsonDeserialize(using = AnnotationsDeserializer.class)
+public class AnnotationsImpl extends AbstractAnnotations implements Annotations {
+
+  private static final long serialVersionUID = 3877353656301805410L;
+
+  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
+
+  @Override
+  public List<AnnotationImpl> getAnnotations() {
+    return annotations;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation(final String term) {
+    AnnotationImpl result = null;
+    for (AnnotationImpl annotation : getAnnotations()) {
+      if (term.equals(annotation.getTerm())) {
+        result = annotation;
+      }
+    }
+    return result;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
new file mode 100644
index 0000000..4d4812b
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ComplexTypeImpl.java
@@ -0,0 +1,103 @@
+/*
+ * 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.xml.v4;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ComplexType;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractComplexType;
+
+public class ComplexTypeImpl extends AbstractComplexType implements ComplexType {
+
+  private static final long serialVersionUID = -1251230308269425962L;
+
+  private boolean abstractEntityType = false;
+
+  private String baseType;
+
+  private boolean openType = false;
+
+  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+
+  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+
+  private AnnotationImpl annotation;
+
+  @Override
+  public boolean isAbstractEntityType() {
+    return abstractEntityType;
+  }
+
+  @Override
+  public void setAbstractEntityType(final boolean abstractEntityType) {
+    this.abstractEntityType = abstractEntityType;
+  }
+
+  @Override
+  public String getBaseType() {
+    return baseType;
+  }
+
+  @Override
+  public void setBaseType(final String baseType) {
+    this.baseType = baseType;
+  }
+
+  @Override
+  public boolean isOpenType() {
+    return openType;
+  }
+
+  @Override
+  public void setOpenType(final boolean openType) {
+    this.openType = openType;
+  }
+
+  @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
+  public List<PropertyImpl> getProperties() {
+    return properties;
+  }
+
+  @Override
+  public NavigationPropertyImpl getNavigationProperty(String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
+  }
+
+  @Override
+  public List<NavigationPropertyImpl> getNavigationProperties() {
+    return navigationProperties;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
new file mode 100644
index 0000000..9a62677
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/DataServicesImpl.java
@@ -0,0 +1,36 @@
+/*
+ * 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.xml.v4;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractDataServices;
+
+public class DataServicesImpl extends AbstractDataServices {
+
+  private static final long serialVersionUID = -7954360771258897632L;
+
+  private final List<SchemaImpl> schemas = new ArrayList<SchemaImpl>();
+
+  @Override
+  public List<SchemaImpl> getSchemas() {
+    return schemas;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
new file mode 100644
index 0000000..f23f05f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EdmxImpl.java
@@ -0,0 +1,42 @@
+/*
+ * 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.xml.v4;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Edmx;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmx;
+
+public class EdmxImpl extends AbstractEdmx implements Edmx {
+
+  private static final long serialVersionUID = -8031883176876401375L;
+
+  private final List<ReferenceImpl> references = new ArrayList<ReferenceImpl>();
+
+  @Override
+  public DataServicesImpl getDataServices() {
+    return (DataServicesImpl) super.getDataServices();
+  }
+
+  @Override
+  public List<ReferenceImpl> getReferences() {
+    return references;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
new file mode 100644
index 0000000..40bab7c
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityContainerImpl.java
@@ -0,0 +1,123 @@
+/*
+ * 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.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityContainer;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityContainer;
+
+public class EntityContainerImpl extends AbstractEntityContainer implements AnnotatedEdmItem, EntityContainer {
+
+  private static final long serialVersionUID = 2526002525927260320L;
+
+  private final List<EntitySetImpl> entitySets = new ArrayList<EntitySetImpl>();
+
+  private final List<SingletonImpl> singletons = new ArrayList<SingletonImpl>();
+
+  private final List<ActionImportImpl> actionImports = new ArrayList<ActionImportImpl>();
+
+  private final List<FunctionImportImpl> functionImports = new ArrayList<FunctionImportImpl>();
+
+  private AnnotationImpl annotation;
+
+  @Override
+  public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
+    // no action: a single entity container MUST be available as per OData 4.0
+  }
+
+  @Override
+  public boolean isDefaultEntityContainer() {
+    return true;
+  }
+
+  @Override
+  public EntitySetImpl getEntitySet(final String name) {
+    return (EntitySetImpl) super.getEntitySet(name);
+  }
+
+  @Override
+  public List<EntitySetImpl> getEntitySets() {
+    return entitySets;
+  }
+
+  public List<SingletonImpl> getSingletons() {
+    return singletons;
+  }
+
+  public SingletonImpl getSingleton(final String name) {
+    return getOneByName(name, getSingletons());
+  }
+
+  @Override
+  public FunctionImportImpl getFunctionImport(final String name) {
+    return (FunctionImportImpl) super.getFunctionImport(name);
+  }
+
+  @Override
+  @SuppressWarnings("unchecked")
+  public List<FunctionImportImpl> getFunctionImports(final String name) {
+    return (List<FunctionImportImpl>) super.getFunctionImports(name);
+  }
+
+  /**
+   * Gets the first action import with given name.
+   *
+   * @param name name.
+   * @return action import.
+   */
+  @Override
+  public ActionImportImpl getActionImport(final String name) {
+    return getOneByName(name, getActionImports());
+  }
+
+  /**
+   * Gets all action imports with given name.
+   *
+   * @param name name.
+   * @return action imports.
+   */
+  @Override
+  public List<ActionImportImpl> getActionImports(final String name) {
+    return getAllByName(name, getActionImports());
+  }
+
+  @Override
+  public List<ActionImportImpl> getActionImports() {
+    return actionImports;
+  }
+
+  @Override
+  public List<FunctionImportImpl> getFunctionImports() {
+    return functionImports;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.java
new file mode 100644
index 0000000..b0451f5
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntitySetImpl.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.client.core.edm.xml.v4;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntitySet;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntitySet;
+
+public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
+
+  private static final long serialVersionUID = 5570833733884884012L;
+
+  private boolean includeInServiceDocument = true;
+
+  private AnnotationImpl annotation;
+
+  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
+          = new ArrayList<NavigationPropertyBindingImpl>();
+
+  @Override
+  public boolean isIncludeInServiceDocument() {
+    return includeInServiceDocument;
+  }
+
+  @Override
+  public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
+    this.includeInServiceDocument = includeInServiceDocument;
+  }
+
+  @Override
+  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
+    return navigationPropertyBindings;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
new file mode 100644
index 0000000..d82b1a2
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EntityTypeImpl.java
@@ -0,0 +1,67 @@
+/*
+ * 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.xml.v4;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.EntityType;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEntityType;
+
+public class EntityTypeImpl extends AbstractEntityType implements EntityType {
+
+  private static final long serialVersionUID = 8727765036150269547L;
+
+  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
+
+  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
+
+  private AnnotationImpl annotation;
+
+  @Override
+  public PropertyImpl getProperty(final String name) {
+    return (PropertyImpl) super.getProperty(name);
+  }
+
+  @Override
+  public List<PropertyImpl> getProperties() {
+    return properties;
+  }
+
+  @Override
+  public NavigationPropertyImpl getNavigationProperty(final String name) {
+    return (NavigationPropertyImpl) super.getNavigationProperty(name);
+  }
+
+  @Override
+  public List<NavigationPropertyImpl> getNavigationProperties() {
+    return navigationProperties;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
new file mode 100644
index 0000000..b7867dc
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/EnumTypeImpl.java
@@ -0,0 +1,60 @@
+/*
+ * 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.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEnumType;
+
+public class EnumTypeImpl extends AbstractEnumType implements AnnotatedEdmItem {
+
+  private static final long serialVersionUID = -3329664331877556957L;
+
+  private AnnotationImpl annotation;
+
+  private final List<MemberImpl> members = new ArrayList<MemberImpl>();
+
+  @Override
+  public List<MemberImpl> getMembers() {
+    return members;
+  }
+
+  @Override
+  public MemberImpl getMember(final String name) {
+    return (MemberImpl) super.getMember(name);
+  }
+
+  @Override
+  public MemberImpl getMember(final Integer value) {
+    return (MemberImpl) super.getMember(value);
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionDeserializer.java
new file mode 100644
index 0000000..f8c6b8a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionDeserializer.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v4;
+
+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.op.impl.AbstractEdmDeserializer;
+
+public class FunctionDeserializer extends AbstractEdmDeserializer<FunctionImpl> {
+
+  @Override
+  protected FunctionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final FunctionImpl functionImpl = new FunctionImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          functionImpl.setName(jp.nextTextValue());
+        } else if ("IsBound".equals(jp.getCurrentName())) {
+          functionImpl.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("IsComposable".equals(jp.getCurrentName())) {
+          functionImpl.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("EntitySetPath".equals(jp.getCurrentName())) {
+          functionImpl.setEntitySetPath(jp.nextTextValue());
+        } else if ("Parameter".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          functionImpl.getParameters().add(jp.readValueAs(ParameterImpl.class));
+        } else if ("ReturnType".equals(jp.getCurrentName())) {
+          functionImpl.setReturnType(parseReturnType(jp, "Function"));
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          functionImpl.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return functionImpl;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
new file mode 100644
index 0000000..f355eba
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImpl.java
@@ -0,0 +1,41 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Function;
+
+@JsonDeserialize(using = FunctionDeserializer.class)
+public class FunctionImpl extends ActionImpl implements Function {
+
+  private static final long serialVersionUID = -5888231162358116515L;
+
+  private boolean composable = false;
+
+  @Override
+  public boolean isComposable() {
+    return composable;
+  }
+
+  @Override
+  public void setComposable(final boolean composable) {
+    this.composable = composable;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
new file mode 100644
index 0000000..f933664
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/FunctionImportImpl.java
@@ -0,0 +1,96 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.FunctionImport;
+
+public class FunctionImportImpl implements FunctionImport {
+
+  private static final long serialVersionUID = 3023813358471000019L;
+
+  @JsonProperty(value = "Name", required = true)
+  private String name;
+
+  @JsonProperty(value = "Function", required = true)
+  private String function;
+
+  @JsonProperty(value = "EntitySet")
+  private String entitySet;
+
+  @JsonProperty(value = "IncludeInServiceDocument")
+  private boolean includeInServiceDocument = false;
+
+  @JsonProperty(value = "Annotation")
+  private AnnotationImpl annotation;
+
+  @Override
+  public String getName() {
+    return name;
+  }
+
+  @Override
+  public void setName(final String name) {
+    this.name = name;
+  }
+
+  @Override
+  public String getFunction() {
+    return function;
+  }
+
+  @Override
+  public void setFunction(final String function) {
+    this.function = function;
+  }
+
+  @Override
+  public String getEntitySet() {
+    return entitySet;
+  }
+
+  @Override
+  public void setEntitySet(final String entitySet) {
+    this.entitySet = entitySet;
+  }
+
+  @Override
+  public boolean isIncludeInServiceDocument() {
+    return includeInServiceDocument;
+  }
+
+  @Override
+  public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
+    this.includeInServiceDocument = includeInServiceDocument;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @JsonIgnore
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
new file mode 100644
index 0000000..1dd0e30
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeAnnotationsImpl.java
@@ -0,0 +1,68 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.IncludeAnnotations;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class IncludeAnnotationsImpl extends AbstractEdmItem implements IncludeAnnotations {
+
+  private static final long serialVersionUID = -5600031479702563436L;
+
+  @JsonProperty(value = "TermNamespace", required = true)
+  private String termNamespace;
+
+  @JsonProperty(value = "Qualifier")
+  private String qualifier;
+
+  @JsonProperty(value = "TargetNamespace")
+  private String targeyNamespace;
+
+  @Override
+  public String getTermNamespace() {
+    return termNamespace;
+  }
+
+  @Override
+  public void setTermNamespace(final String termNamespace) {
+    this.termNamespace = termNamespace;
+  }
+
+  @Override
+  public String getQualifier() {
+    return qualifier;
+  }
+
+  @Override
+  public void setQualifier(final String qualifier) {
+    this.qualifier = qualifier;
+  }
+
+  @Override
+  public String getTargeyNamespace() {
+    return targeyNamespace;
+  }
+
+  @Override
+  public void setTargeyNamespace(final String targeyNamespace) {
+    this.targeyNamespace = targeyNamespace;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
new file mode 100644
index 0000000..487edc6
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/IncludeImpl.java
@@ -0,0 +1,55 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Include;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class IncludeImpl extends AbstractEdmItem implements Include {
+
+  private static final long serialVersionUID = -5600031479702563436L;
+
+  @JsonProperty(value = "Namespace", required = true)
+  private String namespace;
+
+  @JsonProperty(value = "Alias")
+  private String alias;
+
+  @Override
+  public String getNamespace() {
+    return namespace;
+  }
+
+  @Override
+  public void setNamespace(final String namespace) {
+    this.namespace = namespace;
+  }
+
+  @Override
+  public String getAlias() {
+    return alias;
+  }
+
+  @Override
+  public void setAlias(final String alias) {
+    this.alias = alias;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
new file mode 100644
index 0000000..baed5fd
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/MemberImpl.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.core.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractMember;
+
+public class MemberImpl extends AbstractMember implements AnnotatedEdmItem {
+
+  private static final long serialVersionUID = -344920557183058824L;
+
+  @JsonProperty("Annotation")
+  private AnnotationImpl annotation;
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @JsonIgnore
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
new file mode 100644
index 0000000..536dee3
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyBindingImpl.java
@@ -0,0 +1,55 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationPropertyBinding;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class NavigationPropertyBindingImpl extends AbstractEdmItem implements NavigationPropertyBinding {
+
+  private static final long serialVersionUID = -6026065326479176817L;
+
+  @JsonProperty(value = "Path", required = true)
+  private String path;
+
+  @JsonProperty(value = "Target", required = true)
+  private String target;
+
+  @Override
+  public String getPath() {
+    return path;
+  }
+
+  @Override
+  public void setPath(final String path) {
+    this.path = path;
+  }
+
+  @Override
+  public String getTarget() {
+    return target;
+  }
+
+  @Override
+  public void setTarget(final String target) {
+    this.target = target;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyDeserializer.java
new file mode 100644
index 0000000..89c942b
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyDeserializer.java
@@ -0,0 +1,67 @@
+/*
+ * 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.xml.v4;
+
+import org.apache.olingo.odata4.client.core.edm.xml.OnDeleteImpl;
+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.op.impl.AbstractEdmDeserializer;
+
+public class NavigationPropertyDeserializer extends AbstractEdmDeserializer<NavigationPropertyImpl> {
+
+  @Override
+  protected NavigationPropertyImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final NavigationPropertyImpl property = new NavigationPropertyImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Name".equals(jp.getCurrentName())) {
+          property.setName(jp.nextTextValue());
+        } else if ("Type".equals(jp.getCurrentName())) {
+          property.setType(jp.nextTextValue());
+        } else if ("Nullable".equals(jp.getCurrentName())) {
+          property.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("Partner".equals(jp.getCurrentName())) {
+          property.setPartner(jp.nextTextValue());
+        } else if ("ContainsTarget".equals(jp.getCurrentName())) {
+          property.setContainsTarget(BooleanUtils.toBoolean(jp.nextTextValue()));
+        } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          property.getReferentialConstraints().add(jp.readValueAs(ReferentialConstraintImpl.class));
+        } else if ("OnDelete".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          property.setOnDelete(jp.readValueAs(OnDeleteImpl.class));
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          property.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+        }
+      }
+    }
+
+    return property;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
new file mode 100644
index 0000000..d600d82
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/NavigationPropertyImpl.java
@@ -0,0 +1,114 @@
+/*
+ * 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.xml.v4;
+
+import org.apache.olingo.odata4.client.core.edm.xml.OnDeleteImpl;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.NavigationProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractNavigationProperty;
+
+@JsonDeserialize(using = NavigationPropertyDeserializer.class)
+public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty {
+
+  private static final long serialVersionUID = -2889417442815563307L;
+
+  private String type;
+
+  private boolean nullable = true;
+
+  private String partner;
+
+  private boolean containsTarget = false;
+
+  private final List<ReferentialConstraintImpl> referentialConstraints = new ArrayList<ReferentialConstraintImpl>();
+
+  private OnDeleteImpl onDelete;
+
+  private AnnotationImpl annotation;
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public boolean isNullable() {
+    return nullable;
+  }
+
+  @Override
+  public void setNullable(final boolean nullable) {
+    this.nullable = nullable;
+  }
+
+  @Override
+  public String getPartner() {
+    return partner;
+  }
+
+  @Override
+  public void setPartner(final String partner) {
+    this.partner = partner;
+  }
+
+  @Override
+  public boolean isContainsTarget() {
+    return containsTarget;
+  }
+
+  @Override
+  public void setContainsTarget(final boolean containsTarget) {
+    this.containsTarget = containsTarget;
+  }
+
+  @Override
+  public List<ReferentialConstraintImpl> getReferentialConstraints() {
+    return referentialConstraints;
+  }
+
+  @Override
+  public OnDeleteImpl getOnDelete() {
+    return onDelete;
+  }
+
+  @Override
+  public void setOnDelete(final OnDelete onDelete) {
+    this.onDelete = (OnDeleteImpl) onDelete;
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
new file mode 100644
index 0000000..cf54d9e
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ParameterImpl.java
@@ -0,0 +1,42 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Parameter;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractParameter;
+
+public class ParameterImpl extends AbstractParameter implements Parameter {
+
+  private static final long serialVersionUID = -1067642515116697747L;
+
+  @JsonProperty(value = "SRID")
+  private String srid;
+
+  @Override
+  public String getSrid() {
+    return srid;
+  }
+
+  @Override
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
new file mode 100644
index 0000000..ae2e4d1
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/PropertyImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Property;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractProperty;
+
+public class PropertyImpl extends AbstractProperty implements Property {
+
+  private static final long serialVersionUID = -5541908235094985412L;
+
+  @JsonProperty("Annotation")
+  private AnnotationImpl annotation;
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @JsonIgnore
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceDeserializer.java
new file mode 100644
index 0000000..60c225a
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceDeserializer.java
@@ -0,0 +1,58 @@
+/*
+ * 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.xml.v4;
+
+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 java.net.URI;
+import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
+
+public class ReferenceDeserializer extends AbstractEdmDeserializer<ReferenceImpl> {
+
+  @Override
+  protected ReferenceImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
+          throws IOException, JsonProcessingException {
+
+    final ReferenceImpl reference = new ReferenceImpl();
+
+    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+      final JsonToken token = jp.getCurrentToken();
+      if (token == JsonToken.FIELD_NAME) {
+        if ("Uri".equals(jp.getCurrentName())) {
+          reference.setUri(URI.create(jp.nextTextValue()));
+        } else if ("Include".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          reference.getIncludes().add(jp.readValueAs( IncludeImpl.class));
+        } else if ("IncludeAnnotations".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          reference.getIncludeAnnotations().add(jp.readValueAs( IncludeAnnotationsImpl.class));
+        } else if ("Annotation".equals(jp.getCurrentName())) {
+          jp.nextToken();
+          reference.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
+        }
+      }
+    }
+
+    return reference;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
new file mode 100644
index 0000000..e187256
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferenceImpl.java
@@ -0,0 +1,67 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Reference;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+@JsonDeserialize(using = ReferenceDeserializer.class)
+public class ReferenceImpl extends AbstractEdmItem implements Reference {
+
+  private static final long serialVersionUID = -5600031479702563436L;
+
+  private URI uri;
+
+  private final List<IncludeImpl> includes = new ArrayList<IncludeImpl>();
+
+  private final List<IncludeAnnotationsImpl> includeAnnotations = new ArrayList<IncludeAnnotationsImpl>();
+
+  private final List<Annotation> annotations = new ArrayList<Annotation>();
+
+  @Override
+  public URI getUri() {
+    return uri;
+  }
+
+  @Override
+  public void setUri(final URI uri) {
+    this.uri = uri;
+  }
+
+  @Override
+  public List<IncludeImpl> getIncludes() {
+    return includes;
+  }
+
+  @Override
+  public List<IncludeAnnotationsImpl> getIncludeAnnotations() {
+    return includeAnnotations;
+  }
+
+  @Override
+  public List<Annotation> getAnnotations() {
+    return annotations;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
new file mode 100644
index 0000000..56dd68f
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReferentialConstraintImpl.java
@@ -0,0 +1,54 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ReferentialConstraint;
+
+public class ReferentialConstraintImpl extends AbstractAnnotatedEdmItem implements ReferentialConstraint {
+
+  private static final long serialVersionUID = -9182114558289778632L;
+
+  @JsonProperty(value = "Property", required = true)
+  private String property;
+
+  @JsonProperty(value = "ReferencedProperty", required = true)
+  private String referencedProperty;
+
+  @Override
+  public String getProperty() {
+    return property;
+  }
+
+  @Override
+  public void setProperty(final String property) {
+    this.property = property;
+  }
+
+  @Override
+  public String getReferencedProperty() {
+    return referencedProperty;
+  }
+
+  @Override
+  public void setReferencedProperty(final String referencedProperty) {
+    this.referencedProperty = referencedProperty;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
new file mode 100644
index 0000000..6fcf691
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/ReturnTypeImpl.java
@@ -0,0 +1,108 @@
+/*
+ * 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.xml.v4;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.math.BigInteger;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.ReturnType;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractEdmItem;
+
+public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
+
+  private static final long serialVersionUID = -5888231162358116515L;
+
+  @JsonProperty(value = "Type")
+  private String type;
+
+  @JsonProperty(value = "Nullable")
+  private boolean nullable = true;
+
+  @JsonProperty(value = "MaxLength")
+  private String maxLength;
+
+  @JsonProperty(value = "Precision")
+  private BigInteger precision;
+
+  @JsonProperty(value = "Scale")
+  private BigInteger scale;
+
+  @JsonProperty(value = "SRID")
+  private String srid;
+
+  @Override
+  public String getType() {
+    return type;
+  }
+
+  @Override
+  public void setType(final String type) {
+    this.type = type;
+  }
+
+  @Override
+  public boolean isNullable() {
+    return nullable;
+  }
+
+  @Override
+  public void setNullable(final boolean nullable) {
+    this.nullable = nullable;
+  }
+
+  @Override
+  public String getMaxLength() {
+    return maxLength;
+  }
+
+  @Override
+  public void setMaxLength(final String maxLength) {
+    this.maxLength = maxLength;
+  }
+
+  @Override
+  public BigInteger getPrecision() {
+    return precision;
+  }
+
+  @Override
+  public void setPrecision(final BigInteger precision) {
+    this.precision = precision;
+  }
+
+  @Override
+  public BigInteger getScale() {
+    return scale;
+  }
+
+  @Override
+  public void setScale(final BigInteger scale) {
+    this.scale = scale;
+  }
+
+  @Override
+  public String getSrid() {
+    return srid;
+  }
+
+  @Override
+  public void setSrid(final String srid) {
+    this.srid = srid;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
new file mode 100644
index 0000000..d37e9fb
--- /dev/null
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/xml/v4/SchemaImpl.java
@@ -0,0 +1,165 @@
+/*
+ * 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.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.AnnotatedEdmItem;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Schema;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.odata4.client.core.edm.xml.AbstractSchema;
+
+public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmItem {
+
+  private static final long serialVersionUID = 4453992249818796144L;
+
+  private final List<ActionImpl> actions = new ArrayList<ActionImpl>();
+
+  private final List<AnnotationsImpl> annotationsList = new ArrayList<AnnotationsImpl>();
+
+  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
+
+  private final List<ComplexTypeImpl> complexTypes = new ArrayList<ComplexTypeImpl>();
+
+  private EntityContainerImpl entityContainer;
+
+  private final List<EnumTypeImpl> enumTypes = new ArrayList<EnumTypeImpl>();
+
+  private final List<EntityTypeImpl> entityTypes = new ArrayList<EntityTypeImpl>();
+
+  private final List<FunctionImpl> functions = new ArrayList<FunctionImpl>();
+
+  private final List<TermImpl> terms = new ArrayList<TermImpl>();
+
+  private final List<TypeDefinitionImpl> typeDefinitions = new ArrayList<TypeDefinitionImpl>();
+
+  private AnnotationImpl annotation;
+
+  public List<ActionImpl> getActions() {
+    return actions;
+  }
+
+  public List<ActionImpl> getActions(final String name) {
+    return getAllByName(name, getActions());
+  }
+
+  @Override
+  public List<AnnotationsImpl> getAnnotationsList() {
+    return annotationsList;
+  }
+
+  @Override
+  public AnnotationsImpl getAnnotationsList(final String target) {
+    AnnotationsImpl result = null;
+    for (AnnotationsImpl annots : getAnnotationsList()) {
+      if (target.equals(annots.getTarget())) {
+        result = annots;
+      }
+    }
+    return result;
+  }
+
+  public List<AnnotationImpl> getAnnotations() {
+    return annotations;
+  }
+
+  public List<FunctionImpl> getFunctions() {
+    return functions;
+  }
+
+  public List<FunctionImpl> getFunctions(final String name) {
+    return getAllByName(name, getFunctions());
+  }
+
+  public List<TermImpl> getTerms() {
+    return terms;
+  }
+
+  public List<TypeDefinitionImpl> getTypeDefinitions() {
+    return typeDefinitions;
+  }
+
+  public EntityContainerImpl getEntityContainer() {
+    return entityContainer;
+  }
+
+  public void setEntityContainer(final EntityContainerImpl entityContainer) {
+    this.entityContainer = entityContainer;
+  }
+
+  @Override
+  public List<EntityContainerImpl> getEntityContainers() {
+    return entityContainer == null
+            ? Collections.<EntityContainerImpl>emptyList() : Collections.singletonList(entityContainer);
+  }
+
+  @Override
+  public EntityContainerImpl getDefaultEntityContainer() {
+    return entityContainer;
+  }
+
+  @Override
+  public EntityContainerImpl getEntityContainer(final String name) {
+    if (entityContainer != null && name.equals(entityContainer.getName())) {
+      return entityContainer;
+    }
+    throw new IllegalArgumentException("No EntityContainer found with name " + name);
+  }
+
+  @Override
+  public AnnotationImpl getAnnotation() {
+    return annotation;
+  }
+
+  @Override
+  public void setAnnotation(final Annotation annotation) {
+    this.annotation = (AnnotationImpl) annotation;
+  }
+
+  @Override
+  public EnumTypeImpl getEnumType(final String name) {
+    return (EnumTypeImpl) super.getEnumType(name);
+  }
+
+  @Override
+  public List<EnumTypeImpl> getEnumTypes() {
+    return enumTypes;
+  }
+
+  @Override
+  public ComplexTypeImpl getComplexType(final String name) {
+    return (ComplexTypeImpl) super.getComplexType(name);
+  }
+
+  @Override
+  public List<ComplexTypeImpl> getComplexTypes() {
+    return complexTypes;
+  }
+
+  @Override
+  public EntityTypeImpl getEntityType(final String name) {
+    return (EntityTypeImpl) super.getEntityType(name);
+  }
+
+  @Override
+  public List<EntityTypeImpl> getEntityTypes() {
+    return entityTypes;
+  }
+}


[05/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/DataServicesImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/DataServicesImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/DataServicesImpl.java
deleted file mode 100644
index c64ac8c..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/DataServicesImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.core.edm.AbstractDataServices;
-
-public class DataServicesImpl extends AbstractDataServices {
-
-  private static final long serialVersionUID = -7954360771258897632L;
-
-  private final List<SchemaImpl> schemas = new ArrayList<SchemaImpl>();
-
-  @Override
-  public List<SchemaImpl> getSchemas() {
-    return schemas;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
index b6bf27c..e572985 100644
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
+++ b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmMetadataImpl.java
@@ -22,6 +22,9 @@ import java.io.InputStream;
 import java.util.List;
 import org.apache.olingo.odata4.client.api.ODataClient;
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmMetadata;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EdmxImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ReferenceImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.SchemaImpl;
 
 public class EdmMetadataImpl extends AbstractEdmMetadata {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
index 6e66c7e..e71efef 100644
--- 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
@@ -19,6 +19,9 @@
 package org.apache.olingo.odata4.client.core.edm.v4;
 
 import org.apache.olingo.odata4.client.core.edm.AbstractEdmType;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.ComplexTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EntityTypeImpl;
+import org.apache.olingo.odata4.client.core.edm.xml.v4.EnumTypeImpl;
 
 public class EdmTypeImpl extends AbstractEdmType {
 

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
deleted file mode 100644
index 7af6bb8..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EdmxImpl.java
+++ /dev/null
@@ -1,42 +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.edm.v4;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Edmx;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmx;
-
-public class EdmxImpl extends AbstractEdmx implements Edmx {
-
-  private static final long serialVersionUID = -8031883176876401375L;
-
-  private final List<ReferenceImpl> references = new ArrayList<ReferenceImpl>();
-
-  @Override
-  public DataServicesImpl getDataServices() {
-    return (DataServicesImpl) super.getDataServices();
-  }
-
-  @Override
-  public List<ReferenceImpl> getReferences() {
-    return references;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
deleted file mode 100644
index d54b81f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityContainerImpl.java
+++ /dev/null
@@ -1,123 +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.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
-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.EntityContainer;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntityContainer;
-
-public class EntityContainerImpl extends AbstractEntityContainer implements AnnotatedEdmItem, EntityContainer {
-
-  private static final long serialVersionUID = 2526002525927260320L;
-
-  private final List<EntitySetImpl> entitySets = new ArrayList<EntitySetImpl>();
-
-  private final List<SingletonImpl> singletons = new ArrayList<SingletonImpl>();
-
-  private final List<ActionImportImpl> actionImports = new ArrayList<ActionImportImpl>();
-
-  private final List<FunctionImportImpl> functionImports = new ArrayList<FunctionImportImpl>();
-
-  private AnnotationImpl annotation;
-
-  @Override
-  public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
-    // no action: a single entity container MUST be available as per OData 4.0
-  }
-
-  @Override
-  public boolean isDefaultEntityContainer() {
-    return true;
-  }
-
-  @Override
-  public EntitySetImpl getEntitySet(final String name) {
-    return (EntitySetImpl) super.getEntitySet(name);
-  }
-
-  @Override
-  public List<EntitySetImpl> getEntitySets() {
-    return entitySets;
-  }
-
-  public List<SingletonImpl> getSingletons() {
-    return singletons;
-  }
-
-  public SingletonImpl getSingleton(final String name) {
-    return getOneByName(name, getSingletons());
-  }
-
-  @Override
-  public FunctionImportImpl getFunctionImport(final String name) {
-    return (FunctionImportImpl) super.getFunctionImport(name);
-  }
-
-  @Override
-  @SuppressWarnings("unchecked")
-  public List<FunctionImportImpl> getFunctionImports(final String name) {
-    return (List<FunctionImportImpl>) super.getFunctionImports(name);
-  }
-
-  /**
-   * Gets the first action import with given name.
-   *
-   * @param name name.
-   * @return action import.
-   */
-  @Override
-  public ActionImportImpl getActionImport(final String name) {
-    return getOneByName(name, getActionImports());
-  }
-
-  /**
-   * Gets all action imports with given name.
-   *
-   * @param name name.
-   * @return action imports.
-   */
-  @Override
-  public List<ActionImportImpl> getActionImports(final String name) {
-    return getAllByName(name, getActionImports());
-  }
-
-  @Override
-  public List<ActionImportImpl> getActionImports() {
-    return actionImports;
-  }
-
-  @Override
-  public List<FunctionImportImpl> getFunctionImports() {
-    return functionImports;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
deleted file mode 100644
index aa1d0f4..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntitySetImpl.java
+++ /dev/null
@@ -1,63 +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.edm.v4;
-
-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.EntitySet;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntitySet;
-
-public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
-
-  private static final long serialVersionUID = 5570833733884884012L;
-
-  private boolean includeInServiceDocument = true;
-
-  private AnnotationImpl annotation;
-
-  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
-          = new ArrayList<NavigationPropertyBindingImpl>();
-
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return includeInServiceDocument;
-  }
-
-  @Override
-  public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
-    this.includeInServiceDocument = includeInServiceDocument;
-  }
-
-  @Override
-  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
-    return navigationPropertyBindings;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
deleted file mode 100644
index 6ed2680..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EntityTypeImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-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.EntityType;
-import org.apache.olingo.odata4.client.core.edm.AbstractEntityType;
-
-public class EntityTypeImpl extends AbstractEntityType implements EntityType {
-
-  private static final long serialVersionUID = 8727765036150269547L;
-
-  private final List<PropertyImpl> properties = new ArrayList<PropertyImpl>();
-
-  private final List<NavigationPropertyImpl> navigationProperties = new ArrayList<NavigationPropertyImpl>();
-
-  private AnnotationImpl annotation;
-
-  @Override
-  public PropertyImpl getProperty(final String name) {
-    return (PropertyImpl) super.getProperty(name);
-  }
-
-  @Override
-  public List<PropertyImpl> getProperties() {
-    return properties;
-  }
-
-  @Override
-  public NavigationPropertyImpl getNavigationProperty(final String name) {
-    return (NavigationPropertyImpl) super.getNavigationProperty(name);
-  }
-
-  @Override
-  public List<NavigationPropertyImpl> getNavigationProperties() {
-    return navigationProperties;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
deleted file mode 100644
index 766d4fd..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/EnumTypeImpl.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractEnumType;
-
-public class EnumTypeImpl extends AbstractEnumType implements AnnotatedEdmItem {
-
-  private static final long serialVersionUID = -3329664331877556957L;
-
-  private AnnotationImpl annotation;
-
-  private final List<MemberImpl> members = new ArrayList<MemberImpl>();
-
-  @Override
-  public List<MemberImpl> getMembers() {
-    return members;
-  }
-
-  @Override
-  public MemberImpl getMember(final String name) {
-    return (MemberImpl) super.getMember(name);
-  }
-
-  @Override
-  public MemberImpl getMember(final Integer value) {
-    return (MemberImpl) super.getMember(value);
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 5de1c93..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionDeserializer.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class FunctionDeserializer extends AbstractEdmDeserializer<FunctionImpl> {
-
-  @Override
-  protected FunctionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final FunctionImpl functionImpl = new FunctionImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          functionImpl.setName(jp.nextTextValue());
-        } else if ("IsBound".equals(jp.getCurrentName())) {
-          functionImpl.setBound(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("IsComposable".equals(jp.getCurrentName())) {
-          functionImpl.setComposable(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("EntitySetPath".equals(jp.getCurrentName())) {
-          functionImpl.setEntitySetPath(jp.nextTextValue());
-        } else if ("Parameter".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          functionImpl.getParameters().add(jp.readValueAs(ParameterImpl.class));
-        } else if ("ReturnType".equals(jp.getCurrentName())) {
-          functionImpl.setReturnType(parseReturnType(jp, "Function"));
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          functionImpl.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        }
-      }
-    }
-
-    return functionImpl;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
deleted file mode 100644
index b9894e8..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImpl.java
+++ /dev/null
@@ -1,41 +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.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.olingo.odata4.client.api.edm.v4.Function;
-
-@JsonDeserialize(using = FunctionDeserializer.class)
-public class FunctionImpl extends ActionImpl implements Function {
-
-  private static final long serialVersionUID = -5888231162358116515L;
-
-  private boolean composable = false;
-
-  @Override
-  public boolean isComposable() {
-    return composable;
-  }
-
-  @Override
-  public void setComposable(final boolean composable) {
-    this.composable = composable;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
deleted file mode 100644
index b578599..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/FunctionImportImpl.java
+++ /dev/null
@@ -1,96 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.api.edm.v4.FunctionImport;
-
-public class FunctionImportImpl implements FunctionImport {
-
-  private static final long serialVersionUID = 3023813358471000019L;
-
-  @JsonProperty(value = "Name", required = true)
-  private String name;
-
-  @JsonProperty(value = "Function", required = true)
-  private String function;
-
-  @JsonProperty(value = "EntitySet")
-  private String entitySet;
-
-  @JsonProperty(value = "IncludeInServiceDocument")
-  private boolean includeInServiceDocument = false;
-
-  @JsonProperty(value = "Annotation")
-  private AnnotationImpl annotation;
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getFunction() {
-    return function;
-  }
-
-  @Override
-  public void setFunction(final String function) {
-    this.function = function;
-  }
-
-  @Override
-  public String getEntitySet() {
-    return entitySet;
-  }
-
-  @Override
-  public void setEntitySet(final String entitySet) {
-    this.entitySet = entitySet;
-  }
-
-  @Override
-  public boolean isIncludeInServiceDocument() {
-    return includeInServiceDocument;
-  }
-
-  @Override
-  public void setIncludeInServiceDocument(final boolean includeInServiceDocument) {
-    this.includeInServiceDocument = includeInServiceDocument;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @JsonIgnore
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.java
deleted file mode 100644
index 7566733..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeAnnotationsImpl.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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.IncludeAnnotations;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class IncludeAnnotationsImpl extends AbstractEdmItem implements IncludeAnnotations {
-
-  private static final long serialVersionUID = -5600031479702563436L;
-
-  @JsonProperty(value = "TermNamespace", required = true)
-  private String termNamespace;
-
-  @JsonProperty(value = "Qualifier")
-  private String qualifier;
-
-  @JsonProperty(value = "TargetNamespace")
-  private String targeyNamespace;
-
-  @Override
-  public String getTermNamespace() {
-    return termNamespace;
-  }
-
-  @Override
-  public void setTermNamespace(final String termNamespace) {
-    this.termNamespace = termNamespace;
-  }
-
-  @Override
-  public String getQualifier() {
-    return qualifier;
-  }
-
-  @Override
-  public void setQualifier(final String qualifier) {
-    this.qualifier = qualifier;
-  }
-
-  @Override
-  public String getTargeyNamespace() {
-    return targeyNamespace;
-  }
-
-  @Override
-  public void setTargeyNamespace(final String targeyNamespace) {
-    this.targeyNamespace = targeyNamespace;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
deleted file mode 100644
index cdbe8ae..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/IncludeImpl.java
+++ /dev/null
@@ -1,55 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.Include;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class IncludeImpl extends AbstractEdmItem implements Include {
-
-  private static final long serialVersionUID = -5600031479702563436L;
-
-  @JsonProperty(value = "Namespace", required = true)
-  private String namespace;
-
-  @JsonProperty(value = "Alias")
-  private String alias;
-
-  @Override
-  public String getNamespace() {
-    return namespace;
-  }
-
-  @Override
-  public void setNamespace(final String namespace) {
-    this.namespace = namespace;
-  }
-
-  @Override
-  public String getAlias() {
-    return alias;
-  }
-
-  @Override
-  public void setAlias(final String alias) {
-    this.alias = alias;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
deleted file mode 100644
index ba6ac6b..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/MemberImpl.java
+++ /dev/null
@@ -1,45 +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.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractMember;
-
-public class MemberImpl extends AbstractMember implements AnnotatedEdmItem {
-
-  private static final long serialVersionUID = -344920557183058824L;
-
-  @JsonProperty("Annotation")
-  private AnnotationImpl annotation;
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @JsonIgnore
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
deleted file mode 100644
index 8554bec..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyBindingImpl.java
+++ /dev/null
@@ -1,55 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.NavigationPropertyBinding;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class NavigationPropertyBindingImpl extends AbstractEdmItem implements NavigationPropertyBinding {
-
-  private static final long serialVersionUID = -6026065326479176817L;
-
-  @JsonProperty(value = "Path", required = true)
-  private String path;
-
-  @JsonProperty(value = "Target", required = true)
-  private String target;
-
-  @Override
-  public String getPath() {
-    return path;
-  }
-
-  @Override
-  public void setPath(final String path) {
-    this.path = path;
-  }
-
-  @Override
-  public String getTarget() {
-    return target;
-  }
-
-  @Override
-  public void setTarget(final String target) {
-    this.target = target;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index 1c19b21..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyDeserializer.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-import org.apache.olingo.odata4.client.core.edm.OnDeleteImpl;
-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.op.impl.AbstractEdmDeserializer;
-
-public class NavigationPropertyDeserializer extends AbstractEdmDeserializer<NavigationPropertyImpl> {
-
-  @Override
-  protected NavigationPropertyImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final NavigationPropertyImpl property = new NavigationPropertyImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          property.setName(jp.nextTextValue());
-        } else if ("Type".equals(jp.getCurrentName())) {
-          property.setType(jp.nextTextValue());
-        } else if ("Nullable".equals(jp.getCurrentName())) {
-          property.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("Partner".equals(jp.getCurrentName())) {
-          property.setPartner(jp.nextTextValue());
-        } else if ("ContainsTarget".equals(jp.getCurrentName())) {
-          property.setContainsTarget(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("ReferentialConstraint".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          property.getReferentialConstraints().add(jp.readValueAs(ReferentialConstraintImpl.class));
-        } else if ("OnDelete".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          property.setOnDelete(jp.readValueAs(OnDeleteImpl.class));
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          property.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        }
-      }
-    }
-
-    return property;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/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
deleted file mode 100644
index a0a74a3..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/NavigationPropertyImpl.java
+++ /dev/null
@@ -1,114 +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.edm.v4;
-
-import org.apache.olingo.odata4.client.core.edm.OnDeleteImpl;
-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.NavigationProperty;
-import org.apache.olingo.odata4.client.api.edm.OnDelete;
-import org.apache.olingo.odata4.client.core.edm.AbstractNavigationProperty;
-
-@JsonDeserialize(using = NavigationPropertyDeserializer.class)
-public class NavigationPropertyImpl extends AbstractNavigationProperty implements NavigationProperty {
-
-  private static final long serialVersionUID = -2889417442815563307L;
-
-  private String type;
-
-  private boolean nullable = true;
-
-  private String partner;
-
-  private boolean containsTarget = false;
-
-  private final List<ReferentialConstraintImpl> referentialConstraints = new ArrayList<ReferentialConstraintImpl>();
-
-  private OnDeleteImpl onDelete;
-
-  private AnnotationImpl annotation;
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  @Override
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getPartner() {
-    return partner;
-  }
-
-  @Override
-  public void setPartner(final String partner) {
-    this.partner = partner;
-  }
-
-  @Override
-  public boolean isContainsTarget() {
-    return containsTarget;
-  }
-
-  @Override
-  public void setContainsTarget(final boolean containsTarget) {
-    this.containsTarget = containsTarget;
-  }
-
-  @Override
-  public List<ReferentialConstraintImpl> getReferentialConstraints() {
-    return referentialConstraints;
-  }
-
-  @Override
-  public OnDeleteImpl getOnDelete() {
-    return onDelete;
-  }
-
-  @Override
-  public void setOnDelete(final OnDelete onDelete) {
-    this.onDelete = (OnDeleteImpl) onDelete;
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
deleted file mode 100644
index 26bb775..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ParameterImpl.java
+++ /dev/null
@@ -1,42 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.Parameter;
-import org.apache.olingo.odata4.client.core.edm.AbstractParameter;
-
-public class ParameterImpl extends AbstractParameter implements Parameter {
-
-  private static final long serialVersionUID = -1067642515116697747L;
-
-  @JsonProperty(value = "SRID")
-  private String srid;
-
-  @Override
-  public String getSrid() {
-    return srid;
-  }
-
-  @Override
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
deleted file mode 100644
index 2048d0e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/PropertyImpl.java
+++ /dev/null
@@ -1,44 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.api.edm.v4.Property;
-import org.apache.olingo.odata4.client.core.edm.AbstractProperty;
-
-public class PropertyImpl extends AbstractProperty implements Property {
-
-  private static final long serialVersionUID = -5541908235094985412L;
-
-  @JsonProperty("Annotation")
-  private AnnotationImpl annotation;
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @JsonIgnore
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceDeserializer.java
deleted file mode 100644
index 5cceb75..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceDeserializer.java
+++ /dev/null
@@ -1,58 +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.edm.v4;
-
-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 java.net.URI;
-import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-
-public class ReferenceDeserializer extends AbstractEdmDeserializer<ReferenceImpl> {
-
-  @Override
-  protected ReferenceImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final ReferenceImpl reference = new ReferenceImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Uri".equals(jp.getCurrentName())) {
-          reference.setUri(URI.create(jp.nextTextValue()));
-        } else if ("Include".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          reference.getIncludes().add(jp.readValueAs( IncludeImpl.class));
-        } else if ("IncludeAnnotations".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          reference.getIncludeAnnotations().add(jp.readValueAs( IncludeAnnotationsImpl.class));
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          reference.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
-        }
-      }
-    }
-
-    return reference;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
deleted file mode 100644
index 6142ab5..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferenceImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.net.URI;
-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.Reference;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-@JsonDeserialize(using = ReferenceDeserializer.class)
-public class ReferenceImpl extends AbstractEdmItem implements Reference {
-
-  private static final long serialVersionUID = -5600031479702563436L;
-
-  private URI uri;
-
-  private final List<IncludeImpl> includes = new ArrayList<IncludeImpl>();
-
-  private final List<IncludeAnnotationsImpl> includeAnnotations = new ArrayList<IncludeAnnotationsImpl>();
-
-  private final List<Annotation> annotations = new ArrayList<Annotation>();
-
-  @Override
-  public URI getUri() {
-    return uri;
-  }
-
-  @Override
-  public void setUri(final URI uri) {
-    this.uri = uri;
-  }
-
-  @Override
-  public List<IncludeImpl> getIncludes() {
-    return includes;
-  }
-
-  @Override
-  public List<IncludeAnnotationsImpl> getIncludeAnnotations() {
-    return includeAnnotations;
-  }
-
-  @Override
-  public List<Annotation> getAnnotations() {
-    return annotations;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
deleted file mode 100644
index 0bca9c8..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReferentialConstraintImpl.java
+++ /dev/null
@@ -1,54 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.olingo.odata4.client.api.edm.v4.ReferentialConstraint;
-
-public class ReferentialConstraintImpl extends AbstractAnnotatedEdmItem implements ReferentialConstraint {
-
-  private static final long serialVersionUID = -9182114558289778632L;
-
-  @JsonProperty(value = "Property", required = true)
-  private String property;
-
-  @JsonProperty(value = "ReferencedProperty", required = true)
-  private String referencedProperty;
-
-  @Override
-  public String getProperty() {
-    return property;
-  }
-
-  @Override
-  public void setProperty(final String property) {
-    this.property = property;
-  }
-
-  @Override
-  public String getReferencedProperty() {
-    return referencedProperty;
-  }
-
-  @Override
-  public void setReferencedProperty(final String referencedProperty) {
-    this.referencedProperty = referencedProperty;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
deleted file mode 100644
index 877bdb0..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/ReturnTypeImpl.java
+++ /dev/null
@@ -1,108 +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.edm.v4;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigInteger;
-import org.apache.olingo.odata4.client.api.edm.v4.ReturnType;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class ReturnTypeImpl extends AbstractEdmItem implements ReturnType {
-
-  private static final long serialVersionUID = -5888231162358116515L;
-
-  @JsonProperty(value = "Type")
-  private String type;
-
-  @JsonProperty(value = "Nullable")
-  private boolean nullable = true;
-
-  @JsonProperty(value = "MaxLength")
-  private String maxLength;
-
-  @JsonProperty(value = "Precision")
-  private BigInteger precision;
-
-  @JsonProperty(value = "Scale")
-  private BigInteger scale;
-
-  @JsonProperty(value = "SRID")
-  private String srid;
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  @Override
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  @Override
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  @Override
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  @Override
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public String getSrid() {
-    return srid;
-  }
-
-  @Override
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.java
deleted file mode 100644
index 1f7f0a2..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SchemaImpl.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.client.core.edm.v4;
-
-import org.apache.olingo.odata4.client.api.edm.v4.AnnotatedEdmItem;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.Schema;
-import org.apache.olingo.odata4.client.api.edm.v4.Annotation;
-import org.apache.olingo.odata4.client.core.edm.AbstractSchema;
-
-public class SchemaImpl extends AbstractSchema implements Schema, AnnotatedEdmItem {
-
-  private static final long serialVersionUID = 4453992249818796144L;
-
-  private final List<ActionImpl> actions = new ArrayList<ActionImpl>();
-
-  private final List<AnnotationsImpl> annotationsList = new ArrayList<AnnotationsImpl>();
-
-  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
-
-  private final List<ComplexTypeImpl> complexTypes = new ArrayList<ComplexTypeImpl>();
-
-  private EntityContainerImpl entityContainer;
-
-  private final List<EnumTypeImpl> enumTypes = new ArrayList<EnumTypeImpl>();
-
-  private final List<EntityTypeImpl> entityTypes = new ArrayList<EntityTypeImpl>();
-
-  private final List<FunctionImpl> functions = new ArrayList<FunctionImpl>();
-
-  private final List<TermImpl> terms = new ArrayList<TermImpl>();
-
-  private final List<TypeDefinitionImpl> typeDefinitions = new ArrayList<TypeDefinitionImpl>();
-
-  private AnnotationImpl annotation;
-
-  public List<ActionImpl> getActions() {
-    return actions;
-  }
-
-  public List<ActionImpl> getActions(final String name) {
-    return getAllByName(name, getActions());
-  }
-
-  @Override
-  public List<AnnotationsImpl> getAnnotationsList() {
-    return annotationsList;
-  }
-
-  @Override
-  public AnnotationsImpl getAnnotationsList(final String target) {
-    AnnotationsImpl result = null;
-    for (AnnotationsImpl annots : getAnnotationsList()) {
-      if (target.equals(annots.getTarget())) {
-        result = annots;
-      }
-    }
-    return result;
-  }
-
-  public List<AnnotationImpl> getAnnotations() {
-    return annotations;
-  }
-
-  public List<FunctionImpl> getFunctions() {
-    return functions;
-  }
-
-  public List<FunctionImpl> getFunctions(final String name) {
-    return getAllByName(name, getFunctions());
-  }
-
-  public List<TermImpl> getTerms() {
-    return terms;
-  }
-
-  public List<TypeDefinitionImpl> getTypeDefinitions() {
-    return typeDefinitions;
-  }
-
-  public EntityContainerImpl getEntityContainer() {
-    return entityContainer;
-  }
-
-  public void setEntityContainer(final EntityContainerImpl entityContainer) {
-    this.entityContainer = entityContainer;
-  }
-
-  @Override
-  public List<EntityContainerImpl> getEntityContainers() {
-    return entityContainer == null
-            ? Collections.<EntityContainerImpl>emptyList() : Collections.singletonList(entityContainer);
-  }
-
-  @Override
-  public EntityContainerImpl getDefaultEntityContainer() {
-    return entityContainer;
-  }
-
-  @Override
-  public EntityContainerImpl getEntityContainer(final String name) {
-    if (entityContainer != null && name.equals(entityContainer.getName())) {
-      return entityContainer;
-    }
-    throw new IllegalArgumentException("No EntityContainer found with name " + name);
-  }
-
-  @Override
-  public AnnotationImpl getAnnotation() {
-    return annotation;
-  }
-
-  @Override
-  public void setAnnotation(final Annotation annotation) {
-    this.annotation = (AnnotationImpl) annotation;
-  }
-
-  @Override
-  public EnumTypeImpl getEnumType(final String name) {
-    return (EnumTypeImpl) super.getEnumType(name);
-  }
-
-  @Override
-  public List<EnumTypeImpl> getEnumTypes() {
-    return enumTypes;
-  }
-
-  @Override
-  public ComplexTypeImpl getComplexType(final String name) {
-    return (ComplexTypeImpl) super.getComplexType(name);
-  }
-
-  @Override
-  public List<ComplexTypeImpl> getComplexTypes() {
-    return complexTypes;
-  }
-
-  @Override
-  public EntityTypeImpl getEntityType(final String name) {
-    return (EntityTypeImpl) super.getEntityType(name);
-  }
-
-  @Override
-  public List<EntityTypeImpl> getEntityTypes() {
-    return entityTypes;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonDeserializer.java
deleted file mode 100644
index 89fe59e..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonDeserializer.java
+++ /dev/null
@@ -1,57 +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.edm.v4;
-
-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.op.impl.AbstractEdmDeserializer;
-
-public class SingletonDeserializer extends AbstractEdmDeserializer<SingletonImpl> {
-
-  @Override
-  protected SingletonImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final SingletonImpl singleton = new SingletonImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          singleton.setName(jp.nextTextValue());
-        } else if ("Type".equals(jp.getCurrentName())) {
-          singleton.setType(jp.nextTextValue());
-        } else if ("NavigationPropertyBinding".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          singleton.getNavigationPropertyBindings().add(
-                  jp.readValueAs(NavigationPropertyBindingImpl.class));
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          singleton.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        }
-      }
-    }
-
-    return singleton;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
deleted file mode 100644
index a0ec41a..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/SingletonImpl.java
+++ /dev/null
@@ -1,63 +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.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.Singleton;
-
-@JsonDeserialize(using = SingletonDeserializer.class)
-public class SingletonImpl extends AbstractAnnotatedEdmItem implements Singleton {
-
-  private static final long serialVersionUID = 941802518279658559L;
-
-  private String name;
-
-  private String type;
-
-  private final List<NavigationPropertyBindingImpl> navigationPropertyBindings
-          = new ArrayList<NavigationPropertyBindingImpl>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public List<NavigationPropertyBindingImpl> getNavigationPropertyBindings() {
-    return navigationPropertyBindings;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermDeserializer.java
deleted file mode 100644
index c72c726..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermDeserializer.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.olingo.odata4.client.core.edm.v4;
-
-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 java.math.BigInteger;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.odata4.client.api.edm.v4.CSDLElement;
-import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-
-public class TermDeserializer extends AbstractEdmDeserializer<TermImpl> {
-
-  @Override
-  protected TermImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final TermImpl term = new TermImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          term.setName(jp.nextTextValue());
-        } else if ("Type".equals(jp.getCurrentName())) {
-          term.setType(jp.nextTextValue());
-        } else if ("BaseTerm".equals(jp.getCurrentName())) {
-          term.setBaseTerm(jp.nextTextValue());
-        } else if ("DefaultValue".equals(jp.getCurrentName())) {
-          term.setDefaultValue(jp.nextTextValue());
-        } else if ("Nullable".equals(jp.getCurrentName())) {
-          term.setNullable(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("MaxLength".equals(jp.getCurrentName())) {
-          term.setMaxLength(jp.nextTextValue());
-        } else if ("Precision".equals(jp.getCurrentName())) {
-          term.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("Scale".equals(jp.getCurrentName())) {
-          term.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("SRID".equals(jp.getCurrentName())) {
-          term.setSrid(jp.nextTextValue());
-        } else if ("AppliesTo".equals(jp.getCurrentName())) {
-          for (String split : StringUtils.split(jp.nextTextValue())) {
-            term.getAppliesTo().add(CSDLElement.valueOf(split));
-          }
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          term.setAnnotation(jp.readValueAs(AnnotationImpl.class));
-        }
-      }
-    }
-
-    return term;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
deleted file mode 100644
index 041e90f..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TermImpl.java
+++ /dev/null
@@ -1,148 +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.edm.v4;
-
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.CSDLElement;
-import org.apache.olingo.odata4.client.api.edm.v4.Term;
-
-@JsonDeserialize(using = TermDeserializer.class)
-public class TermImpl extends AbstractAnnotatedEdmItem implements Term {
-
-  private static final long serialVersionUID = -5888231162358116515L;
-
-  private String name;
-
-  private String type;
-
-  private String baseTerm;
-
-  private String defaultValue;
-
-  private boolean nullable = true;
-
-  private String maxLength;
-
-  private BigInteger precision;
-
-  private BigInteger scale;
-
-  private String srid;
-
-  private final List<CSDLElement> appliesTo = new ArrayList<CSDLElement>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getType() {
-    return type;
-  }
-
-  @Override
-  public void setType(final String type) {
-    this.type = type;
-  }
-
-  @Override
-  public String getBaseTerm() {
-    return baseTerm;
-  }
-
-  @Override
-  public void setBaseTerm(final String baseTerm) {
-    this.baseTerm = baseTerm;
-  }
-
-  @Override
-  public String getDefaultValue() {
-    return defaultValue;
-  }
-
-  @Override
-  public void setDefaultValue(final String defaultValue) {
-    this.defaultValue = defaultValue;
-  }
-
-  @Override
-  public boolean isNullable() {
-    return nullable;
-  }
-
-  @Override
-  public void setNullable(final boolean nullable) {
-    this.nullable = nullable;
-  }
-
-  @Override
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  @Override
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  @Override
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  @Override
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public String getSrid() {
-    return srid;
-  }
-
-  @Override
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-  @Override
-  public List<CSDLElement> getAppliesTo() {
-    return appliesTo;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionDeserializer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionDeserializer.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionDeserializer.java
deleted file mode 100644
index ff71d77..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionDeserializer.java
+++ /dev/null
@@ -1,65 +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.edm.v4;
-
-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 java.math.BigInteger;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.olingo.odata4.client.core.op.impl.AbstractEdmDeserializer;
-
-public class TypeDefinitionDeserializer extends AbstractEdmDeserializer<TypeDefinitionImpl> {
-
-  @Override
-  protected TypeDefinitionImpl doDeserialize(final JsonParser jp, final DeserializationContext ctxt)
-          throws IOException, JsonProcessingException {
-
-    final TypeDefinitionImpl typeDefinition = new TypeDefinitionImpl();
-
-    for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
-      final JsonToken token = jp.getCurrentToken();
-      if (token == JsonToken.FIELD_NAME) {
-        if ("Name".equals(jp.getCurrentName())) {
-          typeDefinition.setName(jp.nextTextValue());
-        } else if ("UnderlyingType".equals(jp.getCurrentName())) {
-          typeDefinition.setUnderlyingType(jp.nextTextValue());
-        } else if ("MaxLength".equals(jp.getCurrentName())) {
-          typeDefinition.setMaxLength(jp.nextTextValue());
-        } else if ("Unicode".equals(jp.getCurrentName())) {
-          typeDefinition.setUnicode(BooleanUtils.toBoolean(jp.nextTextValue()));
-        } else if ("Precision".equals(jp.getCurrentName())) {
-          typeDefinition.setPrecision(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("Scale".equals(jp.getCurrentName())) {
-          typeDefinition.setScale(BigInteger.valueOf(jp.nextLongValue(0L)));
-        } else if ("SRID".equals(jp.getCurrentName())) {
-          typeDefinition.setSrid(jp.nextTextValue());
-        } else if ("Annotation".equals(jp.getCurrentName())) {
-          jp.nextToken();
-          typeDefinition.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
-        }
-      }
-    }
-
-    return typeDefinition;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java b/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
deleted file mode 100644
index 1d6cba8..0000000
--- a/odata4-lib/odata4-client-core/src/main/java/org/apache/olingo/odata4/client/core/edm/v4/TypeDefinitionImpl.java
+++ /dev/null
@@ -1,122 +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.edm.v4;
-
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.olingo.odata4.client.api.edm.v4.TypeDefinition;
-import org.apache.olingo.odata4.client.core.edm.AbstractEdmItem;
-
-public class TypeDefinitionImpl extends AbstractEdmItem implements TypeDefinition {
-
-  private static final long serialVersionUID = -5888231162358116515L;
-
-  private String name;
-
-  private String underlyingType;
-
-  private String maxLength;
-
-  private BigInteger precision;
-
-  private BigInteger scale;
-
-  private boolean unicode = true;
-
-  private String srid;
-
-  private final List<AnnotationImpl> annotations = new ArrayList<AnnotationImpl>();
-
-  @Override
-  public String getName() {
-    return name;
-  }
-
-  @Override
-  public void setName(final String name) {
-    this.name = name;
-  }
-
-  @Override
-  public String getUnderlyingType() {
-    return underlyingType;
-  }
-
-  @Override
-  public void setUnderlyingType(final String underlyingType) {
-    this.underlyingType = underlyingType;
-  }
-
-  @Override
-  public String getMaxLength() {
-    return maxLength;
-  }
-
-  @Override
-  public void setMaxLength(final String maxLength) {
-    this.maxLength = maxLength;
-  }
-
-  @Override
-  public BigInteger getPrecision() {
-    return precision;
-  }
-
-  @Override
-  public void setPrecision(final BigInteger precision) {
-    this.precision = precision;
-  }
-
-  @Override
-  public BigInteger getScale() {
-    return scale;
-  }
-
-  @Override
-  public void setScale(final BigInteger scale) {
-    this.scale = scale;
-  }
-
-  @Override
-  public boolean isUnicode() {
-    return unicode;
-  }
-
-  @Override
-  public void setUnicode(final boolean unicode) {
-    this.unicode = unicode;
-  }
-
-  @Override
-  public String getSrid() {
-    return srid;
-  }
-
-  @Override
-  public void setSrid(final String srid) {
-    this.srid = srid;
-  }
-
-  @Override
-  public List<AnnotationImpl> getAnnotations() {
-    return annotations;
-  }
-
-}


[08/22] [OLINGO-169] Package renaming according to latest ML discussion

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
new file mode 100644
index 0000000..1856f8e
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/Schema.java
@@ -0,0 +1,79 @@
+/*
+ * 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.api.edm.xml;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v3.Annotations;
+import java.util.List;
+
+public interface Schema {
+
+  String getNamespace();
+
+  void setNamespace(String namespace);
+
+  String getAlias();
+
+  void setAlias(String alias);
+
+  List<? extends EntityType> getEntityTypes();
+
+  List<? extends EnumType> getEnumTypes();
+
+  EnumType getEnumType(String name);
+
+  List<? extends AbstractAnnotations> getAnnotationsList();
+
+  AbstractAnnotations getAnnotationsList(String target);
+
+  List<? extends ComplexType> getComplexTypes();
+
+  List<? extends EntityContainer> getEntityContainers();
+
+  /**
+   * Gets default entity container.
+   *
+   * @return default entity container.
+   */
+  EntityContainer getDefaultEntityContainer();
+
+  /**
+   * Gets entity container with the given name.
+   *
+   * @param name name.
+   * @return entity container.
+   */
+  EntityContainer getEntityContainer(String name);
+
+  /**
+   * Gets entity type with the given name.
+   *
+   * @param name name.
+   * @return entity type.
+   */
+  EntityType getEntityType(String name);
+
+  /**
+   * Gets complex type with the given name.
+   *
+   * @param name name.
+   * @return complex type.
+   */
+  ComplexType getComplexType(String name);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
new file mode 100644
index 0000000..07f2349
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Annotations.java
@@ -0,0 +1,29 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.AbstractAnnotations;
+
+public interface Annotations extends AbstractAnnotations {
+
+  List<? extends TypeAnnotation> getTypeAnnotations();
+
+  List<? extends ValueAnnotation> getValueAnnotations();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
new file mode 100644
index 0000000..06c9566
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Association.java
@@ -0,0 +1,32 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface Association extends Named {
+
+  ReferentialConstraint getReferentialConstraint();
+
+  void setReferentialConstraint(ReferentialConstraint referentialConstraint);
+
+  List<? extends AssociationEnd> getEnds();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
new file mode 100644
index 0000000..6320ac6
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationEnd.java
@@ -0,0 +1,40 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
+
+public interface AssociationEnd {
+
+  String getType();
+
+  void setType(String type);
+
+  String getRole();
+
+  void setRole(String role);
+
+  String getMultiplicity();
+
+  void setMultiplicity(String multiplicity);
+
+  OnDelete getOnDelete();
+
+  void setOnDelete(OnDelete onDelete);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
new file mode 100644
index 0000000..eb9ebb9
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSet.java
@@ -0,0 +1,31 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface AssociationSet extends Named {
+
+  String getAssociation();
+
+  void setAssociation(String association);
+
+  List<? extends AssociationSetEnd> getEnds();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
new file mode 100644
index 0000000..fa7a111
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/AssociationSetEnd.java
@@ -0,0 +1,30 @@
+/*
+ * 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.api.edm.xml.v3;
+
+public interface AssociationSetEnd {
+
+  String getRole();
+
+  void setRole(String role);
+
+  String getEntitySet();
+
+  void setEntitySet(String entitySet);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
new file mode 100644
index 0000000..99f39ee
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/FunctionImport.java
@@ -0,0 +1,60 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
+
+public interface FunctionImport extends org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport {
+
+  String getReturnType();
+
+  void setReturnType(String returnType);
+
+  String getEntitySet();
+
+  void setEntitySet(String entitySet);
+
+  String getEntitySetPath();
+
+  void setEntitySetPath(String entitySetPath);
+
+  boolean isComposable();
+
+  void setComposable(boolean composable);
+
+  boolean isSideEffecting();
+
+  void setSideEffecting(boolean sideEffecting);
+
+  boolean isBindable();
+
+  void setBindable(boolean bindable);
+
+  boolean isAlwaysBindable();
+
+  void setAlwaysBindable(boolean alwaysBindable);
+
+  String getHttpMethod();
+
+  void setHttpMethod(String httpMethod);
+
+  List<? extends CommonParameter> getParameters();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
new file mode 100644
index 0000000..921c600
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/NavigationProperty.java
@@ -0,0 +1,34 @@
+/*
+ * 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.api.edm.xml.v3;
+
+public interface NavigationProperty extends org.apache.olingo.odata4.client.api.edm.xml.CommonNavigationProperty {
+
+  String getRelationship();
+
+  void setRelationship(String relationship);
+
+  String getToRole();
+
+  void setToRole(String toRole);
+
+  String getFromRole();
+
+  void setFromRole(String fromRole);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
new file mode 100644
index 0000000..f624f7f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Parameter.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml.v3;
+
+public interface Parameter extends org.apache.olingo.odata4.client.api.edm.xml.CommonParameter {
+
+  ParameterMode getMode();
+
+  void setMode(ParameterMode mode);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ParameterMode.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ParameterMode.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ParameterMode.java
new file mode 100644
index 0000000..ab05fee
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ParameterMode.java
@@ -0,0 +1,27 @@
+/*
+ * 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.api.edm.xml.v3;
+
+public enum ParameterMode {
+
+  In,
+  Out,
+  InOut
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
new file mode 100644
index 0000000..0eb9fda
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Property.java
@@ -0,0 +1,50 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import org.apache.olingo.odata4.client.api.edm.xml.CommonProperty;
+import org.apache.olingo.odata4.commons.api.edm.constants.EdmContentKind;
+
+public interface Property extends CommonProperty {
+
+  String getFcSourcePath();
+
+  void setFcSourcePath(String fcSourcePath);
+
+  String getFcTargetPath();
+
+  void setFcTargetPath(String fcTargetPath);
+
+  EdmContentKind getFcContentKind();
+
+  void setFcContentKind(EdmContentKind fcContentKind);
+
+  String getFcNSPrefix();
+
+  void setFcNSPrefix(String fcNSPrefix);
+
+  String getFcNSURI();
+
+  void setFcNSURI(String fcNSURI);
+
+  boolean isFcKeepInContent();
+
+  void setFcKeepInContent(boolean fcKeepInContent);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
new file mode 100644
index 0000000..6da96a2
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/PropertyValue.java
@@ -0,0 +1,59 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+
+public interface PropertyValue {
+
+  String getProperty();
+
+  void setProperty(String property);
+
+  String getPath();
+
+  void setPath(String path);
+
+  String getString();
+
+  void setString(String string);
+
+  BigInteger getInt();
+
+  void setInt(BigInteger _int);
+
+  Double getFloat();
+
+  void setFloat(Double _float);
+
+  BigDecimal getDecimal();
+
+  void setDecimal(BigDecimal decimal);
+
+  Boolean getBool();
+
+  void setBool(Boolean bool);
+
+  Date getDateTime();
+
+  void setDateTime(Date dateTime);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
new file mode 100644
index 0000000..1e8e55a
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraint.java
@@ -0,0 +1,30 @@
+/*
+ * 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.api.edm.xml.v3;
+
+public interface ReferentialConstraint {
+
+  ReferentialConstraintRole getPrincipal();
+
+  void setPrincipal(ReferentialConstraintRole principal);
+
+  ReferentialConstraintRole getDependent();
+
+  void setDependent(ReferentialConstraintRole dependent);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
new file mode 100644
index 0000000..198bdb7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ReferentialConstraintRole.java
@@ -0,0 +1,32 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.PropertyRef;
+
+public interface ReferentialConstraintRole {
+
+  String getRole();
+
+  void setRole(final String role);
+
+  List<? extends PropertyRef> getPropertyRefs();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.java
new file mode 100644
index 0000000..ead3239
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/TypeAnnotation.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.api.edm.xml.v3;
+
+import java.util.List;
+
+public interface TypeAnnotation {
+
+  String getTerm();
+
+  void setTerm(String term);
+
+  String getQualifier();
+
+  void setQualifier(String qualifier);
+
+  List<? extends PropertyValue> getPropertyValues();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
new file mode 100644
index 0000000..541d32a
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/Using.java
@@ -0,0 +1,31 @@
+/*
+ * 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.api.edm.xml.v3;
+
+public interface Using {
+
+  String getNamespace();
+
+  void setNamespace(String namespace);
+
+  String getAlias();
+
+  void setAlias(String alias);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.java
new file mode 100644
index 0000000..799f982
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueAnnotation.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.client.api.edm.xml.v3;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+
+public interface ValueAnnotation {
+
+  Boolean getBool();
+
+  Date getDateTime();
+
+  BigDecimal getDecimal();
+
+  Double getFloat();
+
+  BigInteger getInt();
+
+  String getPath();
+
+  String getQualifier();
+
+  String getString();
+
+  String getTerm();
+
+  void setBool(Boolean bool);
+
+  void setDateTime(Date dateTime);
+
+  void setDecimal(BigDecimal decimal);
+
+  void setFloat(Double _float);
+
+  void setInt(BigInteger _int);
+
+  void setPath(String path);
+
+  void setQualifier(String qualifier);
+
+  void setString(String string);
+
+  void setTerm(String term);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
new file mode 100644
index 0000000..cefba08
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v3/ValueTerm.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api.edm.xml.v3;
+
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface ValueTerm extends Named {
+
+  String getType();
+
+  void setType(String type);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
new file mode 100644
index 0000000..0828304
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Action.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.xml.v4;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+import org.apache.olingo.odata4.client.api.edm.xml.CommonParameter;
+
+public interface Action extends Named {
+
+  boolean isBound();
+
+  void setBound(boolean bound);
+
+  String getEntitySetPath();
+
+  void setEntitySetPath(String entitySetPath);
+
+  List<? extends CommonParameter> getParameters();
+
+  CommonParameter getParameter(String name);
+
+  ReturnType getReturnType();
+
+  void setReturnType(ReturnType returnType);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
new file mode 100644
index 0000000..a2d8824
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ActionImport.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface ActionImport extends OperationImport {
+
+  String getAction();
+
+  void setAction(String action);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
new file mode 100644
index 0000000..b185b0f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/AnnotatedEdmItem.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface AnnotatedEdmItem {
+
+  Annotation getAnnotation();
+
+  void setAnnotation(Annotation annotation);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
new file mode 100644
index 0000000..c181625
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotation.java
@@ -0,0 +1,41 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.ConstExprConstruct;
+import org.apache.olingo.odata4.client.api.edm.xml.v4.annotation.DynExprConstruct;
+
+public interface Annotation {
+
+  String getTerm();
+
+  void setTerm(String term);
+
+  String getQualifier();
+
+  void setQualifier(String qualifier);
+
+  ConstExprConstruct getConstExpr();
+
+  void setConstExpr(ConstExprConstruct constExpr);
+
+  DynExprConstruct getDynExpr();
+
+  void setDynExpr(DynExprConstruct dynExpr);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
new file mode 100644
index 0000000..fa5ef64
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Annotations.java
@@ -0,0 +1,29 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.AbstractAnnotations;
+
+public interface Annotations extends AbstractAnnotations {
+
+  List<? extends Annotation> getAnnotations();
+
+  Annotation getAnnotation(String term);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/CSDLElement.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/CSDLElement.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/CSDLElement.java
new file mode 100644
index 0000000..aec1c90
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/CSDLElement.java
@@ -0,0 +1,37 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public enum CSDLElement {
+
+  ActionImport,
+  ComplexType,
+  EntityContainer,
+  EntitySet,
+  EntityType,
+  EnumType,
+  FunctionImport,
+  Member,
+  NavigationProperty,
+  Property,
+  Singleton,
+  Term,
+  TypeDefinition
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.java
new file mode 100644
index 0000000..8724462
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ComplexType.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.api.edm.xml.v4;
+
+public interface ComplexType extends org.apache.olingo.odata4.client.api.edm.xml.ComplexType, AnnotatedEdmItem {
+
+  boolean isAbstractEntityType();
+
+  void setAbstractEntityType(boolean abstractEntityType);
+
+  String getBaseType();
+
+  void setBaseType(String baseType);
+
+  boolean isOpenType();
+
+  void setOpenType(boolean openType);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
new file mode 100644
index 0000000..af0d85f
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Edmx.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.util.List;
+
+public interface Edmx extends org.apache.olingo.odata4.client.api.edm.xml.Edmx {
+
+  List<? extends Reference> getReferences();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
new file mode 100644
index 0000000..6acf741
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityContainer.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.odata4.client.api.edm.xml.v4;
+
+import java.util.List;
+
+public interface EntityContainer extends org.apache.olingo.odata4.client.api.edm.xml.EntityContainer {
+
+  /**
+   * Gets the first action import with given name.
+   *
+   * @param name name.
+   * @return action import.
+   */
+  ActionImport getActionImport(String name);
+
+  /**
+   * Gets all action imports with given name.
+   *
+   * @param name name.
+   * @return action imports.
+   */
+  List<? extends ActionImport> getActionImports(String name);
+
+  List<? extends ActionImport> getActionImports();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
new file mode 100644
index 0000000..c6754c7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntitySet.java
@@ -0,0 +1,30 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.util.List;
+
+public interface EntitySet extends org.apache.olingo.odata4.client.api.edm.xml.EntitySet, AnnotatedEdmItem {
+
+  boolean isIncludeInServiceDocument();
+
+  void setIncludeInServiceDocument(boolean includeInServiceDocument);
+
+  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityType.java
new file mode 100644
index 0000000..cf736e1
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/EntityType.java
@@ -0,0 +1,23 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface EntityType extends org.apache.olingo.odata4.client.api.edm.xml.EntityType, ComplexType {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
new file mode 100644
index 0000000..60f1491
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Function.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface Function extends Action {
+
+  boolean isComposable();
+
+  void setComposable(boolean composable);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
new file mode 100644
index 0000000..1c243cd
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/FunctionImport.java
@@ -0,0 +1,32 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.CommonFunctionImport;
+
+public interface FunctionImport extends OperationImport, CommonFunctionImport {
+
+  String getFunction();
+
+  void setFunction(String function);
+
+  boolean isIncludeInServiceDocument();
+
+  void setIncludeInServiceDocument(boolean includeInServiceDocument);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
new file mode 100644
index 0000000..d31916c
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Include.java
@@ -0,0 +1,30 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface Include {
+
+  String getAlias();
+
+  String getNamespace();
+
+  void setAlias(final String alias);
+
+  void setNamespace(final String namespace);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
new file mode 100644
index 0000000..484f644
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/IncludeAnnotations.java
@@ -0,0 +1,34 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface IncludeAnnotations {
+
+  String getQualifier();
+
+  String getTargeyNamespace();
+
+  String getTermNamespace();
+
+  void setQualifier(String qualifier);
+
+  void setTargeyNamespace(String targeyNamespace);
+
+  void setTermNamespace(String termNamespace);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
new file mode 100644
index 0000000..d544b4a
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationProperty.java
@@ -0,0 +1,49 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.OnDelete;
+import java.util.List;
+
+public interface NavigationProperty
+        extends org.apache.olingo.odata4.client.api.edm.xml.CommonNavigationProperty, AnnotatedEdmItem {
+
+  String getType();
+
+  void setType(String type);
+
+  boolean isNullable();
+
+  void setNullable(boolean nullable);
+
+  String getPartner();
+
+  void setPartner(String partner);
+
+  boolean isContainsTarget();
+
+  void setContainsTarget(boolean containsTarget);
+
+  List<? extends ReferentialConstraint> getReferentialConstraints();
+
+  OnDelete getOnDelete();
+
+  void setOnDelete(OnDelete onDelete);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
new file mode 100644
index 0000000..565e2c4
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/NavigationPropertyBinding.java
@@ -0,0 +1,31 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface NavigationPropertyBinding {
+
+  String getPath();
+
+  void setPath(String path);
+
+  String getTarget();
+
+  void setTarget(String target);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java
new file mode 100644
index 0000000..bf789cf
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OnDeleteAction.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public enum OnDeleteAction {
+
+  Cascade,
+  None,
+  SetNull,
+  SetDefault;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OperationImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OperationImport.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OperationImport.java
new file mode 100644
index 0000000..cf86bd4
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/OperationImport.java
@@ -0,0 +1,28 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface OperationImport extends Named, AnnotatedEdmItem {
+
+  String getEntitySet();
+
+  void setEntitySet(String entitySet);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
new file mode 100644
index 0000000..e5afe45
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Parameter.java
@@ -0,0 +1,26 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface Parameter extends org.apache.olingo.odata4.client.api.edm.xml.CommonParameter {
+
+  String getSrid();
+
+  void setSrid(final String srid);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Property.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Property.java
new file mode 100644
index 0000000..feb8197
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Property.java
@@ -0,0 +1,25 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import org.apache.olingo.odata4.client.api.edm.xml.CommonProperty;
+
+public interface Property extends CommonProperty, AnnotatedEdmItem {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.java
new file mode 100644
index 0000000..d16e4e5
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Reference.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.api.edm.xml.v4;
+
+import java.net.URI;
+import java.util.List;
+
+public interface Reference {
+
+  URI getUri();
+
+  void setUri(URI uri);
+
+  List<? extends Include> getIncludes();
+
+  List<? extends IncludeAnnotations> getIncludeAnnotations();
+
+  List<? extends Annotation> getAnnotations();
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
new file mode 100644
index 0000000..6a06a65
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReferentialConstraint.java
@@ -0,0 +1,31 @@
+/*
+ * 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.api.edm.xml.v4;
+
+public interface ReferentialConstraint {
+
+  String getProperty();
+
+  void setProperty(String property);
+
+  String getReferencedProperty();
+
+  void setReferencedProperty(String referencedProperty);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
new file mode 100644
index 0000000..8e3c1f2
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/ReturnType.java
@@ -0,0 +1,48 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.math.BigInteger;
+
+public interface ReturnType {
+
+  String getMaxLength();
+
+  BigInteger getPrecision();
+
+  BigInteger getScale();
+
+  String getSrid();
+
+  String getType();
+
+  boolean isNullable();
+
+  void setMaxLength(String maxLength);
+
+  void setNullable(boolean nullable);
+
+  void setPrecision(BigInteger precision);
+
+  void setScale(BigInteger scale);
+
+  void setSrid(String srid);
+
+  void setType(String type);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
new file mode 100644
index 0000000..a706f89
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Singleton.java
@@ -0,0 +1,32 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface Singleton extends Named {
+
+  String getType();
+
+  void setType(String type);
+
+  List<? extends NavigationPropertyBinding> getNavigationPropertyBindings();
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
new file mode 100644
index 0000000..e3b32ac
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/Term.java
@@ -0,0 +1,60 @@
+/*
+ * 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.api.edm.xml.v4;
+
+import java.math.BigInteger;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface Term extends Named {
+
+  List<CSDLElement> getAppliesTo();
+
+  String getBaseTerm();
+
+  String getDefaultValue();
+
+  String getMaxLength();
+
+  BigInteger getPrecision();
+
+  BigInteger getScale();
+
+  String getSrid();
+
+  String getType();
+
+  boolean isNullable();
+
+  void setBaseTerm(String baseTerm);
+
+  void setDefaultValue(String defaultValue);
+
+  void setMaxLength(String maxLength);
+
+  void setNullable(boolean nullable);
+
+  void setPrecision(BigInteger precision);
+
+  void setScale(BigInteger scale);
+
+  void setSrid(String srid);
+
+  void setType(String type);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.java
new file mode 100644
index 0000000..aaad5e7
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/TypeDefinition.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.client.api.edm.xml.v4;
+
+import java.math.BigInteger;
+import java.util.List;
+import org.apache.olingo.odata4.client.api.edm.xml.Named;
+
+public interface TypeDefinition extends Named {
+
+  List<? extends Annotation> getAnnotations();
+
+  String getMaxLength();
+
+  BigInteger getPrecision();
+
+  BigInteger getScale();
+
+  String getSrid();
+
+  String getUnderlyingType();
+
+  boolean isUnicode();
+
+  void setMaxLength(String maxLength);
+
+  void setPrecision(BigInteger precision);
+
+  void setScale(BigInteger scale);
+
+  void setSrid(String srid);
+
+  void setUnderlyingType(String underlyingType);
+
+  void setUnicode(boolean unicode);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ConstExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ConstExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ConstExprConstruct.java
new file mode 100644
index 0000000..7d374fd
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/ConstExprConstruct.java
@@ -0,0 +1,56 @@
+/*
+ * 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.api.edm.xml.v4.annotation;
+
+public interface ConstExprConstruct extends ExprConstruct {
+
+  public enum Type {
+
+    Binary,
+    Bool,
+    Date,
+    DateTimeOffset,
+    Decimal,
+    Duration,
+    EnumMember,
+    Float,
+    Guid,
+    Int,
+    String,
+    TimeOfDay;
+
+    public static Type fromString(final String value) {
+      Type result = null;
+      try {
+        result = valueOf(value);
+      } catch (IllegalArgumentException e) {
+        // ignore
+      }
+      return result;
+    }
+  }
+
+  Type getType();
+
+  void setType(Type type);
+
+  String getValue();
+
+  void setValue(String value);
+}

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/cdb520e3/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/DynExprConstruct.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/DynExprConstruct.java b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/DynExprConstruct.java
new file mode 100644
index 0000000..14c4b68
--- /dev/null
+++ b/odata4-lib/odata4-client-api/src/main/java/org/apache/olingo/odata4/client/api/edm/xml/v4/annotation/DynExprConstruct.java
@@ -0,0 +1,23 @@
+/*
+ * 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.api.edm.xml.v4.annotation;
+
+public interface DynExprConstruct extends ExprConstruct {
+
+}