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/06/02 18:51:48 UTC

[3/4] Aligning package name with folder structure (org.apache.olingo.fit.proxy.v4.demo.odatademo)

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/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
new file mode 100644
index 0000000..9702144
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Customer.java
@@ -0,0 +1,174 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.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.Annotatable;
+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 = "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 {
+
+    
+    @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")
+        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 = "TotalExpense",
+                   type = "Edm.Decimal")
+        Annotatable getTotalExpenseAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonDetail", 
+                  type = "ODataDemo.PersonDetail")
+        Annotatable getPersonDetailAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/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
new file mode 100644
index 0000000..ea397c8
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/CustomerCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/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
new file mode 100644
index 0000000..86b9167
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Employee.java
@@ -0,0 +1,228 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.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.Annotatable;
+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 = "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 {
+
+    
+    @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.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);    
+    
+    
+
+    @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")
+        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 = "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();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "PersonDetail", 
+                  type = "ODataDemo.PersonDetail")
+        Annotatable getPersonDetailAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/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
new file mode 100644
index 0000000..f619ee5
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/EmployeeCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProduct.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProduct.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProduct.java
new file mode 100644
index 0000000..65c94fe
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProduct.java
@@ -0,0 +1,330 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.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.Annotatable;
+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 = "FeaturedProduct",
+        openType = false,
+        hasStream = false,
+        isAbstract = false,
+        baseType = "ODataDemo.Product")
+public interface FeaturedProduct 
+  extends Annotatable,org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product {
+
+    
+    @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 = "Description", 
+                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 getDescription();
+
+    void setDescription(java.lang.String _description);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ReleaseDate", 
+                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 getReleaseDate();
+
+    void setReleaseDate(java.util.Calendar _releaseDate);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "DiscontinuedDate", 
+                type = "Edm.DateTimeOffset", 
+                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.util.Calendar getDiscontinuedDate();
+
+    void setDiscontinuedDate(java.util.Calendar _discontinuedDate);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Rating", 
+                type = "Edm.Int16", 
+                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.Short getRating();
+
+    void setRating(java.lang.Short _rating);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Price", 
+                type = "Edm.Double", 
+                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.Double getPrice();
+
+    void setPrice(java.lang.Double _price);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Categories", 
+                type = "ODataDemo.Category", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Categories",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.CategoryCollection getCategories();
+
+    void setCategories(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.CategoryCollection _categories);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Supplier", 
+                type = "ODataDemo.Supplier", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Suppliers",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier getSupplier();
+
+    void setSupplier(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier _supplier);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "ProductDetail", 
+                type = "ODataDemo.ProductDetail", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "ProductDetails",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail getProductDetail();
+
+    void setProductDetail(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail _productDetail);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Advertisement", 
+                type = "ODataDemo.Advertisement", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Advertisements",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Advertisement getAdvertisement();
+
+    void setAdvertisement(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Advertisement _advertisement);
+    
+
+        @Override
+        Operations operations();
+
+    interface Operations            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product.Operations{
+    
+        }
+
+    ComplexFactory factory();
+
+    interface ComplexFactory            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product.ComplexFactory{
+    }
+
+    Annotations annotations();
+
+    interface Annotations            extends org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product.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.AnnotationsForProperty(name = "Description",
+                   type = "Edm.String")
+        Annotatable getDescriptionAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ReleaseDate",
+                   type = "Edm.DateTimeOffset")
+        Annotatable getReleaseDateAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "DiscontinuedDate",
+                   type = "Edm.DateTimeOffset")
+        Annotatable getDiscontinuedDateAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Rating",
+                   type = "Edm.Int16")
+        Annotatable getRatingAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Price",
+                   type = "Edm.Double")
+        Annotatable getPriceAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Categories", 
+                  type = "ODataDemo.Category")
+        Annotatable getCategoriesAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Supplier", 
+                  type = "ODataDemo.Supplier")
+        Annotatable getSupplierAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "ProductDetail", 
+                  type = "ODataDemo.ProductDetail")
+        Annotatable getProductDetailAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Advertisement", 
+                  type = "ODataDemo.Advertisement")
+        Annotatable getAdvertisementAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProductCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProductCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProductCollection.java
new file mode 100644
index 0000000..e3c0a70
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/FeaturedProductCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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 FeaturedProductCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.FeaturedProduct> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Person.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Person.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Person.java
new file mode 100644
index 0000000..45ed75c
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Person.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.fit.proxy.v4.demo.odatademo.types;
+
+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.Annotatable;
+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 = "Person",
+        openType = false,
+        hasStream = false,
+        isAbstract = false)
+public interface Person 
+  extends Annotatable,java.io.Serializable {
+
+    
+    @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 = "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 {
+    }
+
+    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 = "PersonDetail", 
+                  type = "ODataDemo.PersonDetail")
+        Annotatable getPersonDetailAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonCollection.java
new file mode 100644
index 0000000..c397f29
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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 PersonCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetail.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetail.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetail.java
new file mode 100644
index 0000000..ff7231d
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetail.java
@@ -0,0 +1,258 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.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.Annotatable;
+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 = "PersonDetail",
+        openType = false,
+        hasStream = false,
+        isAbstract = false)
+public interface PersonDetail 
+  extends Annotatable,java.io.Serializable {
+
+    
+    @Key
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "PersonID", 
+                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 getPersonID();
+
+    void setPersonID(java.lang.Integer _personID);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Age", 
+                type = "Edm.Byte", 
+                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.Short getAge();
+
+    void setAge(java.lang.Short _age);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Gender", 
+                type = "Edm.Boolean", 
+                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.Boolean getGender();
+
+    void setGender(java.lang.Boolean _gender);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Phone", 
+                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 getPhone();
+
+    void setPhone(java.lang.String _phone);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Address", 
+                type = "ODataDemo.Address", 
+                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)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Address getAddress();
+
+    void setAddress(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Address _address);    
+        
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Photo", 
+                type = "Edm.Stream", 
+                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.io.InputStream getPhoto();
+
+    void setPhoto(java.io.InputStream _photo);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Person", 
+                type = "ODataDemo.Person", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Persons",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person getPerson();
+
+    void setPerson(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Person _person);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+         @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Address",
+                   type = "ODataDemo.Address")
+         org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Address newAddress();
+
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "PersonID",
+                   type = "Edm.Int32")
+        Annotatable getPersonIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Age",
+                   type = "Edm.Byte")
+        Annotatable getAgeAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Gender",
+                   type = "Edm.Boolean")
+        Annotatable getGenderAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Phone",
+                   type = "Edm.String")
+        Annotatable getPhoneAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Address",
+                   type = "ODataDemo.Address")
+        Annotatable getAddressAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Photo",
+                   type = "Edm.Stream")
+        Annotatable getPhotoAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Person", 
+                  type = "ODataDemo.Person")
+        Annotatable getPersonAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetailCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetailCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetailCollection.java
new file mode 100644
index 0000000..bb4dfd1
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/PersonDetailCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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 PersonDetailCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.PersonDetail> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Product.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Product.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Product.java
new file mode 100644
index 0000000..af46c8d
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/Product.java
@@ -0,0 +1,321 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * 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.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.Annotatable;
+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 = "Product",
+        openType = false,
+        hasStream = false,
+        isAbstract = false)
+public interface Product 
+  extends Annotatable,java.io.Serializable {
+
+    
+    @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 = "Description", 
+                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 getDescription();
+
+    void setDescription(java.lang.String _description);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ReleaseDate", 
+                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 getReleaseDate();
+
+    void setReleaseDate(java.util.Calendar _releaseDate);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "DiscontinuedDate", 
+                type = "Edm.DateTimeOffset", 
+                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.util.Calendar getDiscontinuedDate();
+
+    void setDiscontinuedDate(java.util.Calendar _discontinuedDate);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Rating", 
+                type = "Edm.Int16", 
+                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.Short getRating();
+
+    void setRating(java.lang.Short _rating);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Price", 
+                type = "Edm.Double", 
+                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.Double getPrice();
+
+    void setPrice(java.lang.Double _price);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Categories", 
+                type = "ODataDemo.Category", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Categories",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.CategoryCollection getCategories();
+
+    void setCategories(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.CategoryCollection _categories);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Supplier", 
+                type = "ODataDemo.Supplier", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Suppliers",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier getSupplier();
+
+    void setSupplier(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Supplier _supplier);
+    
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "ProductDetail", 
+                type = "ODataDemo.ProductDetail", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "ProductDetails",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail getProductDetail();
+
+    void setProductDetail(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail _productDetail);
+    
+
+        Operations operations();
+
+    interface Operations {
+    
+          @org.apache.olingo.ext.proxy.api.annotations.Operation(name = "Discount",
+                    type = OperationType.ACTION,
+                    returnType = "Edm.Double")
+      java.lang.Double discount(
+                @Parameter(name = "discountPercentage", type = "Edm.Int32", nullable = false) java.lang.Integer discountPercentage
+            );
+
+        }
+
+    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.AnnotationsForProperty(name = "Description",
+                   type = "Edm.String")
+        Annotatable getDescriptionAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ReleaseDate",
+                   type = "Edm.DateTimeOffset")
+        Annotatable getReleaseDateAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "DiscontinuedDate",
+                   type = "Edm.DateTimeOffset")
+        Annotatable getDiscontinuedDateAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Rating",
+                   type = "Edm.Int16")
+        Annotatable getRatingAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Price",
+                   type = "Edm.Double")
+        Annotatable getPriceAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Categories", 
+                  type = "ODataDemo.Category")
+        Annotatable getCategoriesAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Supplier", 
+                  type = "ODataDemo.Supplier")
+        Annotatable getSupplierAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "ProductDetail", 
+                  type = "ODataDemo.ProductDetail")
+        Annotatable getProductDetailAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductCollection.java
new file mode 100644
index 0000000..c65cef7
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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 ProductCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetail.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetail.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetail.java
new file mode 100644
index 0000000..875da63
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetail.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.fit.proxy.v4.demo.odatademo.types;
+
+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.Annotatable;
+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 = "ProductDetail",
+        openType = false,
+        hasStream = false,
+        isAbstract = false)
+public interface ProductDetail 
+  extends Annotatable,java.io.Serializable {
+
+    
+    @Key
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ProductID", 
+                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 getProductID();
+
+    void setProductID(java.lang.Integer _productID);    
+    
+    
+    @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Details", 
+                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 getDetails();
+
+    void setDetails(java.lang.String _details);    
+    
+    
+
+    @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Product", 
+                type = "ODataDemo.Product", 
+                targetSchema = "ODataDemo", 
+                targetContainer = "DemoService", 
+                targetEntitySet = "Products",
+                containsTarget = false)
+    org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product getProduct();
+
+    void setProduct(org.apache.olingo.fit.proxy.v4.demo.odatademo.types.Product _product);
+    
+
+
+    ComplexFactory factory();
+
+    interface ComplexFactory {
+    }
+
+    Annotations annotations();
+
+    interface Annotations {
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ProductID",
+                   type = "Edm.Int32")
+        Annotatable getProductIDAnnotations();
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Details",
+                   type = "Edm.String")
+        Annotatable getDetailsAnnotations();
+
+
+
+        @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Product", 
+                  type = "ODataDemo.Product")
+        Annotatable getProductAnnotations();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cc518254/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetailCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetailCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetailCollection.java
new file mode 100644
index 0000000..a90c3fa
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/v4/demo/odatademo/types/ProductDetailCollection.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.fit.proxy.v4.demo.odatademo.types;
+
+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 ProductDetailCollection extends AbstractEntityCollection<org.apache.olingo.fit.proxy.v4.demo.odatademo.types.ProductDetail> {
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}