You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by fm...@apache.org on 2014/07/16 11:26:35 UTC

[12/58] [abbrv] Providing some refactoring in order to avoid multi-request retrieving entity info

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/ProductDetails.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/ProductDetails.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/ProductDetails.java
index eafbaf3..042e88b 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/ProductDetails.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/ProductDetails.java
@@ -1,18 +1,18 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -20,13 +20,34 @@
 package org.apache.olingo.fit.proxy.v4.demo.odatademo;
 
 import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKey;
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKeyElement;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "ProductDetails")
-public interface ProductDetails
-    extends
-    AbstractEntitySet<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail, java.lang.Integer, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetailCollection> {
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail newProductDetail();
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetailCollection newProductDetailCollection();
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "ProductDetails")
+public interface ProductDetails 
+  extends org.apache.olingo.ext.proxy.api.CollectionQuery<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetailCollection>, AbstractEntitySet<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail, java.lang.Integer, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetailCollection> {
+
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail newProductDetail();
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetailCollection newProductDetailCollection();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Products.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Products.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Products.java
index 088f24c..2c441e5 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Products.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Products.java
@@ -1,18 +1,18 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -20,17 +20,36 @@
 package org.apache.olingo.fit.proxy.v4.demo.odatademo;
 
 import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKey;
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKeyElement;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
 
-@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Products")
-public interface Products
-    extends
-    AbstractEntitySet<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product, java.lang.Integer, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection> {
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product newProduct();
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection newProductCollection();
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct newFeaturedProduct();
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Products")
+public interface Products 
+  extends org.apache.olingo.ext.proxy.api.CollectionQuery<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection>, AbstractEntitySet<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product, java.lang.Integer, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection> {
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProductCollection newFeaturedProductCollection();
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product newProduct();
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection newProductCollection();
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct newFeaturedProduct();
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProductCollection newFeaturedProductCollection();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Suppliers.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Suppliers.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Suppliers.java
index 15daec9..8988335 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Suppliers.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/Suppliers.java
@@ -1,18 +1,18 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
@@ -20,13 +20,34 @@
 package org.apache.olingo.fit.proxy.v4.demo.odatademo;
 
 import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKey;
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKeyElement;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Suppliers")
-public interface Suppliers
-    extends
-    AbstractEntitySet<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier, java.lang.Integer, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.SupplierCollection> {
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier newSupplier();
 
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.SupplierCollection newSupplierCollection();
+@org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "Suppliers")
+public interface Suppliers 
+  extends org.apache.olingo.ext.proxy.api.CollectionQuery<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.SupplierCollection>, AbstractEntitySet<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier, java.lang.Integer, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.SupplierCollection> {
+
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier newSupplier();
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.SupplierCollection newSupplierCollection();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/package-info.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/package-info.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/package-info.java
index 4d8ffea..1d277f0 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/package-info.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/package-info.java
@@ -1,18 +1,18 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Address.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Address.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Address.java
index d6b54b5..1f4b5bd 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Address.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Address.java
@@ -1,136 +1,173 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.ComplexType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
 import org.apache.olingo.ext.proxy.api.Annotatable;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
 @org.apache.olingo.ext.proxy.api.annotations.ComplexType(name = "Address",
-    isOpenType = false,
-    isAbstract = false)
-public interface Address
-    extends java.io.Serializable {
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Street",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "")
-  java.lang.String getStreet();
-
-  void setStreet(java.lang.String _street);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "City",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "")
-  java.lang.String getCity();
-
-  void setCity(java.lang.String _city);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "State",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "")
-  java.lang.String getState();
-
-  void setState(java.lang.String _state);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ZipCode",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "")
-  java.lang.String getZipCode();
-
-  void setZipCode(java.lang.String _zipCode);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Country",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "")
-  java.lang.String getCountry();
-
-  void setCountry(java.lang.String _country);
-
-  ComplexFactory factory();
-
-  interface ComplexFactory {}
-
-  Annotations annotations();
-
-  interface Annotations {
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Street",
-        type = "Edm.String")
-    Annotatable getStreetAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "City",
-        type = "Edm.String")
-    Annotatable getCityAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "State",
-        type = "Edm.String")
-    Annotatable getStateAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ZipCode",
-        type = "Edm.String")
-    Annotatable getZipCodeAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Country",
-        type = "Edm.String")
-    Annotatable getCountryAnnotations();
-
-  }
+        isOpenType = false,
+        isAbstract = false)
+public interface Address 
+    extends org.apache.olingo.ext.proxy.api.StructuredType,org.apache.olingo.ext.proxy.api.SingleQuery<Address> {
+
+
+
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Street", 
+                type = "Edm.String",
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "")
+    java.lang.String getStreet();
+
+    void setStreet(java.lang.String _street);
+
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "City", 
+                type = "Edm.String",
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "")
+    java.lang.String getCity();
+
+    void setCity(java.lang.String _city);
+
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "State", 
+                type = "Edm.String",
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "")
+    java.lang.String getState();
+
+    void setState(java.lang.String _state);
+
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ZipCode", 
+                type = "Edm.String",
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "")
+    java.lang.String getZipCode();
+
+    void setZipCode(java.lang.String _zipCode);
+
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Country", 
+                type = "Edm.String",
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "")
+    java.lang.String getCountry();
+
+    void setCountry(java.lang.String _country);
+
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Street",
+                   type = "Edm.String")
+        Annotatable getStreetAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "City",
+                   type = "Edm.String")
+        Annotatable getCityAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "State",
+                   type = "Edm.String")
+        Annotatable getStateAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ZipCode",
+                   type = "Edm.String")
+        Annotatable getZipCodeAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Country",
+                   type = "Edm.String")
+        Annotatable getCountryAnnotations();
+
+
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Advertisement.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Advertisement.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Advertisement.java
index e519285..5a70f39 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Advertisement.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Advertisement.java
@@ -1,141 +1,176 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import org.apache.olingo.client.api.edm.ConcurrencyMode;
-import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
-import org.apache.olingo.ext.proxy.api.Annotatable;
+import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.client.api.edm.ConcurrencyMode;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
 @org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Advertisement",
