You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/09/01 14:45:25 UTC

[23/31] olingo-odata4 git commit: [OLINGO-659] Removed v4 from package and class names

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Advertisement.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Advertisement.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Advertisement.java
new file mode 100644
index 0000000..df7a8e0
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Advertisement.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@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 org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<Advertisement>,
+    org.apache.olingo.ext.proxy.api.StructuredQuery<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 = "")
+  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 = "")
+  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 = "")
+  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)
+  FeaturedProduct getFeaturedProduct();
+
+  void setFeaturedProduct(FeaturedProduct _featuredProduct);
+
+  void uploadStream(org.apache.olingo.ext.proxy.api.EdmStreamValue stream);
+
+  org.apache.olingo.ext.proxy.api.EdmStreamValue loadStream();
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  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/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollection.java
new file mode 100644
index 0000000..12daaeb
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface AdvertisementCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<AdvertisementCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<Advertisement, AdvertisementCollection, AdvertisementCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollectionComposableInvoker.java
new file mode 100644
index 0000000..cba307e
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface AdvertisementCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<AdvertisementCollection, AdvertisementCollection.Operations> {
+
+  @Override
+  AdvertisementCollectionComposableInvoker select(String... select);
+
+  @Override
+  AdvertisementCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementComposableInvoker.java
new file mode 100644
index 0000000..7137eae
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/AdvertisementComposableInvoker.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface AdvertisementComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Advertisement, Advertisement.Operations>
+{
+
+  @Override
+  AdvertisementComposableInvoker select(String... select);
+
+  @Override
+  AdvertisementComposableInvoker expand(String... expand);
+
+  @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 = "")
+  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 = "")
+  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 = "")
+  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)
+  FeaturedProduct getFeaturedProduct();
+
+  void setFeaturedProduct(FeaturedProduct _featuredProduct);
+
+  void uploadStream(org.apache.olingo.ext.proxy.api.EdmStreamValue stream);
+
+  org.apache.olingo.ext.proxy.api.EdmStreamValue loadStream();
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Category.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Category.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Category.java
new file mode 100644
index 0000000..4283f83
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Category.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+@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 org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<Category>, org.apache.olingo.ext.proxy.api.StructuredQuery<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 = "")
+  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 = "")
+  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)
+  ProductCollection getProducts();
+
+  void setProducts(ProductCollection _products);
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  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/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollection.java
new file mode 100644
index 0000000..0c93867
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface CategoryCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<CategoryCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<Category, CategoryCollection, CategoryCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollectionComposableInvoker.java
new file mode 100644
index 0000000..d5680f8
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface CategoryCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<CategoryCollection, CategoryCollection.Operations> {
+
+  @Override
+  CategoryCollectionComposableInvoker select(String... select);
+
+  @Override
+  CategoryCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryComposableInvoker.java
new file mode 100644
index 0000000..4964587
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CategoryComposableInvoker.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractOpenType;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+public interface CategoryComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Category, Category.Operations>
+    , AbstractOpenType {
+
+  @Override
+  CategoryComposableInvoker select(String... select);
+
+  @Override
+  CategoryComposableInvoker expand(String... expand);
+
+  @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 = "")
+  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 = "")
+  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)
+  ProductCollection getProducts();
+
+  void setProducts(ProductCollection _products);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Customer.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Customer.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Customer.java
new file mode 100644
index 0000000..405ce0a
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Customer.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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.concurrent.Future;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+@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.Annotatable,
+        Person {
+
+  @Override
+  Customer load();
+
+  @Override
+  Future<? extends Customer> loadAsync();
+
+  @Override
+  Customer refs();
+
+  @Override
+  Customer expand(String... expand);
+
+  @Override
+  Customer select(String... select);
+
+  @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 = "")
+  @Override
+  java.lang.Integer getID();
+
+  @Override
+  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 = "")
+  @Override
+  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 = "")
+  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)
+  PersonDetail getPersonDetail();
+
+  @Override
+  void setPersonDetail(PersonDetail _personDetail);
+
+  @Override
+  Operations operations();
+
+  interface Operations extends Person.Operations {
+    // No additional methods needed for now.
+  }
+
+  @Override
+  Annotations annotations();
+
+  interface Annotations extends Person.Annotations {
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+    @Override
+    @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();
+
+    @Override
+    @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/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollection.java
new file mode 100644
index 0000000..6ce29da
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface CustomerCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<CustomerCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<Customer, CustomerCollection, CustomerCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollectionComposableInvoker.java
new file mode 100644
index 0000000..537ee8a
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface CustomerCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<CustomerCollection, CustomerCollection.Operations> {
+
+  @Override
+  CustomerCollectionComposableInvoker select(String... select);
+
+  @Override
+  CustomerCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerComposableInvoker.java
new file mode 100644
index 0000000..4e6e7e2
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/CustomerComposableInvoker.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface CustomerComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Customer, Customer.Operations>
+{
+
+  @Override
+  CustomerComposableInvoker select(String... select);
+
+  @Override
+  CustomerComposableInvoker expand(String... expand);
+
+  @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 = "")
+  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 = "")
+  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 = "")
+  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)
+  PersonDetail getPersonDetail();
+
+  void setPersonDetail(PersonDetail _personDetail);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Employee.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Employee.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Employee.java
new file mode 100644
index 0000000..4b55f53
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Employee.java
@@ -0,0 +1,184 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.concurrent.Future;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+@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.Annotatable,
+        Person {
+
+  @Override
+  Employee load();
+
+  @Override
+  Future<? extends Employee> loadAsync();
+
+  @Override
+  Employee refs();
+
+  @Override
+  Employee expand(String... expand);
+
+  @Override
+  Employee select(String... select);
+
+  @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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  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)
+  PersonDetail getPersonDetail();
+
+  @Override
+  void setPersonDetail(PersonDetail _personDetail);
+
+  @Override
+  Operations operations();
+
+  interface Operations extends Person.Operations {
+    // No additional methods needed for now.
+  }
+
+  @Override
+  Annotations annotations();
+
+  interface Annotations extends Person.Annotations {
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+    @Override
+    @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();
+
+    @Override
+    @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/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollection.java
new file mode 100644
index 0000000..c3d8c0d
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface EmployeeCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<EmployeeCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<Employee, EmployeeCollection, EmployeeCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollectionComposableInvoker.java
new file mode 100644
index 0000000..d491887
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface EmployeeCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<EmployeeCollection, EmployeeCollection.Operations> {
+
+  @Override
+  EmployeeCollectionComposableInvoker select(String... select);
+
+  @Override
+  EmployeeCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeComposableInvoker.java
new file mode 100644
index 0000000..64639cd
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/EmployeeComposableInvoker.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface EmployeeComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Employee, Employee.Operations>
+{
+
+  @Override
+  EmployeeComposableInvoker select(String... select);
+
+  @Override
+  EmployeeComposableInvoker expand(String... expand);
+
+  @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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  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)
+  PersonDetail getPersonDetail();
+
+  void setPersonDetail(PersonDetail _personDetail);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProduct.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProduct.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProduct.java
new file mode 100644
index 0000000..0d09511
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProduct.java
@@ -0,0 +1,285 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.concurrent.Future;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+@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 org.apache.olingo.ext.proxy.api.Annotatable,
+        Product {
+
+  @Override
+  FeaturedProduct load();
+
+  @Override
+  Future<? extends FeaturedProduct> loadAsync();
+
+  @Override
+  FeaturedProduct refs();
+
+  @Override
+  FeaturedProduct expand(String... expand);
+
+  @Override
+  FeaturedProduct select(String... select);
+
+  @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 = "")
+  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 = "")
+  java.lang.String getName();
+
+  @Override
+  void setName(java.lang.String _name);
+
+  @Override
+  @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 = "")
+  java.lang.String getDescription();
+
+  @Override
+  void setDescription(java.lang.String _description);
+
+  @Override
+  @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 = "")
+  java.sql.Timestamp getReleaseDate();
+
+  @Override
+  void setReleaseDate(java.sql.Timestamp _releaseDate);
+
+  @Override
+  @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 = "")
+  java.sql.Timestamp getDiscontinuedDate();
+
+  @Override
+  void setDiscontinuedDate(java.sql.Timestamp _discontinuedDate);
+
+  @Override
+  @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 = "")
+  java.lang.Short getRating();
+
+  @Override
+  void setRating(java.lang.Short _rating);
+
+  @Override
+  @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 = "")
+  java.lang.Double getPrice();
+
+  @Override
+  void setPrice(java.lang.Double _price);
+
+  @Override
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Categories",
+      type = "ODataDemo.Category",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "Categories",
+      containsTarget = false)
+  CategoryCollection getCategories();
+
+  @Override
+  void setCategories(CategoryCollection _categories);
+
+  @Override
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Supplier",
+      type = "ODataDemo.Supplier",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "Suppliers",
+      containsTarget = false)
+  Supplier getSupplier();
+
+  @Override
+  void setSupplier(Supplier _supplier);
+
+  @Override
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "ProductDetail",
+      type = "ODataDemo.ProductDetail",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "ProductDetails",
+      containsTarget = false)
+  ProductDetail getProductDetail();
+
+  @Override
+  void setProductDetail(ProductDetail _productDetail);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Advertisement",
+      type = "ODataDemo.Advertisement",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "Advertisements",
+      containsTarget = false)
+  Advertisement getAdvertisement();
+
+  void setAdvertisement(Advertisement _advertisement);
+
+  @Override
+  Operations operations();
+
+  interface Operations extends Product.Operations {
+    // No additional methods needed for now.
+  }
+
+  @Override
+  Annotations annotations();
+
+  interface Annotations extends Product.Annotations {
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getIDAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Name",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getNameAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Description",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getDescriptionAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ReleaseDate",
+        type = "Edm.DateTimeOffset")
+    org.apache.olingo.ext.proxy.api.Annotatable getReleaseDateAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "DiscontinuedDate",
+        type = "Edm.DateTimeOffset")
+    org.apache.olingo.ext.proxy.api.Annotatable getDiscontinuedDateAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Rating",
+        type = "Edm.Int16")
+    org.apache.olingo.ext.proxy.api.Annotatable getRatingAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Price",
+        type = "Edm.Double")
+    org.apache.olingo.ext.proxy.api.Annotatable getPriceAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Categories",
+        type = "ODataDemo.Category")
+    org.apache.olingo.ext.proxy.api.Annotatable getCategoriesAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Supplier",
+        type = "ODataDemo.Supplier")
+    org.apache.olingo.ext.proxy.api.Annotatable getSupplierAnnotations();
+
+    @Override
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "ProductDetail",
+        type = "ODataDemo.ProductDetail")
+    org.apache.olingo.ext.proxy.api.Annotatable getProductDetailAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Advertisement",
+        type = "ODataDemo.Advertisement")
+    org.apache.olingo.ext.proxy.api.Annotatable getAdvertisementAnnotations();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollection.java
new file mode 100644
index 0000000..ed87bc8
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface FeaturedProductCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<FeaturedProductCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<FeaturedProduct, FeaturedProductCollection, FeaturedProductCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollectionComposableInvoker.java
new file mode 100644
index 0000000..d2dd740
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface FeaturedProductCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<FeaturedProductCollection, FeaturedProductCollection.Operations> {
+
+  @Override
+  FeaturedProductCollectionComposableInvoker select(String... select);
+
+  @Override
+  FeaturedProductCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductComposableInvoker.java
new file mode 100644
index 0000000..8719896
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/FeaturedProductComposableInvoker.java
@@ -0,0 +1,182 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface FeaturedProductComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<FeaturedProduct, FeaturedProduct.Operations>
+{
+
+  @Override
+  FeaturedProductComposableInvoker select(String... select);
+
+  @Override
+  FeaturedProductComposableInvoker expand(String... expand);
+
+  @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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  java.sql.Timestamp getReleaseDate();
+
+  void setReleaseDate(java.sql.Timestamp _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 = "")
+  java.sql.Timestamp getDiscontinuedDate();
+
+  void setDiscontinuedDate(java.sql.Timestamp _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 = "")
+  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 = "")
+  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)
+  CategoryCollection getCategories();
+
+  void setCategories(CategoryCollection _categories);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Supplier",
+      type = "ODataDemo.Supplier",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "Suppliers",
+      containsTarget = false)
+  Supplier getSupplier();
+
+  void setSupplier(Supplier _supplier);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "ProductDetail",
+      type = "ODataDemo.ProductDetail",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "ProductDetails",
+      containsTarget = false)
+  ProductDetail getProductDetail();
+
+  void setProductDetail(ProductDetail _productDetail);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Advertisement",
+      type = "ODataDemo.Advertisement",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "Advertisements",
+      containsTarget = false)
+  Advertisement getAdvertisement();
+
+  void setAdvertisement(Advertisement _advertisement);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Person.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Person.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Person.java
new file mode 100644
index 0000000..006bae7
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/Person.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@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 org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<Person>, org.apache.olingo.ext.proxy.api.StructuredQuery<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 = "")
+  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 = "")
+  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)
+  PersonDetail getPersonDetail();
+
+  void setPersonDetail(PersonDetail _personDetail);
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  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 = "PersonDetail",
+        type = "ODataDemo.PersonDetail")
+    org.apache.olingo.ext.proxy.api.Annotatable getPersonDetailAnnotations();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollection.java
new file mode 100644
index 0000000..87300ec
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollection.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface PersonCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<PersonCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<Person, PersonCollection, PersonCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollectionComposableInvoker.java
new file mode 100644
index 0000000..febb164
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonCollectionComposableInvoker.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface PersonCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<PersonCollection, PersonCollection.Operations> {
+
+  @Override
+  PersonCollectionComposableInvoker select(String... select);
+
+  @Override
+  PersonCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonComposableInvoker.java
new file mode 100644
index 0000000..2461c09
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonComposableInvoker.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface PersonComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Person, Person.Operations>
+{
+
+  @Override
+  PersonComposableInvoker select(String... select);
+
+  @Override
+  PersonComposableInvoker expand(String... expand);
+
+  @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 = "")
+  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 = "")
+  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)
+  PersonDetail getPersonDetail();
+
+  void setPersonDetail(PersonDetail _personDetail);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/78a9539e/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonDetail.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonDetail.java b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonDetail.java
new file mode 100644
index 0000000..6dca287
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/demo/odatademo/types/PersonDetail.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.demo.odatademo.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+@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 org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<PersonDetail>,
+    org.apache.olingo.ext.proxy.api.StructuredQuery<PersonDetail> {
+
+  @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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  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 = "")
+  Address getAddress();
+
+  void setAddress(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 = "")
+  org.apache.olingo.ext.proxy.api.EdmStreamValue getPhoto();
+
+  void setPhoto(org.apache.olingo.ext.proxy.api.EdmStreamValue _photo);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Person",
+      type = "ODataDemo.Person",
+      targetSchema = "ODataDemo",
+      targetContainer = "DemoService",
+      targetEntitySet = "Persons",
+      containsTarget = false)
+  Person getPerson();
+
+  void setPerson(Person _person);
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+    // No additional methods needed for now.
+  }
+
+  Annotations annotations();
+
+  interface Annotations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "PersonID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getPersonIDAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Age",
+        type = "Edm.Byte")
+    org.apache.olingo.ext.proxy.api.Annotatable getAgeAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Gender",
+        type = "Edm.Boolean")
+    org.apache.olingo.ext.proxy.api.Annotatable getGenderAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Phone",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getPhoneAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Address",
+        type = "ODataDemo.Address")
+    org.apache.olingo.ext.proxy.api.Annotatable getAddressAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Photo",
+        type = "Edm.Stream")
+    org.apache.olingo.ext.proxy.api.Annotatable getPhotoAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Person",
+        type = "ODataDemo.Person")
+    org.apache.olingo.ext.proxy.api.Annotatable getPersonAnnotations();
+  }
+
+}