You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2016/08/12 11:48:18 UTC

[04/14] olingo-odata4 git commit: [OLINGO-1004] Remove another microsoft from test package name

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollection.java
new file mode 100644
index 0000000..806ae26
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollection.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface OrderDetailCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<OrderDetailCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<OrderDetail, OrderDetailCollection, OrderDetailCollection> {
+
+  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/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollectionComposableInvoker.java
new file mode 100644
index 0000000..457d815
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailCollectionComposableInvoker.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface OrderDetailCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<OrderDetailCollection, OrderDetailCollection.Operations> {
+
+  @Override
+  OrderDetailCollectionComposableInvoker select(String... select);
+
+  @Override
+  OrderDetailCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailComposableInvoker.java
new file mode 100644
index 0000000..1a812f2
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailComposableInvoker.java
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface OrderDetailComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<OrderDetail, OrderDetail.Operations>
+{
+
+  @Override
+  OrderDetailComposableInvoker select(String... select);
+
+  @Override
+  OrderDetailComposableInvoker expand(String... expand);
+
+  @Key
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "OrderID",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getOrderID();
+
+  void setOrderID(java.lang.Integer _orderID);
+
+  @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 = "")
+  java.lang.Integer getProductID();
+
+  void setProductID(java.lang.Integer _productID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "OrderPlaced",
+      type = "Edm.DateTimeOffset",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.sql.Timestamp getOrderPlaced();
+
+  void setOrderPlaced(java.sql.Timestamp _orderPlaced);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Quantity",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getQuantity();
+
+  void setQuantity(java.lang.Integer _quantity);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "UnitPrice",
+      type = "Edm.Single",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Float getUnitPrice();
+
+  void setUnitPrice(java.lang.Float _unitPrice);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "ProductOrdered",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Product",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "Products",
+      containsTarget = false)
+  ProductCollection
+      getProductOrdered();
+
+      void
+      setProductOrdered(
+          ProductCollection _productOrdered);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "AssociatedOrder",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Order",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "Orders",
+      containsTarget = false)
+  Order
+      getAssociatedOrder();
+
+      void
+      setAssociatedOrder(
+          Order _associatedOrder);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailKey.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailKey.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailKey.java
new file mode 100644
index 0000000..26bede7
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/OrderDetailKey.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntityKey;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKeyElement;
+
+@org.apache.olingo.ext.proxy.api.annotations.CompoundKey
+public class OrderDetailKey extends AbstractEntityKey {
+
+  private static final long serialVersionUID = -4068508671802176607L;
+
+  private java.lang.Integer _orderID;
+
+  @CompoundKeyElement(name = "OrderID", position = 0)
+  public java.lang.Integer getOrderID() {
+    return _orderID;
+  }
+
+  public void setOrderID(final java.lang.Integer _orderID) {
+    this._orderID = _orderID;
+  }
+
+  private java.lang.Integer _productID;
+
+  @CompoundKeyElement(name = "ProductID", position = 1)
+  public java.lang.Integer getProductID() {
+    return _productID;
+  }
+
+  public void setProductID(final java.lang.Integer _productID) {
+    this._productID = _productID;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrument.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrument.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrument.java
new file mode 100644
index 0000000..d0012f1
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrument.java
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.ODataWCFService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "PaymentInstrument",
+    openType = false,
+    hasStream = false,
+    isAbstract = false)
+public interface PaymentInstrument
+    extends org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<PaymentInstrument>,
+    org.apache.olingo.ext.proxy.api.StructuredQuery<PaymentInstrument> {
+
+  @Key
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "PaymentInstrumentID",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getPaymentInstrumentID();
+
+  void setPaymentInstrumentID(java.lang.Integer _paymentInstrumentID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "FriendlyName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getFriendlyName();
+
+  void setFriendlyName(java.lang.String _friendlyName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "CreatedDate",
+      type = "Edm.DateTimeOffset",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.sql.Timestamp getCreatedDate();
+
+  void setCreatedDate(java.sql.Timestamp _createdDate);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "TheStoredPI",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "StoredPIs",
+      containsTarget = false)
+  StoredPI
+      getTheStoredPI();
+
+      void
+      setTheStoredPI(
+          StoredPI _theStoredPI);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "BackupStoredPI",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "StoredPIs",
+      containsTarget = false)
+  StoredPI
+      getBackupStoredPI();
+
+      void
+      setBackupStoredPI(
+          StoredPI _backupStoredPI);
+
+  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 = "PaymentInstrumentID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getPaymentInstrumentIDAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "FriendlyName",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getFriendlyNameAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "CreatedDate",
+        type = "Edm.DateTimeOffset")
+    org.apache.olingo.ext.proxy.api.Annotatable getCreatedDateAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "TheStoredPI",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI")
+    org.apache.olingo.ext.proxy.api.Annotatable getTheStoredPIAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "BillingStatements",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.Statement")
+    org.apache.olingo.ext.proxy.api.Annotatable getBillingStatementsAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "BackupStoredPI",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI")
+    org.apache.olingo.ext.proxy.api.Annotatable getBackupStoredPIAnnotations();
+  }
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "BillingStatements",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "StoredPIs",
+      containsTarget = true)
+      PaymentInstrument.BillingStatements
+      getBillingStatements();
+
+      void
+      setBillingStatements(
+          PaymentInstrument.BillingStatements _billingStatements);
+
+  @org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "BillingStatements", contained = true)
+  interface BillingStatements
+      extends
+      org.apache.olingo.ext.proxy.api.EntitySet<Statement, StatementCollection>,
+      org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<BillingStatements>,
+  AbstractEntitySet<Statement, java.lang.Integer, StatementCollection> {
+    // No additional methods needed for now.
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollection.java
new file mode 100644
index 0000000..86383c1
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollection.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface PaymentInstrumentCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<PaymentInstrumentCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<PaymentInstrument, PaymentInstrumentCollection, PaymentInstrumentCollection> {
+
+  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/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollectionComposableInvoker.java
new file mode 100644
index 0000000..7a9138a
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentCollectionComposableInvoker.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface PaymentInstrumentCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<PaymentInstrumentCollection, PaymentInstrumentCollection.Operations> {
+
+  @Override
+  PaymentInstrumentCollectionComposableInvoker select(String... select);
+
+  @Override
+  PaymentInstrumentCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentComposableInvoker.java
new file mode 100644
index 0000000..504d5b7
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PaymentInstrumentComposableInvoker.java
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntitySet;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+public interface PaymentInstrumentComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<PaymentInstrument, PaymentInstrument.Operations>
+{
+
+  @Override
+  PaymentInstrumentComposableInvoker select(String... select);
+
+  @Override
+  PaymentInstrumentComposableInvoker expand(String... expand);
+
+  @Key
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "PaymentInstrumentID",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getPaymentInstrumentID();
+
+  void setPaymentInstrumentID(java.lang.Integer _paymentInstrumentID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "FriendlyName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getFriendlyName();
+
+  void setFriendlyName(java.lang.String _friendlyName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "CreatedDate",
+      type = "Edm.DateTimeOffset",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.sql.Timestamp getCreatedDate();
+
+  void setCreatedDate(java.sql.Timestamp _createdDate);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "TheStoredPI",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "StoredPIs",
+      containsTarget = false)
+  StoredPI
+      getTheStoredPI();
+
+      void
+      setTheStoredPI(
+          StoredPI _theStoredPI);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "BackupStoredPI",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "StoredPIs",
+      containsTarget = false)
+  StoredPI
+      getBackupStoredPI();
+
+      void
+      setBackupStoredPI(
+          StoredPI _backupStoredPI);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "BillingStatements",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.StoredPI",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "StoredPIs",
+      containsTarget = true)
+  PaymentInstrument.BillingStatements
+      getBillingStatements();
+
+      void
+      setBillingStatements(
+          PaymentInstrument.BillingStatements _billingStatements);
+
+  @org.apache.olingo.ext.proxy.api.annotations.EntitySet(name = "BillingStatements", contained = true)
+  interface BillingStatements
+      extends
+      org.apache.olingo.ext.proxy.api.EntitySet<Statement, StatementCollection>,
+      org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<BillingStatements>,
+  AbstractEntitySet<Statement, java.lang.Integer, StatementCollection> {
+    // No additional methods needed for now.
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Person.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Person.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Person.java
new file mode 100644
index 0000000..b185e0f
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Person.java
@@ -0,0 +1,240 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.OperationType;
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.ODataWCFService")
+@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 = "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 = "FirstName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getFirstName();
+
+  void setFirstName(java.lang.String _firstName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "LastName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getLastName();
+
+  void setLastName(java.lang.String _lastName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "MiddleName",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getMiddleName();
+
+  void setMiddleName(java.lang.String _middleName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "HomeAddress",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Address",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  Address
+      getHomeAddress();
+
+      void
+      setHomeAddress(
+          Address _homeAddress);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Home",
+      type = "Edm.GeographyPoint",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  org.apache.olingo.commons.api.edm.geo.Point getHome();
+
+  void setHome(org.apache.olingo.commons.api.edm.geo.Point _home);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Numbers",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> getNumbers();
+
+  void setNumbers(org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> _numbers);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Emails",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> getEmails();
+
+  void setEmails(org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> _emails);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Parent",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Person",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "People",
+      containsTarget = false)
+  Person getParent();
+
+  void setParent(
+      Person _parent);
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(
+        name = "GetHomeAddress",
+        type = OperationType.FUNCTION,
+        isComposable = true,
+        referenceType = HomeAddress.class,
+        returnType = "Microsoft.Test.OData.Services.ODataWCFService.HomeAddress")
+    HomeAddressComposableInvoker
+        getHomeAddress(
+        );
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(
+        name = "ResetAddress",
+        type = OperationType.ACTION,
+        referenceType = Person.class,
+        returnType = "Microsoft.Test.OData.Services.ODataWCFService.Person")
+        org.apache.olingo.ext.proxy.api.StructuredInvoker<Person>
+        resetAddress(
+            @Parameter(name = "addresses", type = "Collection(Microsoft.Test.OData.Services.ODataWCFService.Address)",
+                nullable = false) AddressCollection addresses,
+            @Parameter(name = "index", type = "Edm.Int32", nullable = false) java.lang.Integer index
+        );
+
+  }
+
+  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 = "FirstName",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getFirstNameAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "LastName",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getLastNameAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "MiddleName",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getMiddleNameAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "HomeAddress",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.Address")
+    org.apache.olingo.ext.proxy.api.Annotatable getHomeAddressAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Home",
+        type = "Edm.GeographyPoint")
+    org.apache.olingo.ext.proxy.api.Annotatable getHomeAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Numbers",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getNumbersAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Emails",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getEmailsAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Parent",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.Person")
+    org.apache.olingo.ext.proxy.api.Annotatable getParentAnnotations();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonCollection.java
new file mode 100644
index 0000000..3665b7f
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/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.staticservice.odatawcfservice.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/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonCollectionComposableInvoker.java
new file mode 100644
index 0000000..3e717b2
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/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.staticservice.odatawcfservice.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/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonComposableInvoker.java
new file mode 100644
index 0000000..bd24277
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/PersonComposableInvoker.java
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.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 = "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 = "FirstName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getFirstName();
+
+  void setFirstName(java.lang.String _firstName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "LastName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getLastName();
+
+  void setLastName(java.lang.String _lastName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "MiddleName",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getMiddleName();
+
+  void setMiddleName(java.lang.String _middleName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "HomeAddress",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Address",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  Address
+      getHomeAddress();
+
+      void
+      setHomeAddress(
+          Address _homeAddress);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Home",
+      type = "Edm.GeographyPoint",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  org.apache.olingo.commons.api.edm.geo.Point getHome();
+
+  void setHome(org.apache.olingo.commons.api.edm.geo.Point _home);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Numbers",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> getNumbers();
+
+  void setNumbers(org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> _numbers);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Emails",
+      type = "Edm.String",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> getEmails();
+
+  void setEmails(org.apache.olingo.ext.proxy.api.PrimitiveCollection<java.lang.String> _emails);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Parent",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Person",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "People",
+      containsTarget = false)
+  Person getParent();
+
+  void setParent(
+      Person _parent);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Product.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Product.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Product.java
new file mode 100644
index 0000000..f80f6e0
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/Product.java
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.OperationType;
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.ODataWCFService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "Product",
+    openType = false,
+    hasStream = false,
+    isAbstract = false)
+public interface Product
+    extends org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<Product>, org.apache.olingo.ext.proxy.api.StructuredQuery<Product> {
+
+  @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 = "")
+  java.lang.Integer getProductID();
+
+  void setProductID(java.lang.Integer _productID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name",
+      type = "Edm.String",
+      nullable = false,
+      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 = "QuantityPerUnit",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getQuantityPerUnit();
+
+  void setQuantityPerUnit(java.lang.String _quantityPerUnit);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "UnitPrice",
+      type = "Edm.Single",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Float getUnitPrice();
+
+  void setUnitPrice(java.lang.Float _unitPrice);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "QuantityInStock",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getQuantityInStock();
+
+  void setQuantityInStock(java.lang.Integer _quantityInStock);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Discontinued",
+      type = "Edm.Boolean",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Boolean getDiscontinued();
+
+  void setDiscontinued(java.lang.Boolean _discontinued);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "UserAccess",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.AccessLevel",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  AccessLevel
+      getUserAccess();
+
+      void
+      setUserAccess(
+          AccessLevel _userAccess);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "SkinColor",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Color",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  Color getSkinColor();
+
+      void
+      setSkinColor(
+          Color _skinColor);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "CoverColors",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Color",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+      org.apache.olingo.ext.proxy.api.PrimitiveCollection<Color>
+      getCoverColors();
+
+      void
+      setCoverColors(
+          org.apache.olingo.ext.proxy.api.PrimitiveCollection<Color> _coverColors);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Details",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.ProductDetail",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "ProductDetails",
+      containsTarget = false)
+  ProductDetailCollection
+      getDetails();
+
+      void
+      setDetails(
+          ProductDetailCollection _details);
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(
+        name = "GetProductDetails",
+        type = OperationType.FUNCTION,
+        isComposable = true,
+        referenceType = ProductDetailCollection.class,
+        returnType = "Collection(Microsoft.Test.OData.Services.ODataWCFService.ProductDetail)")
+    ProductDetailCollectionComposableInvoker
+        getProductDetails(
+            @Parameter(name = "count", type = "Edm.Int32", nullable = true) java.lang.Integer count
+        );
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(
+        name = "AddAccessRight",
+        type = OperationType.ACTION,
+        referenceType = AccessLevel.class,
+        returnType = "Microsoft.Test.OData.Services.ODataWCFService.AccessLevel")
+        org.apache.olingo.ext.proxy.api.Invoker<AccessLevel>
+        addAccessRight(
+            @Parameter(name = "accessRight", type = "Microsoft.Test.OData.Services.ODataWCFService.AccessLevel",
+                nullable = true) AccessLevel accessRight
+        );
+
+  }
+
+  Annotations annotations();
+
+  interface Annotations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ProductID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getProductIDAnnotations();
+
+    @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 = "QuantityPerUnit",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getQuantityPerUnitAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "UnitPrice",
+        type = "Edm.Single")
+    org.apache.olingo.ext.proxy.api.Annotatable getUnitPriceAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "QuantityInStock",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getQuantityInStockAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Discontinued",
+        type = "Edm.Boolean")
+    org.apache.olingo.ext.proxy.api.Annotatable getDiscontinuedAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "UserAccess",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.AccessLevel")
+    org.apache.olingo.ext.proxy.api.Annotatable getUserAccessAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "SkinColor",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.Color")
+    org.apache.olingo.ext.proxy.api.Annotatable getSkinColorAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "CoverColors",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.Color")
+    org.apache.olingo.ext.proxy.api.Annotatable getCoverColorsAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Details",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.ProductDetail")
+    org.apache.olingo.ext.proxy.api.Annotatable getDetailsAnnotations();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollection.java
new file mode 100644
index 0000000..346e528
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollection.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+import org.apache.olingo.ext.proxy.api.OperationType;
+import org.apache.olingo.ext.proxy.api.annotations.Parameter;
+
+public interface ProductCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<ProductCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<Product, ProductCollection, ProductCollection> {
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(
+        name = "Discount",
+        type = OperationType.ACTION,
+        referenceType = ProductCollection.class,
+        returnType = "Collection(Microsoft.Test.OData.Services.ODataWCFService.Product)")
+        org.apache.olingo.ext.proxy.api.StructuredCollectionInvoker<ProductCollection>
+        discount(
+            @Parameter(name = "percentage", type = "Edm.Int32", nullable = false) java.lang.Integer percentage
+        );
+
+  }
+
+  Object getAnnotation(Class<? extends AbstractTerm> term);
+
+  Collection<Class<? extends AbstractTerm>> getAnnotationTerms();
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollectionComposableInvoker.java
new file mode 100644
index 0000000..2832885
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductCollectionComposableInvoker.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface ProductCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<ProductCollection, ProductCollection.Operations> {
+
+  @Override
+  ProductCollectionComposableInvoker select(String... select);
+
+  @Override
+  ProductCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductComposableInvoker.java
new file mode 100644
index 0000000..268f564
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductComposableInvoker.java
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface ProductComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<Product, Product.Operations>
+{
+
+  @Override
+  ProductComposableInvoker select(String... select);
+
+  @Override
+  ProductComposableInvoker expand(String... expand);
+
+  @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 = "")
+  java.lang.Integer getProductID();
+
+  void setProductID(java.lang.Integer _productID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Name",
+      type = "Edm.String",
+      nullable = false,
+      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 = "QuantityPerUnit",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getQuantityPerUnit();
+
+  void setQuantityPerUnit(java.lang.String _quantityPerUnit);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "UnitPrice",
+      type = "Edm.Single",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Float getUnitPrice();
+
+  void setUnitPrice(java.lang.Float _unitPrice);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "QuantityInStock",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getQuantityInStock();
+
+  void setQuantityInStock(java.lang.Integer _quantityInStock);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Discontinued",
+      type = "Edm.Boolean",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Boolean getDiscontinued();
+
+  void setDiscontinued(java.lang.Boolean _discontinued);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "UserAccess",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.AccessLevel",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  AccessLevel
+      getUserAccess();
+
+      void
+      setUserAccess(
+          AccessLevel _userAccess);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "SkinColor",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Color",
+      nullable = true,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  Color getSkinColor();
+
+      void
+      setSkinColor(
+          Color _skinColor);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "CoverColors",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Color",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+      org.apache.olingo.ext.proxy.api.PrimitiveCollection<Color>
+      getCoverColors();
+
+      void
+      setCoverColors(
+          org.apache.olingo.ext.proxy.api.PrimitiveCollection<Color> _coverColors);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Details",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.ProductDetail",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "ProductDetails",
+      containsTarget = false)
+  ProductDetailCollection
+      getDetails();
+
+      void
+      setDetails(
+          ProductDetailCollection _details);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetail.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetail.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetail.java
new file mode 100644
index 0000000..d34f68c
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetail.java
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.OperationType;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+import org.apache.olingo.ext.proxy.api.annotations.KeyRef;
+
+@KeyRef(ProductDetailKey.class)
+@org.apache.olingo.ext.proxy.api.annotations.Namespace("Microsoft.Test.OData.Services.ODataWCFService")
+@org.apache.olingo.ext.proxy.api.annotations.EntityType(name = "ProductDetail",
+    openType = false,
+    hasStream = false,
+    isAbstract = false)
+public interface ProductDetail
+    extends org.apache.olingo.ext.proxy.api.Annotatable,
+    org.apache.olingo.ext.proxy.api.EntityType<ProductDetail>,
+    org.apache.olingo.ext.proxy.api.StructuredQuery<ProductDetail> {
+
+  @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 = "")
+  java.lang.Integer getProductID();
+
+  void setProductID(java.lang.Integer _productID);
+
+  @Key
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ProductDetailID",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getProductDetailID();
+
+  void setProductDetailID(java.lang.Integer _productDetailID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ProductName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getProductName();
+
+  void setProductName(java.lang.String _productName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Description",
+      type = "Edm.String",
+      nullable = false,
+      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.NavigationProperty(name = "RelatedProduct",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Product",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "Products",
+      containsTarget = false)
+  Product
+      getRelatedProduct();
+
+      void
+      setRelatedProduct(
+          Product _relatedProduct);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Reviews",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.ProductReview",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "ProductReviews",
+      containsTarget = false)
+  ProductReviewCollection
+      getReviews();
+
+      void
+      setReviews(
+          ProductReviewCollection _reviews);
+
+  Operations operations();
+
+  interface Operations extends org.apache.olingo.ext.proxy.api.Operations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.Operation(
+        name = "GetRelatedProduct",
+        type = OperationType.FUNCTION,
+        isComposable = true,
+        referenceType = Product.class,
+        returnType = "Microsoft.Test.OData.Services.ODataWCFService.Product")
+    ProductComposableInvoker
+        getRelatedProduct(
+        );
+
+  }
+
+  Annotations annotations();
+
+  interface Annotations {
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ProductID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getProductIDAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ProductDetailID",
+        type = "Edm.Int32")
+    org.apache.olingo.ext.proxy.api.Annotatable getProductDetailIDAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "ProductName",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getProductNameAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForProperty(name = "Description",
+        type = "Edm.String")
+    org.apache.olingo.ext.proxy.api.Annotatable getDescriptionAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "RelatedProduct",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.Product")
+    org.apache.olingo.ext.proxy.api.Annotatable getRelatedProductAnnotations();
+
+    @org.apache.olingo.ext.proxy.api.annotations.AnnotationsForNavigationProperty(name = "Reviews",
+        type = "Microsoft.Test.OData.Services.ODataWCFService.ProductReview")
+    org.apache.olingo.ext.proxy.api.Annotatable getReviewsAnnotations();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollection.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollection.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollection.java
new file mode 100644
index 0000000..2bd3fd7
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollection.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import java.util.Collection;
+// CHECKSTYLE:ON (Maven checkstyle)
+
+import org.apache.olingo.ext.proxy.api.AbstractTerm;
+
+public interface ProductDetailCollection
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionQuery<ProductDetailCollection>,
+org.apache.olingo.ext.proxy.api.EntityCollection<ProductDetail, ProductDetailCollection, ProductDetailCollection> {
+
+  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/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollectionComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollectionComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollectionComposableInvoker.java
new file mode 100644
index 0000000..033c9c7
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailCollectionComposableInvoker.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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+
+public interface ProductDetailCollectionComposableInvoker
+    extends
+    org.apache.olingo.ext.proxy.api.StructuredCollectionComposableInvoker<ProductDetailCollection, ProductDetailCollection.Operations> {
+
+  @Override
+  ProductDetailCollectionComposableInvoker select(String... select);
+
+  @Override
+  ProductDetailCollectionComposableInvoker expand(String... expand);
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailComposableInvoker.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailComposableInvoker.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailComposableInvoker.java
new file mode 100644
index 0000000..0045fc9
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailComposableInvoker.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 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.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.Key;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+
+public interface ProductDetailComposableInvoker
+    extends org.apache.olingo.ext.proxy.api.StructuredComposableInvoker<ProductDetail, ProductDetail.Operations>
+{
+
+  @Override
+  ProductDetailComposableInvoker select(String... select);
+
+  @Override
+  ProductDetailComposableInvoker expand(String... expand);
+
+  @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 = "")
+  java.lang.Integer getProductID();
+
+  void setProductID(java.lang.Integer _productID);
+
+  @Key
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ProductDetailID",
+      type = "Edm.Int32",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.Integer getProductDetailID();
+
+  void setProductDetailID(java.lang.Integer _productDetailID);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "ProductName",
+      type = "Edm.String",
+      nullable = false,
+      defaultValue = "",
+      maxLenght = Integer.MAX_VALUE,
+      fixedLenght = false,
+      precision = 0,
+      scale = 0,
+      unicode = true,
+      collation = "",
+      srid = "")
+  java.lang.String getProductName();
+
+  void setProductName(java.lang.String _productName);
+
+  @org.apache.olingo.ext.proxy.api.annotations.Property(name = "Description",
+      type = "Edm.String",
+      nullable = false,
+      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.NavigationProperty(name = "RelatedProduct",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.Product",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "Products",
+      containsTarget = false)
+  Product
+      getRelatedProduct();
+
+      void
+      setRelatedProduct(
+          Product _relatedProduct);
+
+  @org.apache.olingo.ext.proxy.api.annotations.NavigationProperty(name = "Reviews",
+      type = "Microsoft.Test.OData.Services.ODataWCFService.ProductReview",
+      targetSchema = "Microsoft.Test.OData.Services.ODataWCFService",
+      targetContainer = "InMemoryEntities",
+      targetEntitySet = "ProductReviews",
+      containsTarget = false)
+  ProductReviewCollection
+      getReviews();
+
+      void
+      setReviews(
+          ProductReviewCollection _reviews);
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d16d2b9c/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailKey.java
----------------------------------------------------------------------
diff --git a/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailKey.java b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailKey.java
new file mode 100644
index 0000000..c6fd5b4
--- /dev/null
+++ b/fit/src/test/java/org/apache/olingo/fit/proxy/staticservice/odatawcfservice/types/ProductDetailKey.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.olingo.fit.proxy.staticservice.odatawcfservice.types;
+
+// CHECKSTYLE:OFF (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.AbstractEntityKey;
+
+// CHECKSTYLE:ON (Maven checkstyle)
+import org.apache.olingo.ext.proxy.api.annotations.CompoundKeyElement;
+
+@org.apache.olingo.ext.proxy.api.annotations.CompoundKey
+public class ProductDetailKey extends AbstractEntityKey {
+
+  private static final long serialVersionUID = -6268946147639590355L;
+
+  private java.lang.Integer _productID;
+
+  @CompoundKeyElement(name = "ProductID", position = 0)
+  public java.lang.Integer getProductID() {
+    return _productID;
+  }
+
+  public void setProductID(final java.lang.Integer _productID) {
+    this._productID = _productID;
+  }
+
+  private java.lang.Integer _productDetailID;
+
+  @CompoundKeyElement(name = "ProductDetailID", position = 1)
+  public java.lang.Integer getProductDetailID() {
+    return _productDetailID;
+  }
+
+  public void setProductDetailID(final java.lang.Integer _productDetailID) {
+    this._productDetailID = _productDetailID;
+  }
+}