-    openType = false,
-    hasStream = true,
-    isAbstract = false)
-public interface Advertisement
-    extends Annotatable, java.io.Serializable {
-
-  @Key
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID",
-      type = "Edm.Guid",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.util.UUID getID();
-
-  void setID(java.util.UUID _iD);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.String getName();
-
-  void setName(java.lang.String _name);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "AirDate",
-      type = "Edm.DateTimeOffset",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.util.Calendar getAirDate();
-
-  void setAirDate(java.util.Calendar _airDate);
-
-  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "FeaturedProduct",
-      type = "ODataDemo.FeaturedProduct",
-      targetSchema = "ODataDemo",
-      targetContainer = "DemoService",
-      targetEntitySet = "Products",
-      containsTarget = false)
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct getFeaturedProduct();
-
-  void setFeaturedProduct(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct _featuredProduct);
-
-  void setStream(java.io.InputStream stream);
-
-  java.io.InputStream getStream();
-
-  ComplexFactory factory();
-
-  interface ComplexFactory {}
-
-  Annotations annotations();
-
-  interface Annotations {
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
-        type = "Edm.Guid")
-    Annotatable getIDAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
-        type = "Edm.String")
-    Annotatable getNameAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "AirDate",
-        type = "Edm.DateTimeOffset")
-    Annotatable getAirDateAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "FeaturedProduct",
-        type = "ODataDemo.FeaturedProduct")
-    Annotatable getFeaturedProductAnnotations();
-  }
+        openType = false,
+        hasStream = true,
+        isAbstract = false)
+public interface Advertisement 
+  extends org.apache.olingo.ext.proxy.api.StructuredType,org.apache.olingo.ext.proxy.api.Annotatable,org.apache.olingo.ext.proxy.api.SingleQuery<Advertisement> {
+
+
+    
+    @Key
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID", 
+                type = "Edm.Guid", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.util.UUID getID();
+
+    void setID(java.util.UUID _iD);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name", 
+                type = "Edm.String", 
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.String getName();
+
+    void setName(java.lang.String _name);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "AirDate", 
+                type = "Edm.DateTimeOffset", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.sql.Timestamp getAirDate();
+
+    void setAirDate(java.sql.Timestamp _airDate);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "FeaturedProduct", 
+                type = "ODataDemo.FeaturedProduct", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Products",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct getFeaturedProduct();
+
+    void setFeaturedProduct(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct _featuredProduct);
+    
+    void setStream(java.io.InputStream stream);
+
+    java.io.InputStream getStream();
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+                   type = "Edm.Guid")
+        org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
+                   type = "Edm.String")
+        org.apache.olingo.ext.proxy.api.Annotatable getNameAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "AirDate",
+                   type = "Edm.DateTimeOffset")
+        org.apache.olingo.ext.proxy.api.Annotatable getAirDateAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "FeaturedProduct", 
+                  type = "ODataDemo.FeaturedProduct")
+        org.apache.olingo.ext.proxy.api.Annotatable getFeaturedProductAnnotations();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/AdvertisementCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/AdvertisementCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/AdvertisementCollection.java
index 8177b24..cb5c6ad 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/AdvertisementCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/AdvertisementCollection.java
@@ -1,31 +1,50 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import java.util.Collection;
-
+import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
 import org.apache.olingo.ext.proxy.api.AbstractTerm;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-public interface AdvertisementCollection extends
-    AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Advertisement> {
+public interface AdvertisementCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Advertisement> {
 
   Object getAnnotation(Class<? extends AbstractTerm> term);
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Category.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Category.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Category.java
index 81690a0..3c7dba3 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Category.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Category.java
@@ -1,112 +1,146 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import org.apache.olingo.client.api.edm.ConcurrencyMode;
-import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
-import org.apache.olingo.ext.proxy.api.AbstractOpenType;
-import org.apache.olingo.ext.proxy.api.Annotatable;
+import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.client.api.edm.ConcurrencyMode;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+
 
 @org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
 @org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Category",
-    openType = true,
-    hasStream = false,
-    isAbstract = false)
-public interface Category
-    extends Annotatable, AbstractOpenType {
-
-  @Key
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID",
-      type = "Edm.Int32",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.Integer getID();
-
-  void setID(java.lang.Integer _iD);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.String getName();
-
-  void setName(java.lang.String _name);
-
-  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Products",
-      type = "ODataDemo.Product",
-      targetSchema = "ODataDemo",
-      targetContainer = "DemoService",
-      targetEntitySet = "Products",
-      containsTarget = false)
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection getProducts();
-
-  void setProducts(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection _products);
-
-  ComplexFactory factory();
-
-  interface ComplexFactory {}
-
-  Annotations annotations();
-
-  interface Annotations {
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
-        type = "Edm.Int32")
-    Annotatable getIDAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
-        type = "Edm.String")
-    Annotatable getNameAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Products",
-        type = "ODataDemo.Product")
-    Annotatable getProductsAnnotations();
-  }
+        openType = true,
+        hasStream = false,
+        isAbstract = false)
+public interface Category 
+  extends org.apache.olingo.ext.proxy.api.StructuredType,org.apache.olingo.ext.proxy.api.Annotatable,org.apache.olingo.ext.proxy.api.SingleQuery<Category>,AbstractOpenType {
+
+
+    
+    @Key
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID", 
+                type = "Edm.Int32", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.Integer getID();
+
+    void setID(java.lang.Integer _iD);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name", 
+                type = "Edm.String", 
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.String getName();
+
+    void setName(java.lang.String _name);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Products", 
+                type = "ODataDemo.Product", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Products",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection getProducts();
+
+    void setProducts(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductCollection _products);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+                   type = "Edm.Int32")
+        org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
+                   type = "Edm.String")
+        org.apache.olingo.ext.proxy.api.Annotatable getNameAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Products", 
+                  type = "ODataDemo.Product")
+        org.apache.olingo.ext.proxy.api.Annotatable getProductsAnnotations();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CategoryCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CategoryCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CategoryCollection.java
index 5d1f50c..cb532b0 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CategoryCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CategoryCollection.java
@@ -1,31 +1,50 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import java.util.Collection;
-
+import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
 import org.apache.olingo.ext.proxy.api.AbstractTerm;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-public interface CategoryCollection extends
-    AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Category> {
+public interface CategoryCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Category> {
 
   Object getAnnotation(Class<? extends AbstractTerm> term);
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Customer.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Customer.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Customer.java
index 3bcc859..5b3e9ef 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Customer.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Customer.java
@@ -1,149 +1,176 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import org.apache.olingo.client.api.edm.ConcurrencyMode;
-import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
-import org.apache.olingo.ext.proxy.api.Annotatable;
+import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.client.api.edm.ConcurrencyMode;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
 
-@org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
-@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Customer",
-    openType = false,
-    hasStream = false,
-    isAbstract = false,
-    baseType = "ODataDemo.Person")
-public interface Customer
-    extends Annotatable, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person {
-
-  @Override
-  @Key
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID",
-      type = "Edm.Int32",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.Integer getID();
-
-  @Override
-  void setID(java.lang.Integer _iD);
-
-  @Override
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.String getName();
-
-  @Override
-  void setName(java.lang.String _name);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "TotalExpense",
-      type = "Edm.Decimal",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.math.BigDecimal getTotalExpense();
-
-  void setTotalExpense(java.math.BigDecimal _totalExpense);
-
-  @Override
-  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "PersonDetail",
-      type = "ODataDemo.PersonDetail",
-      targetSchema = "ODataDemo",
-      targetContainer = "DemoService",
-      targetEntitySet = "PersonDetails",
-      containsTarget = false)
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail getPersonDetail();
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
 
-  @Override
-  void setPersonDetail(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail _personDetail);
 
-  @Override
-  ComplexFactory factory();
-
-  interface ComplexFactory extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.ComplexFactory {}
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Customer",
+        openType = false,
+        hasStream = false,
+        isAbstract = false,
+        baseType = "ODataDemo.Person")
+public interface Customer 
+  extends org.apache.olingo.ext.proxy.api.StructuredType,org.apache.olingo.ext.proxy.api.Annotatable,org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person {
 
   @Override
-  Annotations annotations();
-
-  interface Annotations extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.Annotations {
-
-    @Override
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
-        type = "Edm.Int32")
-    Annotatable getIDAnnotations();
-
-    @Override
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
-        type = "Edm.String")
-    Annotatable getNameAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "TotalExpense",
-        type = "Edm.Decimal")
-    Annotatable getTotalExpenseAnnotations();
-
-    @Override
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonDetail",
-        type = "ODataDemo.PersonDetail")
-    Annotatable getPersonDetailAnnotations();
-  }
+  Customer load();
+
+    
+    @Key
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID", 
+                type = "Edm.Int32", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.Integer getID();
+
+    void setID(java.lang.Integer _iD);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name", 
+                type = "Edm.String", 
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.String getName();
+
+    void setName(java.lang.String _name);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "TotalExpense", 
+                type = "Edm.Decimal", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.math.BigDecimal getTotalExpense();
+
+    void setTotalExpense(java.math.BigDecimal _totalExpense);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "PersonDetail", 
+                type = "ODataDemo.PersonDetail", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "PersonDetails",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail getPersonDetail();
+
+    void setPersonDetail(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail _personDetail);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.ComplexFactory{
+    }
+
+    Annotations annotations();
+
+    interface Annotations            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.Annotations{
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+                   type = "Edm.Int32")
+        org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
+                   type = "Edm.String")
+        org.apache.olingo.ext.proxy.api.Annotatable getNameAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "TotalExpense",
+                   type = "Edm.Decimal")
+        org.apache.olingo.ext.proxy.api.Annotatable getTotalExpenseAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonDetail", 
+                  type = "ODataDemo.PersonDetail")
+        org.apache.olingo.ext.proxy.api.Annotatable getPersonDetailAnnotations();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CustomerCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CustomerCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CustomerCollection.java
index 6b00082..ea397c8 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CustomerCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CustomerCollection.java
@@ -1,31 +1,50 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import java.util.Collection;
-
+import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
 import org.apache.olingo.ext.proxy.api.AbstractTerm;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-public interface CustomerCollection extends
-    AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Customer> {
+public interface CustomerCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Customer> {
 
   Object getAnnotation(Class<? extends AbstractTerm> term);
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Employee.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Employee.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Employee.java
index cf98f31..3689100 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Employee.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Employee.java
@@ -1,201 +1,230 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import org.apache.olingo.client.api.edm.ConcurrencyMode;
-import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
-import org.apache.olingo.ext.proxy.api.Annotatable;
+import org.apache.olingo.client.api.http.HttpMethod;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty;
+import org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Namespace;
+import org.apache.olingo.ext.proxy.api.annotations.EntityType;
+import org.apache.olingo.ext.proxy.api.annotations.EntitySet;
 import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
+import org.apache.olingo.ext.proxy.api.annotations.NavigationProperty;
+import org.apache.olingo.ext.proxy.api.annotations.Property;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+import org.apache.olingo.commons.api.edm.constants.EdmContentKind;
+import org.apache.olingo.client.api.edm.ConcurrencyMode;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
 
-@org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
-@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Employee",
-    openType = false,
-    hasStream = false,
-    isAbstract = false,
-    baseType = "ODataDemo.Person")
-public interface Employee
-    extends Annotatable, org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person {
-
-  @Override
-  @Key
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID",
-      type = "Edm.Int32",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.Integer getID();
-
-  @Override
-  void setID(java.lang.Integer _iD);
-
-  @Override
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name",
-      type = "Edm.String",
-      nullable = true,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.String getName();
-
-  @Override
-  void setName(java.lang.String _name);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "EmployeeID",
-      type = "Edm.Int64",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.Long getEmployeeID();
-
-  void setEmployeeID(java.lang.Long _employeeID);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "HireDate",
-      type = "Edm.DateTimeOffset",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.util.Calendar getHireDate();
-
-  void setHireDate(java.util.Calendar _hireDate);
-
-  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Salary",
-      type = "Edm.Single",
-      nullable = false,
-      defaultValue = "",
-      maxLenght = Integer.MAX_VALUE,
-      fixedLenght = false,
-      precision = 0,
-      scale = 0,
-      unicode = true,
-      collation = "",
-      srid = "",
-      concurrencyMode = ConcurrencyMode.None,
-      fcSourcePath = "",
-      fcTargetPath = "",
-      fcContentKind = EdmContentKind.text,
-      fcNSPrefix = "",
-      fcNSURI = "",
-      fcKeepInContent = false)
-  java.lang.Float getSalary();
-
-  void setSalary(java.lang.Float _salary);
-
-  @Override
-  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "PersonDetail",
-      type = "ODataDemo.PersonDetail",
-      targetSchema = "ODataDemo",
-      targetContainer = "DemoService",
-      targetEntitySet = "PersonDetails",
-      containsTarget = false)
-  org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail getPersonDetail();
-
-  @Override
-  void setPersonDetail(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail _personDetail);
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
 
-  @Override
-  ComplexFactory factory();
 
-  interface ComplexFactory extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.ComplexFactory {}
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("ODataDemo")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Employee",
+        openType = false,
+        hasStream = false,
+        isAbstract = false,
+        baseType = "ODataDemo.Person")
+public interface Employee 
+  extends org.apache.olingo.ext.proxy.api.StructuredType,org.apache.olingo.ext.proxy.api.Annotatable,org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person {
 
   @Override
-  Annotations annotations();
-
-  interface Annotations extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.Annotations {
-
-    @Override
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
-        type = "Edm.Int32")
-    Annotatable getIDAnnotations();
-
-    @Override
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
-        type = "Edm.String")
-    Annotatable getNameAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "EmployeeID",
-        type = "Edm.Int64")
-    Annotatable getEmployeeIDAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "HireDate",
-        type = "Edm.DateTimeOffset")
-    Annotatable getHireDateAnnotations();
-
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Salary",
-        type = "Edm.Single")
-    Annotatable getSalaryAnnotations();
-
-    @Override
-    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonDetail",
-        type = "ODataDemo.PersonDetail")
-    Annotatable getPersonDetailAnnotations();
-  }
+  Employee load();
+
+    
+    @Key
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ID", 
+                type = "Edm.Int32", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.Integer getID();
+
+    void setID(java.lang.Integer _iD);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name", 
+                type = "Edm.String", 
+                nullable = true,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.String getName();
+
+    void setName(java.lang.String _name);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "EmployeeID", 
+                type = "Edm.Int64", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.Long getEmployeeID();
+
+    void setEmployeeID(java.lang.Long _employeeID);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "HireDate", 
+                type = "Edm.DateTimeOffset", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.sql.Timestamp getHireDate();
+
+    void setHireDate(java.sql.Timestamp _hireDate);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Salary", 
+                type = "Edm.Single", 
+                nullable = false,
+                defaultValue = "",
+                maxLenght = Integer.MAX_VALUE,
+                fixedLenght = false,
+                precision = 0,
+                scale = 0,
+                unicode = true,
+                collation = "",
+                srid = "",
+                concurrencyMode = ConcurrencyMode.None,
+                fcSourcePath = "",
+                fcTargetPath = "",
+                fcContentKind = EdmContentKind.text,
+                fcNSPrefix = "",
+                fcNSURI = "",
+                fcKeepInContent = false)
+    java.lang.Float getSalary();
+
+    void setSalary(java.lang.Float _salary);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "PersonDetail", 
+                type = "ODataDemo.PersonDetail", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "PersonDetails",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail getPersonDetail();
+
+    void setPersonDetail(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail _personDetail);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.ComplexFactory{
+    }
+
+    Annotations annotations();
+
+    interface Annotations            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person.Annotations{
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+                   type = "Edm.Int32")
+        org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
+                   type = "Edm.String")
+        org.apache.olingo.ext.proxy.api.Annotatable getNameAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "EmployeeID",
+                   type = "Edm.Int64")
+        org.apache.olingo.ext.proxy.api.Annotatable getEmployeeIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "HireDate",
+                   type = "Edm.DateTimeOffset")
+        org.apache.olingo.ext.proxy.api.Annotatable getHireDateAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Salary",
+                   type = "Edm.Single")
+        org.apache.olingo.ext.proxy.api.Annotatable getSalaryAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonDetail", 
+                  type = "ODataDemo.PersonDetail")
+        org.apache.olingo.ext.proxy.api.Annotatable getPersonDetailAnnotations();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6587302a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/EmployeeCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/EmployeeCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/EmployeeCollection.java
index 0d5bea0..f619ee5 100644
--- a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/EmployeeCollection.java
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/EmployeeCollection.java
@@ -1,31 +1,50 @@
-/*
+/* 
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * regarding copyright ownership.  The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
+ * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 package org.apache.olingo.fit.proxy.v4.demo.odatademo.types;
 
-import java.util.Collection;
-
+import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.ext.proxy.api.AbstractEntityCollection;
 import org.apache.olingo.ext.proxy.api.AbstractTerm;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.annotations.Operation;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.*;
+import org.apache.olingo.fit.proxy.v4.demo.odatademo.types.*;
+
+import org.apache.olingo.commons.api.edm.geo.Geospatial;
+import org.apache.olingo.commons.api.edm.geo.GeospatialCollection;
+import org.apache.olingo.commons.api.edm.geo.LineString;
+import org.apache.olingo.commons.api.edm.geo.MultiLineString;
+import org.apache.olingo.commons.api.edm.geo.MultiPoint;
+import org.apache.olingo.commons.api.edm.geo.MultiPolygon;
+import org.apache.olingo.commons.api.edm.geo.Point;
+import org.apache.olingo.commons.api.edm.geo.Polygon;
+import java.math.BigDecimal;
+import java.net.URI;
+import java.util.UUID;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Calendar;
+import javax.xml.datatype.Duration;
 
-public interface EmployeeCollection extends
-    AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Employee> {
+public interface EmployeeCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Employee> {
 
   Object getAnnotation(Class<? extends AbstractTerm> term);